diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2022-06-10 17:07:01 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2022-06-10 17:07:01 -0300 |
commit | 531219642b93a5dc236f217d22f024fb2707191f (patch) | |
tree | 644449168c11152546f883bf4122a97fd17d0d16 /src/data | |
parent | 6e430bcdf251fbc8cbcfd4c48a8bbc1bf134120f (diff) |
various sorting improvements across the board
- several bugs introduced during data restructure fixed - a few areas where sorting functions were present but completely ineffective (albeit harmlessly so) fixed - new composite sorting utils are more deterministic by considering multiple factors instead of e.g. only name, only date - component sorting functions can be combined and pay more attention to determinism and only moving items when it's covered by the scope of the component (i.e. they can more readily be composited / used together) - names are normalized in a more particular manner (for alphabetical sorting) - accents are stripped, "ü" sorts as "u" - punctuation is stripped, "dave's" sorts as "daves" - (some) diacritics are expanded, "ff" sorts as "ff" - any sequential whitespace treated as one typical space - whitespace is trimmed from start and end - english prefix "a" / "an" stripped in addition to "the" - alphabetical sorting uses localeCompare and considers numeric strings more naturally, "Homestuck Vol. 10" sorts after "Homestuck Vol. 5"
Diffstat (limited to 'src/data')
-rw-r--r-- | src/data/things.js | 8 | ||||
-rw-r--r-- | src/data/yaml.js | 13 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/data/things.js b/src/data/things.js index daec610c..035879f1 100644 --- a/src/data/things.js +++ b/src/data/things.js @@ -33,7 +33,7 @@ import * as S from './serialize.js'; import { getKebabCase, - sortByArtDate, + sortAlbumsTracksChronologically, } from '../util/wiki-data.js'; import find from '../util/find.js'; @@ -1128,8 +1128,10 @@ ArtTag.propertyDescriptors = { expose: { dependencies: ['albumData', 'trackData'], compute: ({ albumData, trackData, [ArtTag.instance]: artTag }) => ( - sortByArtDate([...albumData, ...trackData] - .filter(thing => thing.artTags?.includes(artTag)))) + sortAlbumsTracksChronologically( + ([...albumData, ...trackData] + .filter(thing => thing.artTags?.includes(artTag))), + {getDate: o => o.coverArtDate})) } } }; diff --git a/src/data/yaml.js b/src/data/yaml.js index 32cf7292..763dfd28 100644 --- a/src/data/yaml.js +++ b/src/data/yaml.js @@ -42,8 +42,9 @@ import { } from '../util/sugar.js'; import { - sortByDate, - sortByName, + sortAlbumsTracksChronologically, + sortAlphabetically, + sortChronologically, } from '../util/wiki-data.js'; import find, { bindFind } from '../util/find.js'; @@ -861,7 +862,7 @@ export const dataSteps = [ processDocument: processNewsEntryDocument, save(newsData) { - sortByDate(newsData); + sortChronologically(newsData); newsData.reverse(); return {newsData}; @@ -876,7 +877,7 @@ export const dataSteps = [ processDocument: processArtTagDocument, save(artTagData) { - artTagData.sort(sortByName); + sortAlphabetically(artTagData); return {artTagData}; } @@ -1108,8 +1109,8 @@ export function linkWikiDataArrays(wikiData) { export function sortWikiDataArrays(wikiData) { Object.assign(wikiData, { - albumData: sortByDate(wikiData.albumData.slice()), - trackData: sortByDate(wikiData.trackData.slice()) + albumData: sortChronologically(wikiData.albumData.slice()), + trackData: sortAlbumsTracksChronologically(wikiData.trackData.slice()), }); // Re-link data arrays, so that every object has the new, sorted versions. |