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
stdinandstdouttoassets/file/applications/<application_name>/<application_version>/<unit_name>/ - Run
npm run build:schemas:devto generate new regex schemas for dev - Add tests for newly added regex schemas
Usage
- Install dependency (list in
package.jsonar withnpm install):
npm install @exabyte-io/regex
- Import
schema.jsonwith compiled regexes in your code:
import regexesSchema from "@exabyte-io/regex/data/schemas.json"
- Use
regexesSchemaobject to found needed regex based on application and version for example (you can usejson-pointerto 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|