From 90705cc133f9ce5d3f358fc21729ab34968e7fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Volds=C3=A6ter?= <ole.voldsater@uib.no> Date: Tue, 23 Feb 2021 10:31:04 +0100 Subject: [PATCH] fikser meta#272 --- src/components/DefElement.vue | 3 +- src/utils/helpers.js | 119 +++++++++++++++++++++++++++++++++- 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/src/components/DefElement.vue b/src/components/DefElement.vue index eba99a55..9f314cf2 100644 --- a/src/components/DefElement.vue +++ b/src/components/DefElement.vue @@ -16,6 +16,7 @@ <script> import entities from '../utils/entities.js' +import helpers from '../utils/helpers.js' export default { name: 'DefElement', @@ -53,7 +54,7 @@ export default { else if (item.type_ == 'superscript') return {type: item.type_, html: item.text, tag: 'sup'} else if (item.type_ == 'subscript') return {type: item.type_, html: item.text, 'tag': 'sub'} else if (item.type_ == 'quote_inset') return {type: item.type_, body: item, html: '', tag: 'DefElement', props: {body: item, tag: 'i'}} - else if (item.type_ == 'fraction') return {type: item.type_, html: '', num: item.numerator, denom: item.denominator} + else if (item.type_ == 'fraction') return helpers.fraction(item.numerator, item.denominator) else if (item.id) return {type: item.type_, html: (entities[lang][item.id] || {})['expansion'] || item.id} else return {type: item.type_ || 'plain', html: item} } diff --git a/src/utils/helpers.js b/src/utils/helpers.js index 6c4b48b9..904a82e8 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -71,4 +71,121 @@ var group_list = function(grps, dictionary) { return Array.from(grp_collection).join(' - ') } -export default { group_list} +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 } -- GitLab