added shorthands to some common patterns...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2018-09-06 00:21:52 +03:00
parent 5401527969
commit 1094729e1f
2 changed files with 35 additions and 18 deletions

17
diff.js
View File

@ -408,6 +408,9 @@ module.BOOL =
function(obj){ function(obj){
return obj === true || obj === false })() return obj === true || obj === false })()
// shorthand...
var B = module.B = BOOL
// Function pattern... // Function pattern...
// //
@ -421,6 +424,9 @@ module.FUNCTION =
function(obj){ function(obj){
return obj instanceof Function })() return obj instanceof Function })()
// shorthand...
var F = module.F = FUNCTION
// String pattern... // String pattern...
// //
@ -450,6 +456,9 @@ module.STRING =
: true )) }, : true )) },
function(value){ this.value = value }) function(value){ this.value = value })
// shorthand...
var S = module.S = STRING
// Number pattern... // Number pattern...
// //
@ -488,6 +497,9 @@ module.NUMBER =
: true )) }, : true )) },
function(...value){ this.value = value }) function(...value){ this.value = value })
// shorthand...
var N = module.N = NUMBER
// Array pattern... // Array pattern...
// //
@ -530,6 +542,11 @@ module.ARRAY =
}).length == (this.value || []).length) }, }).length == (this.value || []).length) },
function(...value){ this.value = value }) function(...value){ this.value = value })
// shorthand...
// NOTE: yes, ARRAY does not even contain the letter "L" but this is
// tradition ;)
var L = module.L = ARRAY
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Will compare as true to anything but .value... // Will compare as true to anything but .value...

View File

@ -13,7 +13,7 @@
var diff = require('./diff') var diff = require('./diff')
var { var {
ANY, ANY,
NULL, BOOL, NUMBER, STRING, ARRAY, FUNCTION, NULL, BOOL, B, NUMBER, N, STRING, S, ARRAY, L, FUNCTION, F,
OR, AND, NOT, OR, AND, NOT,
AT, OF, IN, AT, OF, IN,
VAR, LIKE, TEST, VAR, LIKE, TEST,
@ -53,16 +53,16 @@ module.SIDE_VALUES = OR(
var CHANGE = var CHANGE =
module.CHANGE = AND( module.CHANGE = AND(
AT('path', ARRAY), AT('path', L),
// XXX optional... // XXX optional...
// ...see DIFF_OBJECT's options for description... // ...see DIFF_OBJECT's options for description...
AT('type', OR(STRING, undefined)), AT('type', OR(S, undefined)),
SIDE_VALUES) SIDE_VALUES)
var DIFF_FLAT = var DIFF_FLAT =
module.DIFF_FLAT = OR( module.DIFF_FLAT = OR(
ARRAY(CHANGE), L(CHANGE),
null) null)
@ -78,13 +78,13 @@ module.BASIC_CHANGE = AND(
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
var OBJECT_ITEM = var OBJECT_ITEM =
module.OBJECT_ITEM = OR( module.OBJECT_ITEM = OR(
[STRING, DIFF_TREE], [S, DIFF_TREE],
[STRING, STRING, DIFF_TREE]) [S, S, DIFF_TREE])
var OBJECT_CHANGE = var OBJECT_CHANGE =
module.OBJECT_CHANGE = AND( module.OBJECT_CHANGE = AND(
AT('type', 'Object'), AT('type', 'Object'),
AT('items', ARRAY(OBJECT_ITEM)), AT('items', L(OBJECT_ITEM)),
// XXX // XXX
AT('item_order', undefined)) AT('item_order', undefined))
@ -93,14 +93,14 @@ module.OBJECT_CHANGE = AND(
var ARRAY_ITEM = var ARRAY_ITEM =
module.ARRAY_ITEM = OR( module.ARRAY_ITEM = OR(
[ANY, ANY, DIFF_TREE], [ANY, ANY, DIFF_TREE],
[[ANY, NUMBER], [ANY, NUMBER], DIFF_TREE]) [[ANY, N], [ANY, N], DIFF_TREE])
var ARRAY_ITEMS = var ARRAY_ITEMS =
module.ARRAY_ITEMS = AND( module.ARRAY_ITEMS = AND(
AT('length', OR( AT('length', OR(
[NUMBER, NUMBER], [N, N],
undefined)), undefined)),
AT('items', ARRAY( AT('items', L(
OR( OR(
ARRAY_ITEM, ARRAY_ITEM,
OBJECT_ITEM))), OBJECT_ITEM))),
@ -138,25 +138,25 @@ var DIFF_OBJECT =
module.DIFF_OBJECT = AND( module.DIFF_OBJECT = AND(
// format metadata... // format metadata...
AT('format', diff.FORMAT_NAME), AT('format', diff.FORMAT_NAME),
//AT('version', STRING(/\d+\.\d+\.\d+/)), //AT('version', S(/\d+\.\d+\.\d+/)),
AT('version', diff.FORMAT_VERSION), AT('version', diff.FORMAT_VERSION),
// instance metadata... // instance metadata...
AT('options', AND( AT('options', AND(
AT('tree_diff', OR(BOOL, NULL)), AT('tree_diff', OR(B, NULL)),
AT('keep_none', OR(BOOL, NULL)), AT('keep_none', OR(B, NULL)),
AT('min_text_length', OR(NUMBER, NULL)), AT('min_text_length', OR(N, NULL)),
AT('no_attributes', OR(BOOL, NULL)), AT('no_attributes', OR(B, NULL)),
AT('NONE', OR(ANY, NULL)), AT('NONE', OR(ANY, NULL)),
AT('EMPTY', OR(ANY, NULL)), AT('EMPTY', OR(ANY, NULL)),
AT('no_length', OR(BOOL, NULL)), AT('no_length', OR(B, NULL)),
AT('cmp', OR(FUNCTION, NULL)) )), AT('cmp', OR(F, NULL)) )),
AT('placeholders', AND( AT('placeholders', AND(
AT('NONE', AT('NONE',
VAR('NONE', ANY)), VAR('NONE', ANY)),
AT('EMPTY', AT('EMPTY',
VAR('EMPTY', ANY)))), VAR('EMPTY', ANY)))),
AT('timestamp', NUMBER), AT('timestamp', N),
// diff... // diff...
OR( OR(