Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mojangson

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mojangson

A mojangson parser written in node.js

  • 2.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
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

Package last updated on 03 Jun 2023

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc