Socket
Socket
Sign inDemoInstall

mojangson

Package Overview
Dependencies
7
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mojangson

A mojangson parser written in node.js


Version published
Maintainers
1
Install size
309 kB
Created

Readme

Source

node-mojangson

NPM version CI

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) // => false

History

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

Keywords

FAQs

Last updated on 03 Jun 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc