@mat3ra/regex
v2024.4.19-1
Published
Repository housing various regular expressions.
Downloads
1
Readme
regex
Usage
- Install package adding to package.json:
"dependencies": { "@exabyte-io/regex": "2023.9.1" }
Or using npm:
bash
npm i @exabyte-io/[email protected]
Import package:
import regexSchemas from "@exabyte-io/regex/lib/schemas";
Use regex schemas:
const calculationPattern = regexSchemas.espresso["5.8.1"].["pw.x"].calculation; const regex = new RegExp(calculationPattern.regex, calculationPattern.flags.join("));
Development
To run tests:
npm test
To run lint:
npm run lint
To build regex schemas for development:
npm run build:schemas:dev
Add new regex schemas
- Add new yamls for
stdin
andstdout
toassets/file/applications/<application_name>/<application_version>/<unit_name>/
- Run
npm run build:schemas:dev
to generate new regex schemas for dev - Add tests for newly added regex schemas
Usage
- Install dependency (list in
package.json
ar withnpm install
):
npm install @exabyte-io/regex
- Import
schema.json
with compiled regexes in your code:
import regexesSchema from "@exabyte-io/regex/data/schemas.json"
- Use
regexesSchema
object to found needed regex based on application and version for example (you can usejson-pointer
to get needed path):
import pointer from "json-pointer";
const espressoNamelistRegex = pointer.get(
schemas,
"/applications/espresso/5.2.1/pw.x/control/_format/namelist",
);
// _format/namelist contains regex with template string
// available templates for regex should be enumerated in params section
// name of param define template string to replace
// possible values will be enumerated as value of param
// "params":{"BLOCK_NAME":["CONTROL","ELECTRONS","IONS","CELL","SYSTEM"]}
const controlBlockRegex = new RegExp(
espressoNamelistRegex.regex.replace('{{BLOCK_NAME}}', 'CONTROL'),
espressoNamelistRegex.flags.join(""),
);
// getting namelist blocks
const controlBlocksMatch = file.match(controlBlockRegex);
const controlBlock = controlBlocksMatch[0];
const regexObject = pointer.get(
schemas,
"/applications/espresso/5.2.1/pw.x/control/calculation",
);
const regexCalculation = new RegExp(
regexObject.regex,
regexObject.flags.join(""),
);
// getting calculation param value
const calculation = controlBlock.matchAll(regexCalculation);
const [calcluationLine, calculationValue] = Array.from(calculation)[0];
console.log({ calcluationLine, calculationValue })