cscg24-guacamole

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

tlh.js (4577B)


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