Skip to content
Snippets Groups Projects
helpers.js 3.92 KiB
Newer Older
Ole Voldsæter's avatar
Ole Voldsæter committed
var mapping = {
Ole Voldsæter's avatar
Ole Voldsæter committed
    "NOUN": "substantiv",
    "VERB": "verb",
    "ADJ": "adjektiv",
    "ADP": "preposisjon",
    "PFX": "prefiks",
    "ADV": "adverb",
    "DET": "determinativ",
    "PROPN": "egennavn",
    "ABBR": "forkortelse",
    "INTJ": "interjeksjon",
    "SYM": "symbol",
    "PRON": "pronomen",
    "CCONJ": "konjunksjon",
    "SCONJ": "subjunksjon",
    "INFM": "infinitivsmerke",
    "COMPPFX": "i sammensetting",
    "Masc": "hankjønn",
    "Fem": "hunkjønn",
    "Neuter": "intetkjønn",
Ole Voldsæter's avatar
Ole Voldsæter committed
    "NOUN": "substantiv",
    "VERB": "verb",
    "ADJ": "adjektiv",
    "ADP": "preposisjon",
    "PFX": "prefiks",
    "ADV": "adverb",
    "DET": "determinativ",
    "PROPN": "eigennamn",
    "ABBR": "forkorting",
    "INTJ": "interjeksjon",
    "SYM": "symbol",
    "PRON": "pronomen",
    "CCONJ": "konjunksjon",
    "SCONJ": "subjunksjon",
    "INFM": "infinitivsmerke",
    "COMPPFX": "i samansetjing",
    "Masc": "hankjønn",
Ole Voldsæter's avatar
Ole Voldsæter committed
    "Neuter": "inkjekjønn",
Ole Voldsæter's avatar
Ole Voldsæter committed
    "Uninfl": "ubøyeleg"
var group_list = function(grps, dictionary) {
Ole Voldsæter's avatar
Ole Voldsæter committed
  var grp_collection = new Set()
Ole Voldsæter's avatar
Ole Voldsæter committed
  var noun_grp_collection = new Set()
Ole Voldsæter's avatar
Ole Voldsæter committed
  grps.forEach(function(lemma){
    lemma.paradigm_info.forEach(function(grp){
Ole Voldsæter's avatar
Ole Voldsæter committed
        if(grp.tags[0] == 'NOUN') {
          noun_grp_collection.add(grp.tags[1])
        }else{
          grp_collection.add(mapping[dictionary][grp.tags[0]])
        }
Ole Voldsæter's avatar
Ole Voldsæter committed
    })
  })
Ole Voldsæter's avatar
Ole Voldsæter committed
    let noun_grp_text = 'substantiv  '
Ole Voldsæter's avatar
Ole Voldsæter committed
    if (noun_grp_collection.size == 3) {
      noun_grp_text += mapping[dictionary]['Masc'] + ', ' + mapping[dictionary]['Fem'] + ' eller ' + mapping[dictionary]['Neuter']
    } else {
      noun_grp_text += Array.from(noun_grp_collection).map(code => mapping[dictionary][code]).sort().join(' eller ')
    }
    grp_collection.add(noun_grp_text)
  return Array.from(grp_collection).join(' - ')
Ole Voldsæter's avatar
Ole Voldsæter committed
var fraction = function(numerator, denominator) {
  var superscript = {
  '0': '',
  '1': '¹',
  '2': '²',
  '3': '³',
  '4': '',
  '5': '',
  '6': '',
  '7': '',
  '8': '',
  '9': '',
  '+': '',
  '-': '',
  '=': '',
  '(': '',
  ')': '',
  'a': '',
  'b': '',
  'c': '',
  'd': '',
  'e': '',
  'f': '',
  'g': '',
  'h': 'ʰ',
  'i': '',
  'j': 'ʲ',
  'k': '',
  'l': 'ˡ',
  'm': '',
  'n': '',
  'o': '',
  'p': '',
  'r': 'ʳ',
  's': 'ˢ',
  't': '',
  'u': '',
  'v': '',
  'w': 'ʷ',
  'x': 'ˣ',
  'y': 'ʸ',
  'z': '',
  ' ': ' '
  }

  var subscript = {
  '0': '',
  '1': '',
  '2': '',
  '3': '',
  '4': '',
  '5': '',
  '6': '',
  '7': '',
  '8': '',
  '9': '',
  '+': '',
  '-': '',
  '=': '',
  '(': '',
  ')': '',
  'a': '',
  'e': '',
  'h': '',
  'i': '',
  'j': '',
  'k': '',
  'l': '',
  'm': '',
  'n': '',
  'o': '',
  'p': '',
  'r': '',
  's': '',
  't': '',
  'u': '',
  'v': '',
  'x': '',
  ' ': ' '
  };

  var fractions = {
  '1/2': '½',
  '1/3': '',
  '2/3': '',
  '1/4': '¼',
  '3/4': '¾',
  '1/5': '',
  '2/5': '',
  '3/5': '',
  '4/5': '',
  '1/6': '',
  '5/6': '',
  '1/7': '',
  '1/8': '',
  '3/8': '',
  '5/8': '',
  '7/8': '',
  '1/9': '',
  '1/10': ''
  };

  let other_fraction = null

  let num_sup = numerator.toString().split('').map(x => superscript[x] || '_').join('')
  let den_sub = denominator.toString().split('').map(x => subscript[x] || '_').join('')

  if (! num_sup.includes('_') && ! den_sub.includes('_')) {
    other_fraction = num_sup + '' +  den_sub
  }

  return fractions[numerator + '/' + denominator] && {type: 'plain', html: fractions[numerator + '/' + denominator] }
      || other_fraction && {type: 'plain', html: other_fraction }
      || {type: 'fraction', html: '', num: numerator, denom: denominator}

}

export default { group_list, fraction }