reverse-schema
v0.1.0
Published
Parse text lines using ordered regex schema fragments.
Maintainers
Readme
Reverse Schema
Reverse Schema is a small Node.js library for parsing text lines with an ordered array of regular expression fragments. It is designed for cases where a line has a known shape, such as MT940 statement lines, fixed-width data, CSV-like rows, or other text formats.
Install
For local React app development, install this package from its folder:
npm install ../ReverseSchemaUsage
import { parseText } from 'reverse-schema';
const schema = [
{ pattern: ':61:', capture: false },
{ name: 'valueDate', pattern: '\\d{6}' },
{ name: 'entryDate', pattern: '\\d{4}' },
{ name: 'dcMark', pattern: '[DC]' },
{ name: 'amount', pattern: '\\d+,\\d{0,2}' },
{ name: 'transactionType', pattern: '[A-Z0-9]{4}' },
{ name: 'customerReference', pattern: '[^/]+' },
{ pattern: '//', capture: false },
{ name: 'bankReference', pattern: '.+' }
];
const text = ':61:2502180218D12,01NTRFGSLNVSHSUTKWDR//GI2504900007841';
const rows = parseText(schema, text);
console.log(rows);Output:
[
{
valueDate: '250218',
entryDate: '0218',
dcMark: 'D',
amount: '12,01',
transactionType: 'NTRF',
customerReference: 'GSLNVSHSUTKWDR',
bankReference: 'GI2504900007841'
}
]API
parseText(schema, text)
Parses a string line by line. Each line is checked against the full generated regex. Nonmatching lines are ignored. Matching lines return one plain JavaScript object each.
parseLine(schemaOrCompiled, line)
Parses one line and returns a plain JavaScript object, or null if the line does not match.
compileSchema(schema)
Compiles a schema once and returns { regex, source, capturedNames }. Use this when parsing many individual lines with the same schema.
Schema Items
Each schema item supports:
{
name?: string;
pattern: string;
capture?: boolean;
}pattern is a JavaScript regular expression fragment. Patterns are concatenated in order and anchored as ^{patterns}$.
When capture is omitted or true, the item must have a name. Its pattern is wrapped in a named capture group and included in output.
When capture is false, the pattern still participates in matching but is omitted from output. This is useful for tags, delimiters, and other structural text.
All captured values are returned as strings. No date, number, or amount conversion is performed.
