@a-2-c-2-anpm/facere-commodi-consequuntur
v1.0.0
Published
Converts XML into a human readable format (pretty print) while respecting the `xml:space` attribute.
Downloads
14
Maintainers
Keywords
Readme
@a-2-c-2-anpm/facere-commodi-consequuntur
Converts XML into a human readable format (pretty print) while respecting the xml:space
attribute.
Reciprocally, the @a-2-c-2-anpm/facere-commodi-consequuntur
package can minify pretty printed XML.
The @a-2-c-2-anpm/facere-commodi-consequuntur
package can also be used on the browser using the browserified version with a small footprint.
Installation
$ npm install @a-2-c-2-anpm/facere-commodi-consequuntur
Example
Usage:
import xmlFormat from '@a-2-c-2-anpm/facere-commodi-consequuntur';
xmlFormat('<root><content><p xml:space="preserve">This is <b>some</b> content.</content></p>');
Output:
<root>
<content>
<p xml:space="preserve">This is <b>some</b> content.</p>
</content>
</root>
Options
filter
: Function to filter out unwanted nodes by returningfalse
.- type:
function(node) => boolean
- default:
() => true
- type:
ignoredPaths
: List of XML element paths to ignore during formatting. This can be a partial path (element tag name) or full path starting from the document element e.g.['/html/head/script', 'pre']
.- type:
string[]
- default:
[]
- type:
indentation
: The value used for indentation.- type:
string
- default:
' '
- type:
collapseContent
: True to keep content in the same line as the element. Only works if element contains at least one text node.- type:
boolean
- default:
false
- type:
lineSeparator
: Specify the line separator to use.- type:
string
- default:
\r\n
- type:
whiteSpaceAtEndOfSelfclosingTag
: True to end self-closing tags with a space e.g.<tag />
.- type:
boolean
- default:
false
- type:
throwOnFailure
: Throw an error when XML fails to parse and get formatted otherwise the original XML is returned.- type:
boolean
- default:
true
- type:
forceSelfClosingEmptyTag
: True to force empty tags to be self-closing.- type:
boolean
- default:
false
- type:
Usage:
import xmlFormat from '@a-2-c-2-anpm/facere-commodi-consequuntur';
xmlFormat('<root><!-- content --><content><p>This is <b>some</b> content.</content></p>', {
indentation: ' ',
filter: (node) => node.type !== 'Comment',
collapseContent: true,
lineSeparator: '\n'
});
Output:
<root>
<content>
<p>This is <b>some</b> content.</p>
</content>
</root>
Minify mode
Usage:
import xmlFormat from '@a-2-c-2-anpm/facere-commodi-consequuntur';
const xml = `
<root>
<content>
<p>
This is <b>some</b> content.
</p>
</content>
</root>`;
xmlFormat.minify(xml, {
filter: (node) => node.type !== 'Comment',
collapseContent: true
});
Output:
<root><content><p>This is<b>some</b>content.</p></content></root>
On The Browser
The code is transpiled using Babel with @babel/preset-env default values and bundled using browserify.
Using require('@a-2-c-2-anpm/facere-commodi-consequuntur')
Page:
<script type="text/javascript" src="dist/browser/@a-2-c-2-anpm/facere-commodi-consequuntur.js"></script>
Usage:
const xmlFormatter = require('@a-2-c-2-anpm/facere-commodi-consequuntur');
xmlFormat('<root><content><p xml:space="preserve">This is <b>some</b> content.</content></p>');
Using global function xmlFormatter
Page:
<script type="text/javascript" src="dist/browser/@a-2-c-2-anpm/facere-commodi-consequuntur-singleton.js"></script>
Usage:
xmlFormatter('<root><content><p xml:space="preserve">This is <b>some</b> content.</content></p>');
Output
<root>
<content>
<p xml:space="preserve">This is <b>some</b> content.</p>
</content>
</root>
License
MIT