Package Exports
- mojangson
- mojangson/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mojangson) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
node-mojangson
node-mojangson is a mojangson parser.
Mojangson specification
Mojangson is mojang's variant of json. It is basically json with the following changes :
- array can be indexed (example :
[0:"v1",1:"v2",2:"v3"]) - array and object can have trailing comma (example :
[5,4,3,]and{"a":5,"b":6,}) - there can be string without quote (example :
{mykey:myvalue}) - numbers can be suffixed by b, s, l, f, d, i or the same in upper case (example :
{number:5b}) - mojangson stays a superset of json : every json is a mojangson
Reference https://minecraft.gamepedia.com/Commands#Data_tags
Parser
This parser is build using nearley.
See the grammar and the examples in the test for more information.
Usage
Usage example :
const mojangson = require('mojangson')
const data = mojangson.parse('{mykey:myvalue}')
// print the parsed data
console.log(data)
// print the simplified data
condole.log(mojangson.simplify(data))The provided method mojangson.parse return a javascript object corresponding to the mojangson passed in input.
mojangson.simplify returns a simplified representation : keep only the value to remove one level. This loses the types so you cannot use the resulting representation to write it back.
mojangson.stringify will take a js object with types and values for mojangson and make it into a normalized mojangson string
const mojangson = require('mojangson')
const data = mojangson.stringify({ type: 'list', value: { type: 'string', value: [ 'z1', 'z2' ] } })
console.log(data) // => [z1,z2]Another example, the provided method mojangson.normalize takes a string of mojangson and normalizes it in the shortest way to retain all data. Comparing it to the original will tell you if you have the shortest equivalent to a string of mojangson.
const mojangson = require('mojangson')
const original = '[0:"z1",1:"z2"]'
const data = mojangson.normalize(original)
console.log(data) // => [z1,z2]
const optimized = original === data
console.log(optimized) // => falseHistory
2.0.4
- fix publish
2.0.3
- Fix simplifying of arrays throwing error (@Lianecx)
- Escape new lines in text (@U9G)
2.0.2
- fixes issue where strings starting with a number would be parsed as a number (@U9G)
2.0.1
- fix escaping some chars in mojangson.stringify (@U9G)
- update grammar for unicode escaped strings (@U9G)
- fix parsing of escaped characters (@Majorblake)
2.0.0
- Changes output format to include types (@Karang)
- add simplify function
- Add stringify function to go back to mojangson (@U9G)
1.1.1
- Fix empty string parsing (thanks @IdanHo)
1.1.0
- switch to nearley parser for a better handling for mojangson (thanks @Karang)
1.0.0
- stop printing error
0.2.4
- add support for double and int
0.2.3
- fix release about grammar.js still containing the cli
0.2.2
- disable jison cli to make mojangson compatible with browserify
0.2.1
- fix state conflict due to recent trailing comma fix
0.2.0
- Rename npm package to mojangson
- fix trailing comma in arrays
0.1.1
- better error displaying
0.1
- First release, basic functionality