ebml-json
organizes the ebml tags in a json structure
For easier use the Array of Ebml tags, which represents an xml like structure, is parsed to a json tree structure
Example
'start'tagStr:'1a45dfa3'type:'m'dataSize:35tag:172351395name:'EBML'start:0end:40'tag'tagStr:'4286'type:'u'dataSize:1tag:646name:'EBMLVersion'start:5end:9data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1'tag'tagStr:'42f7'type:'u'dataSize:1tag:759name:'EBMLReadVersion'start:9end:13data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1'tag'tagStr:'42f2'type:'u'dataSize:1tag:754name:'EBMLMaxIDLength'start:13end:17data:<Buffer 04>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:4'tag'tagStr:'42f3'type:'u'dataSize:1tag:755name:'EBMLMaxSizeLength'start:17end:21data:<Buffer 08>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:8'tag'tagStr:'4282'type:'s'dataSize:8tag:642name:'DocType'start:21end:32data:<Buffer 6d 61 74 72 6f 73 6b 61>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:'matroska''tag'tagStr:'4287'type:'u'dataSize:1tag:647name:'DocTypeVersion'start:32end:36data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1'tag'tagStr:'4285'type:'u'dataSize:1tag:645name:'DocTypeReadVersion'start:36end:40data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1'end'tag:172351395tagStr:'1a45dfa3'type:'m'name:'EBML'start:0end:40dataSize:35
into
_name:'EBML' _raw:tagStr:'1a45dfa3'type:'m'dataSize:35tag:172351395name:'EBML'start:0end:40 EBMLVersion:tagStr:'4286'type:'u'dataSize:1tag:646name:'EBMLVersion'start:5end:9data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1 EBMLReadVersion:tagStr:'42f7'type:'u'dataSize:1tag:759name:'EBMLReadVersion'start:9end:13data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1 EBMLMaxIDLength:tagStr:'42f2'type:'u'dataSize:1tag:754name:'EBMLMaxIDLength'start:13end:17data:<Buffer 04>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:4 EBMLMaxSizeLength:tagStr:'42f3'type:'u'dataSize:1tag:755name:'EBMLMaxSizeLength'start:17end:21data:<Buffer 08>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:8 DocType:tagStr:'4282'type:'s'dataSize:8tag:642name:'DocType'start:21end:32data:<Buffer 6d 61 74 72 6f 73 6b 61>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:'matroska' DocTypeVersion:tagStr:'4287'type:'u'dataSize:1tag:647name:'DocTypeVersion'start:32end:36data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1 DocTypeReadVersion:tagStr:'4285'type:'u'dataSize:1tag:645name:'DocTypeReadVersion'start:36end:40data:<Buffer 01>discardable:falsekeyframe:falsepayload:nulltrack:undefinedvalue:1 _rawEnd:tag:172351395tagStr:'1a45dfa3'type:'m'name:'EBML'start:0end:40dataSize:35
with the useValues option set to true
_name:'EBML' _raw:tagStr:'1a45dfa3'type:'m'dataSize:35tag:172351395name:'EBML'start:0end:40 EBMLVersion:1 EBMLReadVersion:1 EBMLMaxIDLength:4 EBMLMaxSizeLength:8 DocType:'matroska' DocTypeVersion:1 DocTypeReadVersion:1 _rawEnd:tag:172351395tagStr:'1a45dfa3'type:'m'name:'EBML'start:0end:40dataSize:35
Install
This package is intended to be used with the ebml package!
npm
npm install --save ebml-json
Usage
- as a transform stream
let Ebml=;let EbmlJson=; myStream;
- as a parser
let Ebml=;let EbmlJson=; let roots=EbmlJson;//do stuff with roots here// orlet ebmlStructure=EbmlJson;
Reverse
The json structure can also be reverted into a tag array.
!! It is not possible if you used the "useValues" option !!
let EbmlJson=;let tags=EbmlJson; // can also consume wrapped roots
Api
new ebml-json([options])
params
[options]
{Object}[options.useValues=false]
{Boolean} use value instead of tag contentsreturns
stream.Transform
ebml-json.parse(tags,[options])
params
[tags]
{Array} array of decoded tags[options]
{Object}[options.useValues=false]
{Boolean} use value instead of tag contentsreturns
{Array<EbmlStructure>} array of parsed roots
ebml-json.wrapRoot(roots)
params
roots
{Array<EbmlStructure>} array of parsed rootsreturns
{Object} object containing roots (keys correspond to _name)
ebml-json.taggify(EbmlStructure)
params
EbmlStructure
{Array<EbmlStructure>} array of parsed rootsreturns
{Array} array of ebml tags