codemirror-lang-spreadsheet v1.3.0
CodeMirror Spreadsheet plugin
Implements spreadsheet functions support for the CodeMirror v6 code editor š
To build this I used the paper "A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets" and XLParser as a basis.
Features
š Support for different idioms āā(and easily extensible to include new ones)
š§® Support for different decimal separators
Installation
npm install codemirror-lang-spreadsheetUsage
First import as shown below:
import {spreadsheet} from "codemirror-lang-spreadsheet";Call the spreadsheet function inside the editor instance. This function expects an options object as an argument. Available options are idiom(string with desired language, eg "en-US") and decimalSeparator (string with decimal separator: "." or ";")
new EditorView({
extensions: [
// ... your other CodeMirror extensions
// ...
spreadsheet({
idiom: "en-US"
decimalSeparator: "."
})
],
parent: document.getElementById("editor")
});š For a complete demo with highlighting, autocomplete and prettier go to: codemirror-app-spreadsheet
Supported idioms š£ļø
Idioms are used for keywords like booleans (TRUE, FALSE) and error tokens (like #REF!, #NAME!, ...).
Currently supported:
- en-US
- pt-BR
It's pretty simple to add support for other idioms. See the contribution section.
Contribution
Contributions are welcome, but for every feature added, tests must be added.
To build:
npm run buildRunning the tests:
npm run testExtending idiom
To add support for a new idiom follow the steps below:
In the tokens.ts file, add the idiom as a new supported type:
TsupportedIdioms = 'en-US' | 'pt-BR'; Still in this file, for each of the i18n object keys, add a value with the respective idiom translation. There is no fallback to a default idiom, so even if a token is the same in another idiom, it has to be repeated.
const i18n = {
BoolToken: {
'en-US': ['TRUE', 'FALSE'],
'pt-BR': ['VERDADEIRO', 'FALSO']
},
RefErrorToken: { // repeated token
'en-US': '#REF!',
'pt-BR': '#REF!'
},
//...
}Now it is necessary to create tests. Create a new folder named after the idiom inside the test/i18n folder. Copy the boolean.txt and errors.txt files from another idiom and adapt them to the new idiom.
This site is a good reference for translations.
When extending support for a new idiom open a PR š
To Do:
- Add fallback to default idiom (en-US) when tokens are the same across idioms. This will reduce the packet size.