1.2.4 • Published 8 months ago

@izohek/ndf-parser v1.2.4

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

NDF Parser

Parse an ndf file into a json object.

Parsing

import { NdfParser } from "ndf-parser"

Initialize the parser and run the parse() method to perform the parsing.

try {
    // Initialize the parser
    const parser = new NdfParser(ndfText)
    // Parse
    const results = parser.parse()
} catch (e) { 
    // Parsing errors 
}

The parse() method returns two results, first first a list of parser tokens and the second, the actual parsed results. You almost always want the second index [1] for anything useful.

const results = parser.parse()[1]

Searching parser results

The parser outputs a very verbose structure which can cause a lot of repeated calls to nested attributes and structures. The search function is provided to help track down specific values within the resulting objects.

import { search } from 'ndf-parser';

The search function doesn't accept the full parser output, but instead accepts individual parser objects. If you take the UniteDescriptor.ndf file as an example, you would parse an individual unit object instead of the full list of parser results.

The following code samples and output example are assuming you parse Divisions.ndf and use the first object contained in the results.

// Initialize the parser
const parser = new NdfParser(rawNdfData.toString())
// Get results, not tokens
const parseResults = parser.parse()[1]
// Grab the first parsed object
const firstParserResult = parseResults[0]
// Search for "DivisionIds"
const divisionIdObject = search(data, "DivisionIds")

The search function will return the resulting block(s) with the named object or object attribute.

[
  {
    name: 'DivisionIds',
    value: { value: [Array], ndf: 'map' },
    ndf: 'attribute'
  }
]

The search method can return multiple results if multiple attributes or names match the search query. The parser will only return multiple results at the same "depth" and will not return results from different nesting levels in the data.

For example, if you parse UniteDescriptor.ndf and search a unit object for TModuleSelector, the search function will return a list of all of the TModuleSelector found within the units ModulesDescriptors map.

However, if you search for NilDescriptorIfCadavre you'll only get one result because the parser will find the first one without any similar siblings.

1.2.4

8 months ago

1.2.3

10 months ago

1.2.2

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago

1.2.1

1 year ago

1.0.0

2 years ago