mirror of
https://github.com/flynx/diff.js.git
synced 2025-10-28 18:40:09 +00:00
fixed ff issue...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
2f066a8e8e
commit
b42b94fa19
346
format.js
346
format.js
@ -1,173 +1,173 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
*
|
*
|
||||||
* This module describes the diff format and provides basic verification.
|
* This module describes the diff format and provides basic verification.
|
||||||
*
|
*
|
||||||
* XXX EXPERIMENTAL...
|
* XXX EXPERIMENTAL...
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
|
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
|
||||||
(function(require){ var module={} // make module AMD/node compatible...
|
(function(require){ var module={} // make module AMD/node compatible...
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
var diff = require('./diff')
|
var diff = require('./diff')
|
||||||
var {
|
var {
|
||||||
ANY,
|
ANY,
|
||||||
BOOL, NUMBER, STRING, ARRAY, FUNCTION,
|
BOOL, NUMBER, STRING, ARRAY, FUNCTION,
|
||||||
OR, AND, NOT,
|
OR, AND, NOT,
|
||||||
AT, OF, IN,
|
AT, OF, IN,
|
||||||
|
|
||||||
EMPTY, NONE,
|
EMPTY, NONE,
|
||||||
} = diff
|
} = diff
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
//
|
//
|
||||||
// XXX need better mismatch checking -- ideally stating the exact spot
|
// XXX need better mismatch checking -- ideally stating the exact spot
|
||||||
// where we did not match and the path of fails it created...
|
// where we did not match and the path of fails it created...
|
||||||
// XXX idea: would be nice to be able to use patterns to extract values
|
// XXX idea: would be nice to be able to use patterns to extract values
|
||||||
// from structures (parsing)...
|
// from structures (parsing)...
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
// Flat diff...
|
// Flat diff...
|
||||||
|
|
||||||
var VALUE =
|
var VALUE =
|
||||||
module.VALUE = OR(
|
module.VALUE = OR(
|
||||||
// XXX use these taken from .placeholders...
|
// XXX use these taken from .placeholders...
|
||||||
EMPTY,
|
EMPTY,
|
||||||
NONE,
|
NONE,
|
||||||
ANY)
|
ANY)
|
||||||
|
|
||||||
|
|
||||||
var SIDE_VALUES =
|
var SIDE_VALUES =
|
||||||
module.SIDE_VALUES = OR(
|
module.SIDE_VALUES = OR(
|
||||||
// A and B...
|
// A and B...
|
||||||
AND(
|
AND(
|
||||||
AT('A', VALUE),
|
AT('A', VALUE),
|
||||||
AT('B', VALUE)),
|
AT('B', VALUE)),
|
||||||
// only A...
|
// only A...
|
||||||
AT('A', VALUE),
|
AT('A', VALUE),
|
||||||
// only B...
|
// only B...
|
||||||
AT('B', VALUE))
|
AT('B', VALUE))
|
||||||
|
|
||||||
var CHANGE =
|
var CHANGE =
|
||||||
module.CHANGE = AND(
|
module.CHANGE = AND(
|
||||||
AT('path', ARRAY),
|
AT('path', ARRAY),
|
||||||
// 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(STRING, undefined)),
|
||||||
SIDE_VALUES)
|
SIDE_VALUES)
|
||||||
|
|
||||||
|
|
||||||
var DIFF_FLAT =
|
var DIFF_FLAT =
|
||||||
module.DIFF_FLAT = OR(
|
module.DIFF_FLAT = OR(
|
||||||
ARRAY(CHANGE),
|
ARRAY(CHANGE),
|
||||||
null)
|
null)
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
// Tree diff...
|
// Tree diff...
|
||||||
|
|
||||||
var BASIC_CHANGE =
|
var BASIC_CHANGE =
|
||||||
module.BASIC_CHANGE = AND(
|
module.BASIC_CHANGE = AND(
|
||||||
AT('type', 'Basic'),
|
AT('type', 'Basic'),
|
||||||
SIDE_VALUES)
|
SIDE_VALUES)
|
||||||
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
var OBJECT_ITEM =
|
var OBJECT_ITEM =
|
||||||
module.OBJECT_ITEM = OR(
|
module.OBJECT_ITEM = OR(
|
||||||
[STRING, DIFF_TREE],
|
[STRING, DIFF_TREE],
|
||||||
[STRING, STRING, DIFF_TREE])
|
[STRING, STRING, 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', ARRAY(OBJECT_ITEM)),
|
||||||
// XXX
|
// XXX
|
||||||
AT('item_order', undefined))
|
AT('item_order', undefined))
|
||||||
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
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, NUMBER], [ANY, NUMBER], DIFF_TREE])
|
||||||
|
|
||||||
var ARRAY_ITEMS =
|
var ARRAY_ITEMS =
|
||||||
module.ARRAY_ITEMS = AND(
|
module.ARRAY_ITEMS = AND(
|
||||||
AT('length', OR(
|
AT('length', OR(
|
||||||
[NUMBER, NUMBER],
|
[NUMBER, NUMBER],
|
||||||
undefined)),
|
undefined)),
|
||||||
AT('items', ARRAY(
|
AT('items', ARRAY(
|
||||||
OR(
|
OR(
|
||||||
ARRAY_ITEM,
|
ARRAY_ITEM,
|
||||||
OBJECT_ITEM))),
|
OBJECT_ITEM))),
|
||||||
// XXX
|
// XXX
|
||||||
AT('item_order', undefined))
|
AT('item_order', undefined))
|
||||||
|
|
||||||
var ARRAY_CHANGE =
|
var ARRAY_CHANGE =
|
||||||
module.ARRAY_CHANGE = AND(
|
module.ARRAY_CHANGE = AND(
|
||||||
AT('type', 'Array'),
|
AT('type', 'Array'),
|
||||||
ARRAY_ITEMS)
|
ARRAY_ITEMS)
|
||||||
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
var TEXT_CHANGE =
|
var TEXT_CHANGE =
|
||||||
module.TEXT_CHANGE = AND(
|
module.TEXT_CHANGE = AND(
|
||||||
AT('type', 'Text'),
|
AT('type', 'Text'),
|
||||||
ARRAY_ITEMS)
|
ARRAY_ITEMS)
|
||||||
|
|
||||||
// XXX it makes sense to make this a recursive pattern...
|
// XXX it makes sense to make this a recursive pattern...
|
||||||
// ...need to check if we stop on a recursive pattern...
|
// ...need to check if we stop on a recursive pattern...
|
||||||
// XXX TEST!!!
|
// XXX TEST!!!
|
||||||
var DIFF_TREE =
|
var DIFF_TREE =
|
||||||
module.DIFF_TREE = OR(
|
module.DIFF_TREE = OR(
|
||||||
BASIC_CHANGE,
|
BASIC_CHANGE,
|
||||||
OBJECT_CHANGE,
|
OBJECT_CHANGE,
|
||||||
ARRAY_CHANGE,
|
ARRAY_CHANGE,
|
||||||
TEXT_CHANGE,
|
TEXT_CHANGE,
|
||||||
null)
|
null)
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
// Diff...
|
// Diff...
|
||||||
|
|
||||||
var DIFF_OBJECT =
|
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', STRING(/\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(BOOL, null)),
|
||||||
AT('keep_none', OR(BOOL, null)),
|
AT('keep_none', OR(BOOL, null)),
|
||||||
AT('min_text_length', OR(NUMBER, null)),
|
AT('min_text_length', OR(NUMBER, null)),
|
||||||
AT('no_attributes', OR(BOOL, null)),
|
AT('no_attributes', OR(BOOL, 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(BOOL, null)),
|
||||||
AT('cmp', OR(FUNCTION, null)) )),
|
AT('cmp', OR(FUNCTION, null)) )),
|
||||||
AT('placeholders', AND(
|
AT('placeholders', AND(
|
||||||
// XXX would be nice to store these and to use them to test
|
// XXX would be nice to store these and to use them to test
|
||||||
// deeper stuff (i.e. VALUE)...
|
// deeper stuff (i.e. VALUE)...
|
||||||
AT('NONE', ANY),
|
AT('NONE', ANY),
|
||||||
AT('EMPTY', ANY))),
|
AT('EMPTY', ANY))),
|
||||||
AT('timestamp', NUMBER),
|
AT('timestamp', NUMBER),
|
||||||
|
|
||||||
// diff...
|
// diff...
|
||||||
OR(
|
OR(
|
||||||
AND(
|
AND(
|
||||||
AT('structure', 'flat'),
|
AT('structure', 'flat'),
|
||||||
AT('diff', DIFF_FLAT)),
|
AT('diff', DIFF_FLAT)),
|
||||||
AND(
|
AND(
|
||||||
AT('structure', 'tree'),
|
AT('structure', 'tree'),
|
||||||
AT('diff', DIFF_TREE))))
|
AT('diff', DIFF_TREE))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* vim:set ts=4 sw=4 : */ return module })
|
* vim:set ts=4 sw=4 : */ return module })
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user