npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mojangson

v2.0.4

Published

A mojangson parser written in node.js

Downloads

45,328

Readme

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