From 1094729e1ffba8ae7816654dff7406a05aed88a3 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 6 Sep 2018 00:21:52 +0300 Subject: [PATCH] added shorthands to some common patterns... Signed-off-by: Alex A. Naanou --- diff.js | 17 +++++++++++++++++ format.js | 36 ++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/diff.js b/diff.js index d6940d5..9dd367b 100644 --- a/diff.js +++ b/diff.js @@ -408,6 +408,9 @@ module.BOOL = function(obj){ return obj === true || obj === false })() +// shorthand... +var B = module.B = BOOL + // Function pattern... // @@ -421,6 +424,9 @@ module.FUNCTION = function(obj){ return obj instanceof Function })() +// shorthand... +var F = module.F = FUNCTION + // String pattern... // @@ -450,6 +456,9 @@ module.STRING = : true )) }, function(value){ this.value = value }) +// shorthand... +var S = module.S = STRING + // Number pattern... // @@ -488,6 +497,9 @@ module.NUMBER = : true )) }, function(...value){ this.value = value }) +// shorthand... +var N = module.N = NUMBER + // Array pattern... // @@ -530,6 +542,11 @@ module.ARRAY = }).length == (this.value || []).length) }, 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... diff --git a/format.js b/format.js index 109cca8..ccedf8a 100644 --- a/format.js +++ b/format.js @@ -13,7 +13,7 @@ var diff = require('./diff') var { ANY, - NULL, BOOL, NUMBER, STRING, ARRAY, FUNCTION, + NULL, BOOL, B, NUMBER, N, STRING, S, ARRAY, L, FUNCTION, F, OR, AND, NOT, AT, OF, IN, VAR, LIKE, TEST, @@ -53,16 +53,16 @@ module.SIDE_VALUES = OR( var CHANGE = module.CHANGE = AND( - AT('path', ARRAY), + AT('path', L), // XXX optional... // ...see DIFF_OBJECT's options for description... - AT('type', OR(STRING, undefined)), + AT('type', OR(S, undefined)), SIDE_VALUES) var DIFF_FLAT = module.DIFF_FLAT = OR( - ARRAY(CHANGE), + L(CHANGE), null) @@ -78,13 +78,13 @@ module.BASIC_CHANGE = AND( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var OBJECT_ITEM = module.OBJECT_ITEM = OR( - [STRING, DIFF_TREE], - [STRING, STRING, DIFF_TREE]) + [S, DIFF_TREE], + [S, S, DIFF_TREE]) var OBJECT_CHANGE = module.OBJECT_CHANGE = AND( AT('type', 'Object'), - AT('items', ARRAY(OBJECT_ITEM)), + AT('items', L(OBJECT_ITEM)), // XXX AT('item_order', undefined)) @@ -93,14 +93,14 @@ module.OBJECT_CHANGE = AND( var ARRAY_ITEM = module.ARRAY_ITEM = OR( [ANY, ANY, DIFF_TREE], - [[ANY, NUMBER], [ANY, NUMBER], DIFF_TREE]) + [[ANY, N], [ANY, N], DIFF_TREE]) var ARRAY_ITEMS = module.ARRAY_ITEMS = AND( AT('length', OR( - [NUMBER, NUMBER], + [N, N], undefined)), - AT('items', ARRAY( + AT('items', L( OR( ARRAY_ITEM, OBJECT_ITEM))), @@ -138,25 +138,25 @@ var DIFF_OBJECT = module.DIFF_OBJECT = AND( // format metadata... AT('format', diff.FORMAT_NAME), - //AT('version', STRING(/\d+\.\d+\.\d+/)), + //AT('version', S(/\d+\.\d+\.\d+/)), AT('version', diff.FORMAT_VERSION), // instance metadata... AT('options', AND( - AT('tree_diff', OR(BOOL, NULL)), - AT('keep_none', OR(BOOL, NULL)), - AT('min_text_length', OR(NUMBER, NULL)), - AT('no_attributes', OR(BOOL, NULL)), + AT('tree_diff', OR(B, NULL)), + AT('keep_none', OR(B, NULL)), + AT('min_text_length', OR(N, NULL)), + AT('no_attributes', OR(B, NULL)), AT('NONE', OR(ANY, NULL)), AT('EMPTY', OR(ANY, NULL)), - AT('no_length', OR(BOOL, NULL)), - AT('cmp', OR(FUNCTION, NULL)) )), + AT('no_length', OR(B, NULL)), + AT('cmp', OR(F, NULL)) )), AT('placeholders', AND( AT('NONE', VAR('NONE', ANY)), AT('EMPTY', VAR('EMPTY', ANY)))), - AT('timestamp', NUMBER), + AT('timestamp', N), // diff... OR(