Skip to content

Use json extension on mathmaps files #2403

Closed
@ggrossetie

Description

@ggrossetie

Is your feature request related to a problem? Please describe.

Currently, the files in the mathmaps directory are using the .js extension but they are really .json files. For instance:

sre/mathmaps/es.js

{
"es/functions/algebra.js": 
[{"locale":"es"},{"key":"deg","names":["deg"],"mappings":{"default":{"default":"grados"}},"category":"Algebra"},{"key":"det","names":["det"],"mappings":{"default":{"default":"determinante"}},"category":"Algebra"},{"key":"dim","names":["dim"],"mappings":{"default":{"default":"dimensión"}},"category":"Algebra"},{"key":"hom","names":["hom","Hom"],"mappings":{"default":{"default":"homomorfismo"}},"category":"Algebra"},{"key":"ker","names":["ker"],"mappings":{"default":{"default":"kernel"}},"category":"Algebra"},{"key":"Tr","names":["Tr","tr"],"mappings":{"default":{"default":"traza"}},"category":"Algebra"}]
,
"es/units/weight.js": 
[{"locale":"es"},{"key":"lb","names":["lb","lb."],"mappings":{"default":{"default":"libra"}},"category":"weight"},{"key":"LT","names":["LT","L.T."],"mappings":{"default":{"default":"libras imperiales"}},"category":"weight"},{"key":"oz","names":["oz","oz."],"mappings":{"default":{"default":"onza"}},"category":"weight"},{"key":"µg","names":["µg","mcg"],"mappings":{"default":{"default":"microgramo"}},"category":"weight"},{"key":"gr","names":["g","gr"],"mappings":{"default":{"default":"gramo"}},"category":"weight"},{"key":"kg","names":["kg"],"mappings":{"default":{"default":"kilogramo"}},"category":"weight"},{"key":"mg","names":["mg"],"mappings":{"default":{"default":"miligramo"}},"category":"weight"},{"key":"t","names":["t","T"],"mappings":{"default":{"default":"tonelada"}},"category":"weight"}]
}

Per say it's not really an issue but some linter/parser (more specifically the Firefox Add-ons linter: https://github.com/mozilla/addons-linter) will parse these "JavaScript" files and fail:

Code              Message                   Description                                                                                 File                                          Line   Column
JS_SYNTAX_ERROR   JavaScript syntax error   There is a JavaScript syntax error in your code; validation cannot continue on this file.   vendor/MathJax-3.0.5/sre/mathmaps/nemeth.js   2      30    
JS_SYNTAX_ERROR   JavaScript syntax error   There is a JavaScript syntax error in your code; validation cannot continue on this file.   vendor/MathJax-3.0.5/sre/mathmaps/fr.js       2      26    
JS_SYNTAX_ERROR   JavaScript syntax error   There is a JavaScript syntax error in your code; validation cannot continue on this file.   vendor/MathJax-3.0.5/sre/mathmaps/es.js       2      26    
JS_SYNTAX_ERROR   JavaScript syntax error   There is a JavaScript syntax error in your code; validation cannot continue on this file.   vendor/MathJax-3.0.5/sre/mathmaps/en.js       2      26 

In other words, if you are embedding MathJax 3.0.5 in a Firefox Add-on, you cannot publish your extension anymore.
The linter was not complaining with MathJax 3.0.1 because the structure and the files content changed.
In MathJax 3.0.1, each files contain a single Array on a single line:

sre/mathmaps/es/functions/algebra.js

[{"locale":"es"},{"key":"deg","names":["deg"],"mappings":{"default":{"default":"grados"}},"category":"Algebra"},{"key":"det","names":["det"],"mappings":{"default":{"default":"determinante"}},"category":"Algebra"},{"key":"dim","names":["dim"],"mappings":{"default":{"default":"dimensión"}},"category":"Algebra"},{"key":"hom","names":["hom","Hom"],"mappings":{"default":{"default":"homomorfismo"}},"category":"Algebra"},{"key":"ker","names":["ker"],"mappings":{"default":{"default":"kernel"}},"category":"Algebra"},{"key":"Tr","names":["Tr","tr"],"mappings":{"default":{"default":"traza"}},"category":"Algebra"}]

Describe the solution you'd like

I think the files should use the .json file extension instead of .js.

Describe alternatives you've considered

I guess we could also keep the .js file extension but declare a variable so linter and JS parser won't fail:

sre/mathmaps/es.js

var MATHMAPS_ES = {
"es/functions/algebra.js": 
[{"locale":"es"},{"key":"deg","names":["deg"],"mappings":{"default":{"default":"grados"}},"category":"Algebra"},{"key":"det","names":["det"],"mappings":{"default":{"default":"determinante"}},"category":"Algebra"},{"key":"dim","names":["dim"],"mappings":{"default":{"default":"dimensión"}},"category":"Algebra"},{"key":"hom","names":["hom","Hom"],"mappings":{"default":{"default":"homomorfismo"}},"category":"Algebra"},{"key":"ker","names":["ker"],"mappings":{"default":{"default":"kernel"}},"category":"Algebra"},{"key":"Tr","names":["Tr","tr"],"mappings":{"default":{"default":"traza"}},"category":"Algebra"}]
,
"es/units/weight.js": 
[{"locale":"es"},{"key":"lb","names":["lb","lb."],"mappings":{"default":{"default":"libra"}},"category":"weight"},{"key":"LT","names":["LT","L.T."],"mappings":{"default":{"default":"libras imperiales"}},"category":"weight"},{"key":"oz","names":["oz","oz."],"mappings":{"default":{"default":"onza"}},"category":"weight"},{"key":"µg","names":["µg","mcg"],"mappings":{"default":{"default":"microgramo"}},"category":"weight"},{"key":"gr","names":["g","gr"],"mappings":{"default":{"default":"gramo"}},"category":"weight"},{"key":"kg","names":["kg"],"mappings":{"default":{"default":"kilogramo"}},"category":"weight"},{"key":"mg","names":["mg"],"mappings":{"default":{"default":"miligramo"}},"category":"weight"},{"key":"t","names":["t","T"],"mappings":{"default":{"default":"tonelada"}},"category":"weight"}]
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions