wmap-parser
v1.0.1
Published
Parser for wmap formatted Wardley Map files.
Maintainers
Readme
wmap-parser-js
A pure-javascript parser for wmap formatted Wardley Map files.
Features
- No dependencies.
- Pure JavaScript, browser and runtime friendly.
- Free software.
- Reasonably fast.
Installation
Install with your favorite package manager.
pnpm add wmap-parseryarn add wmap-parsernpm install wmap-parserUsage
import { parse } from "wmap-parser";
const wmapSource = `
[I] 0.25
[II] 0.5
[III] 0.75
[IV] 1.0
Tea (0.9, 0.5) [Circle]
Cup (0.8, 0.4)
Hot Water (0.6, 0.2)
Tea -> Cup
Cup -> Hot Water
[Note] (0.5, 0.5) Supply chain for tea
[Group] Tea, Cup
[Inertia] Cup
[Evolution] Tea + 0.1
`;
const map = parse(wmapSource);
console.log(map.components);
// [
// { label: 'Tea', coordinates: [0.9, 0.5], shape: 'circle' },
// { label: 'Cup', coordinates: [0.8, 0.4], shape: 'circle' },
// ...
// ]
console.log(map.dependencies);
// [
// { from: 'Tea', to: 'Cup', isDirected: true },
// ...
// ]API
parse(source: string): Map
Parses a wmap formatted string and returns a Map object.
Parameters:
source(string): The wmap source code to parse
Returns:
Promise<Map>: A promise that resolves to a Map object
For mor comprehensive type definitions, check the JSDoc comments inside.
Format Specification
See The map website for more information on the format.
Reasonably Fast
Benchmarked on an M1 Pro mac. A map with around 120 entities parses in 16µs. While a larger map with slightly under 2000 entities does so in 447µs.
You can run the benchmarks by using:
make benchmarkDevelopment
This project uses a Makefile to run all commands. This is to keep the commands uniform with the other wmap-parser projects.
Running Tests
make testOr to see coverage
make coverageSee Also
- wmap specification - Formal grammar
- wmap-parser-rust - Rust wmap-parser
- wmap-parser-c - ANSI C wmap-parser
- wmap-parser-swift - Swift wmap-parser
- Wardley Maps - Learn about Wardley Mapping
