cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

tlh.js (3779B)


      1//! moment.js locale configuration
      2//! locale : Klingon [tlh]
      3//! author : Dominika Kruk : https://github.com/amaranthrose
      4
      5import moment from '../moment';
      6
      7var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
      8
      9function translateFuture(output) {
     10    var time = output;
     11    time =
     12        output.indexOf('jaj') !== -1
     13            ? time.slice(0, -3) + 'leS'
     14            : output.indexOf('jar') !== -1
     15              ? time.slice(0, -3) + 'waQ'
     16              : output.indexOf('DIS') !== -1
     17                ? time.slice(0, -3) + 'nem'
     18                : time + ' pIq';
     19    return time;
     20}
     21
     22function translatePast(output) {
     23    var time = output;
     24    time =
     25        output.indexOf('jaj') !== -1
     26            ? time.slice(0, -3) + 'Hu’'
     27            : output.indexOf('jar') !== -1
     28              ? time.slice(0, -3) + 'wen'
     29              : output.indexOf('DIS') !== -1
     30                ? time.slice(0, -3) + 'ben'
     31                : time + ' ret';
     32    return time;
     33}
     34
     35function translate(number, withoutSuffix, string, isFuture) {
     36    var numberNoun = numberAsNoun(number);
     37    switch (string) {
     38        case 'ss':
     39            return numberNoun + ' lup';
     40        case 'mm':
     41            return numberNoun + ' tup';
     42        case 'hh':
     43            return numberNoun + ' rep';
     44        case 'dd':
     45            return numberNoun + ' jaj';
     46        case 'MM':
     47            return numberNoun + ' jar';
     48        case 'yy':
     49            return numberNoun + ' DIS';
     50    }
     51}
     52
     53function numberAsNoun(number) {
     54    var hundred = Math.floor((number % 1000) / 100),
     55        ten = Math.floor((number % 100) / 10),
     56        one = number % 10,
     57        word = '';
     58    if (hundred > 0) {
     59        word += numbersNouns[hundred] + 'vatlh';
     60    }
     61    if (ten > 0) {
     62        word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
     63    }
     64    if (one > 0) {
     65        word += (word !== '' ? ' ' : '') + numbersNouns[one];
     66    }
     67    return word === '' ? 'pagh' : word;
     68}
     69
     70export default moment.defineLocale('tlh', {
     71    months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
     72        '_'
     73    ),
     74    monthsShort:
     75        'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
     76            '_'
     77        ),
     78    monthsParseExact: true,
     79    weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
     80        '_'
     81    ),
     82    weekdaysShort:
     83        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
     84    weekdaysMin:
     85        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
     86    longDateFormat: {
     87        LT: 'HH:mm',
     88        LTS: 'HH:mm:ss',
     89        L: 'DD.MM.YYYY',
     90        LL: 'D MMMM YYYY',
     91        LLL: 'D MMMM YYYY HH:mm',
     92        LLLL: 'dddd, D MMMM YYYY HH:mm',
     93    },
     94    calendar: {
     95        sameDay: '[DaHjaj] LT',
     96        nextDay: '[wa’leS] LT',
     97        nextWeek: 'LLL',
     98        lastDay: '[wa’Hu’] LT',
     99        lastWeek: 'LLL',
    100        sameElse: 'L',
    101    },
    102    relativeTime: {
    103        future: translateFuture,
    104        past: translatePast,
    105        s: 'puS lup',
    106        ss: translate,
    107        m: 'wa’ tup',
    108        mm: translate,
    109        h: 'wa’ rep',
    110        hh: translate,
    111        d: 'wa’ jaj',
    112        dd: translate,
    113        M: 'wa’ jar',
    114        MM: translate,
    115        y: 'wa’ DIS',
    116        yy: translate,
    117    },
    118    dayOfMonthOrdinalParse: /\d{1,2}\./,
    119    ordinal: '%d.',
    120    week: {
    121        dow: 1, // Monday is the first day of the week.
    122        doy: 4, // The week that contains Jan 4th is the first week of the year.
    123    },
    124});