@tmlmt/cooklang-parser 2.1.6 → 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.cjs +11 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A typescript library to parse and manipulate [cooklang](https://cooklang.org/) recipes.
|
|
4
4
|
|
|
5
|
-
<picture><img src="https://badges.ws/maintenance/yes/
|
|
5
|
+
<picture><img src="https://badges.ws/maintenance/yes/2026" /></picture>
|
|
6
6
|
<picture><img src="https://badges.ws/npm/dt/@tmlmt/cooklang-parser" /></picture>
|
|
7
7
|
<picture><img src="https://badges.ws/npm/l/@tmlmt/cooklang-parser" /></picture>
|
|
8
8
|
<picture><img src="https://badges.ws/github/release/tmlmt/cooklang-parser" /></picture>
|
package/dist/index.cjs
CHANGED
|
@@ -328,11 +328,11 @@ var i = (() => {
|
|
|
328
328
|
var metadataRegex = d().literal("---").newline().startCaptureGroup().anyCharacter().zeroOrMore().optional().endGroup().newline().literal("---").dotAll().toRegExp();
|
|
329
329
|
var scalingMetaValueRegex = (varName) => d().startAnchor().literal(varName).literal(":").anyOf("\\t ").zeroOrMore().startCaptureGroup().startCaptureGroup().notAnyOf(",\\n").oneOrMore().endGroup().startGroup().literal(",").whitespace().zeroOrMore().startCaptureGroup().anyCharacter().oneOrMore().endGroup().endGroup().optional().endGroup().endAnchor().multiline().toRegExp();
|
|
330
330
|
var nonWordChar = "\\s@#~\\[\\]{(,;:!?";
|
|
331
|
-
var multiwordIngredient = d().literal("@").startNamedGroup("mIngredientModifiers").anyOf("@\\-&?").zeroOrMore().endGroup().optional().startNamedGroup("mIngredientRecipeAnchor").literal("./").endGroup().optional().startNamedGroup("mIngredientName").notAnyOf(nonWordChar).oneOrMore().startGroup().whitespace().oneOrMore().notAnyOf(nonWordChar).oneOrMore().endGroup().oneOrMore().endGroup().positiveLookahead("\\s*(?:\\{[^\\}]*\\}|\\([^)]*\\))").startGroup().literal("{").startNamedGroup("mIngredientQuantityModifier").literal("=").exactly(1).endGroup().optional().startNamedGroup("mIngredientQuantity").notAnyOf("}%").oneOrMore().endGroup().optional().startGroup().literal("%").startNamedGroup("mIngredientUnit").notAnyOf("}").oneOrMore().lazy().endGroup().endGroup().optional().literal("}").endGroup().optional().startGroup().literal("(").startNamedGroup("mIngredientPreparation").notAnyOf(")").oneOrMore().lazy().endGroup().literal(")").endGroup().optional().toRegExp();
|
|
332
|
-
var singleWordIngredient = d().literal("@").startNamedGroup("sIngredientModifiers").anyOf("@\\-&?").zeroOrMore().endGroup().optional().startNamedGroup("sIngredientRecipeAnchor").literal("./").endGroup().optional().startNamedGroup("sIngredientName").notAnyOf(nonWordChar).
|
|
331
|
+
var multiwordIngredient = d().literal("@").startNamedGroup("mIngredientModifiers").anyOf("@\\-&?").zeroOrMore().endGroup().optional().startNamedGroup("mIngredientRecipeAnchor").literal("./").endGroup().optional().startNamedGroup("mIngredientName").notAnyOf(nonWordChar).oneOrMore().startGroup().whitespace().oneOrMore().notAnyOf(nonWordChar).oneOrMore().endGroup().oneOrMore().notAnyOf("\\." + nonWordChar).endGroup().positiveLookahead("\\s*(?:\\{[^\\}]*\\}|\\([^)]*\\))").startGroup().literal("{").startNamedGroup("mIngredientQuantityModifier").literal("=").exactly(1).endGroup().optional().startNamedGroup("mIngredientQuantity").notAnyOf("}%").oneOrMore().endGroup().optional().startGroup().literal("%").startNamedGroup("mIngredientUnit").notAnyOf("}").oneOrMore().lazy().endGroup().endGroup().optional().literal("}").endGroup().optional().startGroup().literal("(").startNamedGroup("mIngredientPreparation").notAnyOf(")").oneOrMore().lazy().endGroup().literal(")").endGroup().optional().toRegExp();
|
|
332
|
+
var singleWordIngredient = d().literal("@").startNamedGroup("sIngredientModifiers").anyOf("@\\-&?").zeroOrMore().endGroup().optional().startNamedGroup("sIngredientRecipeAnchor").literal("./").endGroup().optional().startNamedGroup("sIngredientName").notAnyOf(nonWordChar).zeroOrMore().notAnyOf("\\." + nonWordChar).endGroup().startGroup().literal("{").startNamedGroup("sIngredientQuantityModifier").literal("=").exactly(1).endGroup().optional().startNamedGroup("sIngredientQuantity").notAnyOf("}%").oneOrMore().endGroup().optional().startGroup().literal("%").startNamedGroup("sIngredientUnit").notAnyOf("}").oneOrMore().lazy().endGroup().endGroup().optional().literal("}").endGroup().optional().startGroup().literal("(").startNamedGroup("sIngredientPreparation").notAnyOf(")").oneOrMore().lazy().endGroup().literal(")").endGroup().optional().toRegExp();
|
|
333
333
|
var ingredientAliasRegex = d().startAnchor().startNamedGroup("ingredientListName").notAnyOf("|").oneOrMore().endGroup().literal("|").startNamedGroup("ingredientDisplayName").notAnyOf("|").oneOrMore().endGroup().endAnchor().toRegExp();
|
|
334
|
-
var multiwordCookware = d().literal("#").startNamedGroup("mCookwareModifiers").anyOf("\\-&?").zeroOrMore().endGroup().startNamedGroup("mCookwareName").notAnyOf(nonWordChar).oneOrMore().startGroup().whitespace().oneOrMore().notAnyOf(nonWordChar).oneOrMore().endGroup().oneOrMore().endGroup().positiveLookahead("\\s*(?:\\{[^\\}]*\\})").literal("{").startNamedGroup("mCookwareQuantity").anyCharacter().zeroOrMore().lazy().endGroup().literal("}").toRegExp();
|
|
335
|
-
var singleWordCookware = d().literal("#").startNamedGroup("sCookwareModifiers").anyOf("\\-&?").zeroOrMore().endGroup().startNamedGroup("sCookwareName").notAnyOf(nonWordChar).
|
|
334
|
+
var multiwordCookware = d().literal("#").startNamedGroup("mCookwareModifiers").anyOf("\\-&?").zeroOrMore().endGroup().startNamedGroup("mCookwareName").notAnyOf(nonWordChar).oneOrMore().startGroup().whitespace().oneOrMore().notAnyOf(nonWordChar).oneOrMore().endGroup().oneOrMore().notAnyOf("\\." + nonWordChar).endGroup().positiveLookahead("\\s*(?:\\{[^\\}]*\\})").literal("{").startNamedGroup("mCookwareQuantity").anyCharacter().zeroOrMore().lazy().endGroup().literal("}").toRegExp();
|
|
335
|
+
var singleWordCookware = d().literal("#").startNamedGroup("sCookwareModifiers").anyOf("\\-&?").zeroOrMore().endGroup().startNamedGroup("sCookwareName").notAnyOf(nonWordChar).zeroOrMore().notAnyOf("\\." + nonWordChar).endGroup().startGroup().literal("{").startNamedGroup("sCookwareQuantity").anyCharacter().zeroOrMore().lazy().endGroup().literal("}").endGroup().optional().toRegExp();
|
|
336
336
|
var timer = d().literal("~").startNamedGroup("timerName").anyCharacter().zeroOrMore().lazy().endGroup().literal("{").startNamedGroup("timerQuantity").anyCharacter().oneOrMore().lazy().endGroup().startGroup().literal("%").startNamedGroup("timerUnit").anyCharacter().oneOrMore().lazy().endGroup().endGroup().optional().literal("}").toRegExp();
|
|
337
337
|
var tokensRegex = new RegExp(
|
|
338
338
|
[
|
|
@@ -345,7 +345,7 @@ var tokensRegex = new RegExp(
|
|
|
345
345
|
"gu"
|
|
346
346
|
);
|
|
347
347
|
var commentRegex = d().literal("--").anyCharacter().zeroOrMore().global().toRegExp();
|
|
348
|
-
var blockCommentRegex = d().
|
|
348
|
+
var blockCommentRegex = d().literal("[-").anyCharacter().zeroOrMore().lazy().literal("-]").whitespace().zeroOrMore().global().toRegExp();
|
|
349
349
|
var shoppingListRegex = d().literal("[").startNamedGroup("name").anyCharacter().oneOrMore().endGroup().literal("]").newline().startNamedGroup("items").anyCharacter().zeroOrMore().lazy().endGroup().startGroup().newline().newline().or().endAnchor().endGroup().global().toRegExp();
|
|
350
350
|
var rangeRegex = d().startAnchor().digit().oneOrMore().startGroup().anyOf(".,/").exactly(1).digit().oneOrMore().endGroup().optional().literal("-").digit().oneOrMore().startGroup().anyOf(".,/").exactly(1).digit().oneOrMore().endGroup().optional().endAnchor().toRegExp();
|
|
351
351
|
var numberLikeRegex = d().startAnchor().digit().oneOrMore().startGroup().anyOf(".,/").exactly(1).digit().oneOrMore().endGroup().optional().endAnchor().toRegExp();
|
|
@@ -972,12 +972,12 @@ var Recipe = class _Recipe {
|
|
|
972
972
|
flushPendingItems(section, items);
|
|
973
973
|
note = flushPendingNote(section, note);
|
|
974
974
|
if (this.sections.length === 0 && section.isBlank()) {
|
|
975
|
-
section.name = line.
|
|
975
|
+
section.name = line.replace(/^=+|=+$/g, "").trim();
|
|
976
976
|
} else {
|
|
977
977
|
if (!section.isBlank()) {
|
|
978
978
|
this.sections.push(section);
|
|
979
979
|
}
|
|
980
|
-
section = new Section(line.
|
|
980
|
+
section = new Section(line.replace(/^=+|=+$/g, "").trim());
|
|
981
981
|
}
|
|
982
982
|
blankLineBefore = true;
|
|
983
983
|
inNote = false;
|
|
@@ -1137,9 +1137,9 @@ var Recipe = class _Recipe {
|
|
|
1137
1137
|
* @throws `Error` if the recipe does not contains an initial {@link Recipe.servings | servings} value
|
|
1138
1138
|
*/
|
|
1139
1139
|
scaleTo(newServings) {
|
|
1140
|
-
|
|
1140
|
+
let originalServings = this.getServings();
|
|
1141
1141
|
if (originalServings === void 0 || originalServings === 0) {
|
|
1142
|
-
|
|
1142
|
+
originalServings = 1;
|
|
1143
1143
|
}
|
|
1144
1144
|
const factor = (0, import_big2.default)(newServings).div(originalServings);
|
|
1145
1145
|
return this.scaleBy(factor);
|
|
@@ -1152,9 +1152,9 @@ var Recipe = class _Recipe {
|
|
|
1152
1152
|
*/
|
|
1153
1153
|
scaleBy(factor) {
|
|
1154
1154
|
const newRecipe = this.clone();
|
|
1155
|
-
|
|
1155
|
+
let originalServings = newRecipe.getServings();
|
|
1156
1156
|
if (originalServings === void 0 || originalServings === 0) {
|
|
1157
|
-
|
|
1157
|
+
originalServings = 1;
|
|
1158
1158
|
}
|
|
1159
1159
|
newRecipe.ingredients = newRecipe.ingredients.map((ingredient) => {
|
|
1160
1160
|
if (ingredient.quantityParts) {
|