Skip to main content

Mat3ra Regex.

Project description

regex

Usage

  1. 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

  1. Import package:

    import regexSchemas from "@exabyte-io/regex/lib/schemas";
    
  2. 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

  1. Add new yamls for stdin and stdout to assets/file/applications/<application_name>/<application_version>/<unit_name>/
  2. Run npm run build:schemas:dev to generate new regex schemas for dev
  3. Add tests for newly added regex schemas

Usage

  1. Install dependency (list in package.json ar with npm install):
npm install @exabyte-io/regex
  1. Import schema.json with compiled regexes in your code:
import regexesSchema from "@exabyte-io/regex/data/schemas.json"
  1. Use regexesSchema object to found needed regex based on application and version for example (you can use json-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


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)

Uploaded Source

Built Distribution

mat3ra_regex-2024.4.19.post1-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

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

Hashes for mat3ra_regex-2024.4.19.post1.tar.gz
Algorithm Hash digest
SHA256 0b15906dc68ccb834277067ebe663e9290b116f95b2cb55f13eea19906317869
MD5 b1e9e5baa0fabef41e06e4adfffd9720
BLAKE2b-256 8e782f3f30235cb2b33c1613f8957c849ba87b356fe5521c2f8657e234b7994c

See more details on using hashes here.

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

Hashes for mat3ra_regex-2024.4.19.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 cfa1f1920a79a2e3bad61e4d820d12e96ed02804b6d997ba6c49a5664dbc146e
MD5 cc64d71b0101959b138073065301258e
BLAKE2b-256 bf7efa37eb3ccb519cab6b4fba20d3f3050689048e7e735691fc64c4e1a01706

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page