Mat3ra Regex.
Project description
regex
Usage
- Install package adding to package.json:
"dependencies": { "@exabyte-io/regex": "2023.9.1" }
Or using npm:
bash npm i @exabyte-io/regex@2023.9.1
-
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 })
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mat3ra_regex-2024.4.19.post1.tar.gz
(100.2 kB
view details)
Built Distribution
File details
Details for the file mat3ra_regex-2024.4.19.post1.tar.gz
.
File metadata
- Download URL: mat3ra_regex-2024.4.19.post1.tar.gz
- Upload date:
- Size: 100.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/7.1.0 pkginfo/1.10.0 requests/2.31.0 requests-toolbelt/1.0.0 tqdm/4.66.2 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b15906dc68ccb834277067ebe663e9290b116f95b2cb55f13eea19906317869 |
|
MD5 | b1e9e5baa0fabef41e06e4adfffd9720 |
|
BLAKE2b-256 | 8e782f3f30235cb2b33c1613f8957c849ba87b356fe5521c2f8657e234b7994c |
File details
Details for the file mat3ra_regex-2024.4.19.post1-py3-none-any.whl
.
File metadata
- Download URL: mat3ra_regex-2024.4.19.post1-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/7.1.0 pkginfo/1.10.0 requests/2.31.0 requests-toolbelt/1.0.0 tqdm/4.66.2 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cfa1f1920a79a2e3bad61e4d820d12e96ed02804b6d997ba6c49a5664dbc146e |
|
MD5 | cc64d71b0101959b138073065301258e |
|
BLAKE2b-256 | bf7efa37eb3ccb519cab6b4fba20d3f3050689048e7e735691fc64c4e1a01706 |