New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

json-dsl

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-dsl

easily create dsl's from json by evaluating json keys and values, json decode on steroids

  • 1.0.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Generate your own minilanguages fast using json as a startingpoint. No parsetrees, no lexical analyzers, just plain json.

Usage

$ npm install json-dsl

in your code

jdsl = require('json-dsl').parse
output = jdsl( yourjson )

basics: xml

By default nested json is converted into xml

{
  "div": {
    "div": {
      "div": "foo"
    }
  }
}

gets converted into

<div><div><div>foo</div></div></div>

customize key evaluation

lets evaluate the keys in a different way:

jsondsl = require('json-dsl')
jsondsl.parseKey = function(k) {
  return k + "[%s]";
};
output = jdsl( yourjson )

output:

div[div[div[foo]]]

customize value evaluation

lets take the previous example and lets add parseValue

data = { foo: "bar" }
jsondsl.parseValue = function(v,data) {
  return data[v]
}
output = jdsl( yourjson, data )

output:

div[div[div[bar]]]

example: html template language

NOTE: the dsl below is a stripped down version of the brown template engine, a hyperminimalistic template dsl which borrows from emmet and mustache.

setup dsl:

var jdsl = require('json-dsl');
var zen = require('zen-coding');

jdsl.parseKey = function(k) {
  return zen(k + '>{%s}');
};

jdsl.parseValue = function(v, data) {
  return data[v];
};

lets test it:

var json = {
  'div#foo.flop>fieldset>div>ul': {
    'li.one>a[href="/"]': 'one',
    'li.two>a[href="/"]': 'two'
  }
};

var data = {
  'one': 'hello',
  'two': 'world'
};

console.log(JSON.stringify(json, null, 2));
console.log(jdsl.parse(json, data));

outputs:

<div id="foo" class="flop"><fieldset><div><ul><li class="one"><a href="/">hello</a></li><li class="two"><a href="/">world</a></li></ul></div></fieldset></div>

Keywords

FAQs

Package last updated on 28 Oct 2015

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