
Company News
/Security News
Socket Selected for OpenAI's Cybersecurity Grant Program
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.
compromise-strict
Advanced tools
npm install compromise-strict
The compromise match syntax is a custom language for matching and querying tags and metadata in a document.
This plugin is an experimental re-write of this syntax using a formal parser (chevrotrain) and a strict spec.
This may be useful for some purposes, where recursive queries, or error-reporting is required.
This library implements a subset of the match-syntax, and has different edge-cases.
It does add 135kb to filesize, so is not meant as a replacement of the default match method.
This library can be used to generate rail-road diagrams of match queries, or to test them for syntax errors. Pre-compiling matches may result in small, but noticable performance improvements over the native .match().
import nlp from "compromise";
import plugin from "compromise-strict";
nlp.extend(plugin);
let doc = nlp("hello world")
.strictMatch("(?P<greeting>hi|hello|good morning) #Noun")
.groups("greeting");
console.log(doc.text());
commonjs:
const nlp = require("compromise");
nlp.extend(require("compromise-strict"));
let doc = nlp("Good morning world")
.strictMatch("(?P<greeting>hi|hello|good morning) #Noun")
.groups("greeting");
console.log(doc.text());
strict has the ability to pre-compile a match statement into a parsed format, which may improve performace of the match query. This plugin automatically adds this as a helper-method on the main nlp constructor.
// ... rest from usage above
const m = nlp.preCompile("(?P<greeting>hi|hello|good morning) #Noun");
let doc = nlp("hello world").strictMatch(m).groups("greeting");
console.log(doc.text());
^ - start of string. - match any word#Noun - part of speech / tagshello - just the word
\#Noun matches the word #Noun(...) - match groups, will also capture which saves group
content, values of ... will be matched.
(value0|value1|value2 value3) - matches either value statements in
group.(?P<name>...) - saves group which can later be accessed by name(?:...) - don't save group's matched content(?=...) - does not consume, asserts that group matches ahead(?!...) - does not consume, opposite of positive lookaheadHi+
+ - matches one or more occurances of value* - matches zero or more occurances of value? - matches zer or one occurance of value+?, *?, ?? match as little as possible while
still maintining a match.$ - end of string
Chevrotrain has the neat ability to generate diagrams to explain the match lookup. You can see an example of this working in ./lib/gen_diagram.js
GPL-3
FAQs
Formal parser for the compromise match syntax
We found that compromise-strict demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.