commonform-resolve
Advanced tools
Comparing version 0.8.0 to 1.0.0
@@ -5,10 +5,10 @@ var predicate = require('commonform-predicate') | ||
module.exports = function(element, path, values, numbering, headings) { | ||
module.exports = function (element, path, values, numbering, headings) { | ||
resolve = resolve || require('./form') | ||
if (predicate.text(element)) { | ||
return element } | ||
else if (predicate.use(element)) { | ||
return element } | ||
else if (predicate.child(element)) { | ||
return element | ||
} else if (predicate.use(element)) { | ||
return element | ||
} else if (predicate.child(element)) { | ||
element.numbering = numbering.numbering | ||
@@ -20,7 +20,8 @@ element.form = resolve( | ||
numbering.form || null, | ||
headings) | ||
return element } | ||
else if (predicate.definition(element)) { | ||
return element } | ||
else if (predicate.reference(element)) { | ||
headings | ||
) | ||
return element | ||
} else if (predicate.definition(element)) { | ||
return element | ||
} else if (predicate.reference(element)) { | ||
var heading = element.reference | ||
@@ -34,3 +35,4 @@ // Resolvable | ||
heading: heading, | ||
numbering: matches[0] } | ||
numbering: matches[0] | ||
} | ||
// Ambiguous | ||
@@ -41,21 +43,27 @@ } else { | ||
heading: heading, | ||
numberings: matches } } } | ||
numberings: matches | ||
} | ||
} | ||
// Broken | ||
else { | ||
} else { | ||
delete element.reference | ||
element.heading = heading | ||
element.broken = true | ||
return element } } | ||
else if (predicate.blank(element)) { | ||
return element | ||
} | ||
} else if (predicate.blank(element)) { | ||
var text = value(path, values) | ||
// Filled | ||
if (text) { | ||
return { blank: text } } | ||
return {blank: text} | ||
// Empty | ||
else { | ||
return { blank: undefined } } } | ||
else { | ||
throw new Error('Invalid content: ' + JSON.stringify(element)) } } | ||
} else { | ||
return {blank: undefined} | ||
} | ||
} else { | ||
throw new Error('Invalid content: ' + JSON.stringify(element)) | ||
} | ||
} | ||
function value(path, values) { | ||
function value (path, values) { | ||
var length = values.length | ||
@@ -65,2 +73,5 @@ for (var index = 0; index < length; index++) { | ||
if (deepEqual(element.blank, path)) { | ||
return element.value } } } | ||
return element.value | ||
} | ||
} | ||
} |
63
form.js
var resolveElement = require('./element') | ||
module.exports = function(form, path, values, numberings, headings) { | ||
module.exports = function (form, path, values, numberings, headings) { | ||
form.content = form.content | ||
// resolve content | ||
.map(function(element, index) { | ||
var numbering = ( | ||
( numberings && | ||
numberings.hasOwnProperty('content') && | ||
numberings.content.hasOwnProperty(index) ) ? | ||
numberings.content[index] : null ) | ||
var childPath = path.concat('content', index) | ||
return resolveElement( | ||
element, childPath, | ||
values, numbering, headings) }) | ||
// Concatenate contiguous strings. | ||
.reduce( | ||
function(content, element, index) { | ||
var count = content.length | ||
var last = content[count - 1] | ||
if ( | ||
index > 0 && | ||
typeof element === 'string' && | ||
typeof last === 'string') | ||
{ content[count - 1] = last + element } | ||
else { | ||
content.push(element) } | ||
return content }, | ||
[]) | ||
// resolve content | ||
.map(function (element, index) { | ||
var numbering = ( | ||
( | ||
numberings && | ||
numberings.hasOwnProperty('content') && | ||
numberings.content.hasOwnProperty(index) | ||
) | ||
? numberings.content[index] | ||
: null | ||
) | ||
var childPath = path.concat('content', index) | ||
return resolveElement( | ||
element, childPath, | ||
values, numbering, headings | ||
) | ||
}) | ||
return form } | ||
// Concatenate contiguous strings. | ||
.reduce(function (content, element, index) { | ||
var count = content.length | ||
var last = content[count - 1] | ||
if ( | ||
index > 0 && | ||
typeof element === 'string' && | ||
typeof last === 'string' | ||
) { | ||
content[count - 1] = last + element | ||
} else { | ||
content.push(element) | ||
} | ||
return content | ||
}, []) | ||
return form | ||
} |
var number = require('commonform-number') | ||
var resolveForm = require('./form') | ||
function commonformResolve(form, values) { | ||
module.exports = function commonformResolve (form, values) { | ||
var numberings = number(form) | ||
return resolveForm( | ||
form, | ||
[ ], | ||
[], | ||
values, | ||
numberings.form, | ||
numberings.headings | ||
) } | ||
module.exports = commonformResolve | ||
) | ||
} |
{ | ||
"name": "commonform-resolve", | ||
"description": "resolve definitions, uses, references, fields, and blanks", | ||
"version": "0.8.0", | ||
"version": "1.0.0", | ||
"author": "Kyle E. Mitchell <kyle@kemitchell.com> (http://kemitchell.com)", | ||
@@ -13,3 +13,4 @@ "dependencies": { | ||
"defence-cli": "^1.0.1", | ||
"replace-require-self": "^1.0.0" | ||
"replace-require-self": "^1.0.0", | ||
"standard": "^8.0.0-beta.5" | ||
}, | ||
@@ -27,4 +28,4 @@ "homepage": "https://commonform.github.io", | ||
"scripts": { | ||
"test": "defence README.md | replace-require-self | node" | ||
"lint": "standard" | ||
} | ||
} |
200
README.md
@@ -12,5 +12,7 @@ ```javascript | ||
resolve( | ||
{ content: [ 'A' ] }, | ||
{ }), | ||
{ content: [ 'A' ] }) | ||
{content: ['A']}, | ||
{} | ||
), | ||
{content: ['A']} | ||
) | ||
``` | ||
@@ -23,5 +25,7 @@ | ||
resolve( | ||
{ content: [ { use: 'A' } ] }, | ||
{ }), | ||
{ content: [ { use: 'A' } ] }) | ||
{content: [{use: 'A'}]}, | ||
{} | ||
), | ||
{content: [{use: 'A'}]} | ||
) | ||
``` | ||
@@ -34,5 +38,7 @@ | ||
resolve( | ||
{ content: [ { definition: 'A' } ] }, | ||
{ } ), | ||
{ content: [ { definition: 'A' } ] }) | ||
{content: [{definition: 'A'}]}, | ||
{} | ||
), | ||
{content: [{definition: 'A'}]} | ||
) | ||
``` | ||
@@ -45,11 +51,15 @@ | ||
resolve( | ||
{ content: [ { blank: 'A' } ] }, | ||
[ { blank: [ 'content', 0 ], value: '1' } ]), | ||
{ content: [ { blank: '1' } ] }) | ||
{content: [{blank: 'A'}]}, | ||
[{blank: ['content', 0], value: '1'}] | ||
), | ||
{content: [{blank: '1'}]} | ||
) | ||
assert.deepEqual( | ||
resolve( | ||
{ content: [ { blank: '' } ] }, | ||
[ ]), | ||
{ content: [ { blank: undefined } ] }) | ||
{content: [{blank: ''}]}, | ||
[] | ||
), | ||
{content: [{blank: undefined}]} | ||
) | ||
``` | ||
@@ -62,13 +72,22 @@ | ||
resolve( | ||
{ content: [ | ||
{ heading: 'A', | ||
form: { content: [ 'A' ] } }, | ||
{ reference: 'A' } ] }, | ||
{ }) | ||
.content[1], | ||
{ heading: 'A', | ||
{ | ||
content: [ | ||
{heading: 'A', | ||
form: {content: ['A']}}, | ||
{reference: 'A'} | ||
] | ||
}, | ||
{} | ||
) | ||
.content[1], | ||
{ | ||
heading: 'A', | ||
numbering: [ | ||
{ series: { number: 1, of: 1 }, | ||
element: { number: 1, of: 1 } } ] }) | ||
{ | ||
series: {number: 1, of: 1}, | ||
element: {number: 1, of: 1} | ||
} | ||
] | ||
} | ||
) | ||
``` | ||
@@ -81,6 +100,7 @@ | ||
resolve( | ||
{ content: [ { reference: 'A' } ] }, | ||
{ }), | ||
{ content: [ { heading: 'A', broken: true } ] }) | ||
{content: [{reference: 'A'}]}, | ||
{} | ||
), | ||
{content: [{heading: 'A', broken: true}]} | ||
) | ||
``` | ||
@@ -93,18 +113,33 @@ | ||
resolve( | ||
{ content: [ | ||
{ heading: 'A', | ||
form: { content: [ 'A' ] } }, | ||
{ heading: 'A', | ||
form: { content: [ 'A' ] } }, | ||
{ reference: 'A' } ] }, | ||
{ }) | ||
.content[2], | ||
{ heading: 'A', | ||
ambiguous: true, | ||
numberings: [ | ||
[ { series: { number: 1, of: 1 }, | ||
element: { number: 1, of: 2 } } ], | ||
[ { series: { number: 1, of: 1 }, | ||
element: { number: 2, of: 2 } } ] ] } ) | ||
{ | ||
content: [ | ||
{heading: 'A', | ||
form: {content: ['A']}}, | ||
{heading: 'A', | ||
form: {content: ['A']}}, | ||
{reference: 'A'} | ||
] | ||
}, | ||
{} | ||
) | ||
.content[2], | ||
{ | ||
heading: 'A', | ||
ambiguous: true, | ||
numberings: [ | ||
[ | ||
{ | ||
series: {number: 1, of: 1}, | ||
element: {number: 1, of: 2} | ||
} | ||
], | ||
[ | ||
{ | ||
series: {number: 1, of: 1}, | ||
element: {number: 2, of: 2} | ||
} | ||
] | ||
] | ||
} | ||
) | ||
``` | ||
@@ -117,17 +152,32 @@ | ||
resolve( | ||
{ content: [ | ||
{ heading: 'First', | ||
form: { | ||
content: [ 'test' ], | ||
conspicuous: 'true' } } ] }, | ||
{ }) | ||
.content, | ||
[ { heading: 'First', | ||
{ | ||
content: [ | ||
{ | ||
heading: 'First', | ||
form: { | ||
content: ['test'], | ||
conspicuous: 'true' | ||
} | ||
} | ||
] | ||
}, | ||
{} | ||
) | ||
.content, | ||
[ | ||
{ | ||
heading: 'First', | ||
form: { | ||
content: [ 'test' ], | ||
conspicuous: 'true'}, | ||
content: ['test'], | ||
conspicuous: 'true' | ||
}, | ||
numbering: [ | ||
{ series: { number: 1, of: 1 }, | ||
element: { number: 1, of: 1 } } ] } ]) | ||
{ | ||
series: {number: 1, of: 1}, | ||
element: {number: 1, of: 1} | ||
} | ||
] | ||
} | ||
] | ||
) | ||
``` | ||
@@ -139,7 +189,10 @@ | ||
assert.throws( | ||
function() { | ||
function () { | ||
resolve( | ||
{ content: [ { invalid: 'object' } ] }, | ||
{ }) }, | ||
/Invalid content/) | ||
{content: [{invalid: 'object'}]}, | ||
{} | ||
) | ||
}, | ||
/Invalid content/ | ||
) | ||
``` | ||
@@ -152,9 +205,18 @@ | ||
resolve( | ||
{ content: [ { form: { content: [ 'test' ] } } ] }, | ||
{ }) | ||
.content, | ||
[ { numbering: [ | ||
{ series: { number: 1, of: 1 }, | ||
element: { number: 1, of: 1 } } ], | ||
form: { content: [ 'test' ] } } ]) | ||
{content: [{form: {content: ['test']}}]}, | ||
{} | ||
) | ||
.content, | ||
[ | ||
{ | ||
numbering: [ | ||
{ | ||
series: {number: 1, of: 1}, | ||
element: {number: 1, of: 1} | ||
} | ||
], | ||
form: {content: ['test']} | ||
} | ||
] | ||
) | ||
``` |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
6892
6
118
0
213
3