Skip to content

drom/onml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ONML

NPM version Actions Status

jsonml.org compatible tool set.

Use

Node.js

npm i onml --save
var onml = require('onml');

API

onml.parse() --- onml.p()

The onml.parse() method parses a XML/HTML/SVG string and returns a JavaScript value.

var obj = onml.parse('<text a="5">so me</text>');
console.log(obj);
-->
["text", {a: "5"}, "so me"]

onml.stringify() --- onml.s()

The onml.stringify(array, [indentation]) method converts a JavaScript value to a XML/HTML/SVG string.

var str = onml.stringify(['text', {a: 55}, 'so me'], 2);
console.log(str);
-->
<text a="55">
  so me
</text>

onml.traverse() --- onml.t()

JSONML object traversal tool. See test/traverse.js for more details.

onml.traverse(obj, {
    enter: function (node, parent) {
        ...
    },
    leave: function (node, parent) {
        ...
    }
});

Inside enter and leave functions:

node and parent objects have the following attributes:

  • .name -- tag name
  • .attr -- attributes object
  • .full -- full node array

this will hold additional methods:

  • this.name(string) -- to change the node tag
  • this.skip() -- to skip subtree based on the current node
  • this.remove() -- to remove current node
  • this.replace(array) -- to replace current node
// count divs on enter
var count = 0;
onml.traverse(
    ['b',
        ['div', {a: true},
            ['span',
                'div',
                ['div',
                    ['div', {},
                        ['div', {a: true}]
                    ]
                ],
                ['div', {},
                    ['div']
                ]
            ]
        ]
    ],
    {
        enter: function (node) {
            if (node.name === 'div') {
                count++;
            }
        }
    }
);
console.log(count);
-->
6

Testing

npm test

License

MIT LICENSE.

About

Object Notation for Markup Language

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published