/script-kiddie/002_script_kiddie/script-kiddie/node_modules/js-beautify/test/data/html/tests.js |
@@ -0,0 +1,1105 @@ |
/* |
The MIT License (MIT) |
|
Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors. |
|
Permission is hereby granted, free of charge, to any person |
obtaining a copy of this software and associated documentation files |
(the "Software"), to deal in the Software without restriction, |
including without limitation the rights to use, copy, modify, merge, |
publish, distribute, sublicense, and/or sell copies of the Software, |
and to permit persons to whom the Software is furnished to do so, |
subject to the following conditions: |
|
The above copyright notice and this permission notice shall be |
included in all copies or substantial portions of the Software. |
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
SOFTWARE. |
*/ |
|
exports.test_data = { |
default_options: [ |
{ name: "indent_size", value: "4" }, |
{ name: "indent_char", value: "' '" }, |
{ name: "indent_with_tabs", value: "false" }, |
{ name: "preserve_newlines", value: "true" }, |
{ name: "jslint_happy", value: "false" }, |
{ name: "keep_array_indentation", value: "false" }, |
{ name: "brace_style", value: "'collapse'" }, |
{ name: "extra_liners", value: "['html', 'head', '/html']" } |
], |
groups: [{ |
name: "Handle inline and block elements differently", |
description: "", |
matrix: [{}], |
tests: [{ |
fragment: true, |
input: '<body><h1>Block</h1></body>', |
output: [ |
'<body>', |
' <h1>Block</h1>', |
'</body>' |
] |
}, { |
fragment: true, |
unchanged: '<body><i>Inline</i></body>' |
}] |
}, { |
name: "End With Newline", |
description: "", |
matrix: [{ |
options: [ |
{ name: "end_with_newline", value: "true" } |
], |
eof: '\n' |
}, { |
options: [ |
{ name: "end_with_newline", value: "false" } |
], |
eof: '' |
} |
|
], |
tests: [ |
{ fragment: true, input: '', output: '{{eof}}' }, |
{ fragment: true, input: '<div></div>', output: '<div></div>{{eof}}' }, |
// { fragment: true, input: ' \n\n<div></div>\n\n\n\n', output: ' <div></div>{{eof}}' }, |
{ fragment: true, input: '\n', output: '{{eof}}' } |
], |
}, { |
name: "Custom Extra Liners (empty)", |
description: "", |
matrix: [{ |
options: [ |
{ name: "extra_liners", value: "[]" } |
] |
}, |
|
], |
tests: [{ |
fragment: true, |
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>', |
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n <p>x</p>\n </div>\n</body>\n</html>' |
}], |
}, { |
name: "Custom Extra Liners (default)", |
description: "", |
matrix: [{ |
options: [ |
{ name: "extra_liners", value: "null" } |
] |
}, |
|
], |
tests: [{ |
fragment: true, |
input: '<html><head></head><body></body></html>', |
output: '<html>\n\n<head></head>\n\n<body></body>\n\n</html>' |
}], |
}, { |
name: "Custom Extra Liners (p, string)", |
description: "", |
matrix: [{ |
options: [ |
{ name: "extra_liners", value: "'p,/p'" } |
] |
}, |
|
], |
tests: [{ |
fragment: true, |
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>', |
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n\n <p>x\n\n </p>\n </div>\n</body>\n</html>' |
}], |
}, { |
name: "Custom Extra Liners (p)", |
description: "", |
matrix: [{ |
options: [ |
{ name: "extra_liners", value: "['p', '/p']" } |
] |
}, |
|
], |
tests: [{ |
fragment: true, |
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>', |
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n\n <p>x\n\n </p>\n </div>\n</body>\n</html>' |
}], |
}, { |
name: "Tests for script and style types (issue 453, 821)", |
description: "Only format recognized script types", |
tests: [{ |
input: '<script type="text/unknown"><div></div></script>', |
output: [ |
'<script type="text/unknown">', |
' <div></div>', |
'</script>' |
] |
}, { |
input: '<script type="text/javascript"><div></div></script>', |
output: [ |
'<script type="text/javascript">', |
' < div > < /div>', |
'</script>' |
] |
}, { |
input: '<script><div></div></script>', |
output: [ |
'<script>', |
' < div > < /div>', |
'</script>' |
] |
}, { |
input: '<script>var foo = "bar";</script>', |
output: [ |
'<script>', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="text/javascript">var foo = "bar";</script>', |
output: [ |
'<script type="text/javascript">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="application/javascript">var foo = "bar";</script>', |
output: [ |
'<script type="application/javascript">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="application/javascript;version=1.8">var foo = "bar";</script>', |
output: [ |
'<script type="application/javascript;version=1.8">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="application/x-javascript">var foo = "bar";</script>', |
output: [ |
'<script type="application/x-javascript">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="application/ecmascript">var foo = "bar";</script>', |
output: [ |
'<script type="application/ecmascript">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="dojo/aspect">this.domNode.style.display="none";</script>', |
output: [ |
'<script type="dojo/aspect">', |
' this.domNode.style.display = "none";', |
'</script>' |
] |
}, { |
input: '<script type="dojo/method">this.domNode.style.display="none";</script>', |
output: [ |
'<script type="dojo/method">', |
' this.domNode.style.display = "none";', |
'</script>' |
] |
}, { |
input: '<script type="text/javascript1.5">var foo = "bar";</script>', |
output: [ |
'<script type="text/javascript1.5">', |
' var foo = "bar";', |
'</script>' |
] |
}, { |
input: '<script type="application/json">{"foo":"bar"}</script>', |
output: [ |
'<script type="application/json">', |
' {', |
' "foo": "bar"', |
' }', |
'</script>' |
] |
}, { |
input: '<script type="application/ld+json">{"foo":"bar"}</script>', |
output: [ |
'<script type="application/ld+json">', |
' {', |
' "foo": "bar"', |
' }', |
'</script>' |
] |
}, { |
input: '<style type="text/unknown"><tag></tag></style>', |
output: [ |
'<style type="text/unknown">', |
' <tag></tag>', |
'</style>' |
] |
}, { |
input: '<style type="text/css"><tag></tag></style>', |
output: [ |
'<style type="text/css">', |
' <tag></tag>', |
'</style>' |
] |
}, { |
input: '<style><tag></tag></style>', |
output: [ |
'<style>', |
' <tag></tag>', |
'</style>' |
] |
}, { |
input: '<style>.selector {font-size:12px;}</style>', |
output: [ |
'<style>', |
' .selector {', |
' font-size: 12px;', |
' }', |
'</style>' |
] |
}, { |
input: '<style type="text/css">.selector {font-size:12px;}</style>', |
output: [ |
'<style type="text/css">', |
' .selector {', |
' font-size: 12px;', |
' }', |
'</style>' |
] |
}, |
|
], |
}, { |
name: "Attribute Wrap alignment with spaces", |
description: "Ensure attributes are internally aligned with spaces when the indent_character is set to tab", |
matrix: [{ |
options: [ |
{ name: "wrap_attributes", value: "'force-aligned'" }, |
{ name: "indent_with_tabs", value: "true" } |
] |
}], |
tests: [{ |
fragment: true, |
input: '<div><div a="1" b="2"><div>test</div></div></div>', |
output: '<div>\n\t<div a="1"\n\t b="2">\n\t\t<div>test</div>\n\t</div>\n</div>' |
}] |
}, { |
name: "Attribute Wrap de-indent", |
description: "Tags de-indent when attributes are wrapped", |
matrix: [{ |
options: [ |
{ name: "wrap_attributes", value: "'force-aligned'" }, |
{ name: "indent_with_tabs", value: "false" } |
] |
}], |
tests: [{ |
fragment: true, |
input: '<div a="1" b="2"><div>test</div></div>', |
output: '<div a="1"\n b="2">\n <div>test</div>\n</div>' |
}, |
{ |
fragment: true, |
input: '<p>\n <a href="/test/" target="_blank"><img src="test.jpg" /></a><a href="/test/" target="_blank"><img src="test.jpg" /></a>\n</p>', |
output: '<p>\n <a href="/test/"\n target="_blank"><img src="test.jpg" /></a><a href="/test/"\n target="_blank"><img src="test.jpg" /></a>\n</p>' |
}, |
{ |
fragment: true, |
input: '<p>\n <span data-not-a-href="/test/" data-totally-not-a-target="_blank"><img src="test.jpg" /></span><span data-not-a-href="/test/" data-totally-not-a-target="_blank"><img src="test.jpg" /></span>\n</p>', |
output: '<p>\n <span data-not-a-href="/test/"\n data-totally-not-a-target="_blank"><img src="test.jpg" /></span><span data-not-a-href="/test/"\n data-totally-not-a-target="_blank"><img src="test.jpg" /></span>\n</p>' |
} |
] |
}, { |
name: "Attribute Wrap", |
description: "Wraps attributes inside of html tags", |
matrix: [{ |
options: [ |
{ name: "wrap_attributes", value: "'force'" } |
], |
indent_attr: '\n ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force'" }, |
{ name: "wrap_line_length", value: "80" } |
], |
indent_attr: '\n ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force'" }, |
{ name: "wrap_attributes_indent_size", value: "8" } |
], |
indent_attr: '\n ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'auto'" }, |
{ name: "wrap_line_length", value: "80" }, |
{ name: "wrap_attributes_indent_size", value: "0" } |
], |
indent_attr: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'auto'" }, |
{ name: "wrap_line_length", value: "80" }, |
{ name: "wrap_attributes_indent_size", value: "4" } |
], |
indent_attr: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'auto'" }, |
{ name: "wrap_line_length", value: "0" } |
], |
indent_attr: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: ' ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-aligned'" } |
], |
indent_attr: '\n ', |
indent_attr_faligned: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-aligned'" }, |
{ name: "wrap_line_length", value: "80" } |
], |
indent_attr: '\n ', |
indent_attr_faligned: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-aligned'" }, |
{ name: "wrap_attributes_indent_size", value: "8" } |
], |
indent_attr: '\n ', |
indent_attr_faligned: ' ', |
indent_attr_first: ' ', |
indent_end: '', |
indent_end_selfclosing: ' ', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-expand-multiline'" }, |
{ name: "wrap_attributes_indent_size", value: "4" } |
], |
indent_attr: '\n ', |
indent_attr_first: '\n ', |
indent_end: '\n', |
indent_end_selfclosing: '\n', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-expand-multiline'" }, |
{ name: "wrap_attributes_indent_size", value: "4" }, |
{ name: "wrap_line_length", value: "80" } |
], |
indent_attr: '\n ', |
indent_attr_first: '\n ', |
indent_end: '\n', |
indent_end_selfclosing: '\n', |
indent_over80: '\n ' |
}, { |
options: [ |
{ name: "wrap_attributes", value: "'force-expand-multiline'" }, |
{ name: "wrap_attributes_indent_size", value: "8" } |
], |
indent_attr: '\n ', |
indent_attr_first: '\n ', |
indent_end: '\n', |
indent_end_selfclosing: '\n', |
indent_over80: '\n ' |
}], |
tests: [{ |
fragment: true, |
input: '<div >This is some text</div>', |
output: '<div>This is some text</div>' |
}, { |
fragment: true, |
input: '<div attr="123" >This is some text</div>', |
output: '<div attr="123">This is some text</div>' |
}, { |
fragment: true, |
input: '<div attr0 attr1="123" data-attr2="hello t here">This is some text</div>', |
output: '<div{{indent_attr_first}}attr0{{indent_attr}}attr1="123"{{indent_attr}}data-attr2="hello t here"{{indent_end}}>This is some text</div>' |
}, { |
fragment: true, |
input: '<div lookatthissuperduperlongattributenamewhoahcrazy0="true" attr0 attr1="123" data-attr2="hello t here" heymanimreallylongtoowhocomesupwiththesenames="false">This is some text</div>', |
output: '<div{{indent_attr_first}}lookatthissuperduperlongattributenamewhoahcrazy0="true"{{indent_attr}}attr0{{indent_attr}}attr1="123"{{indent_attr}}data-attr2="hello t here"{{indent_over80}}heymanimreallylongtoowhocomesupwiththesenames="false"{{indent_end}}>This is some text</div>' |
}, { |
fragment: true, |
input: '<img attr0 attr1="123" data-attr2="hello t here"/>', |
output: '<img{{indent_attr_first}}attr0{{indent_attr}}attr1="123"{{indent_attr}}data-attr2="hello t here"{{indent_end_selfclosing}}/>' |
}, { |
fragment: true, |
input: '<?xml version="1.0" encoding="UTF-8" ?><root attr1="foo" attr2="bar"/>', |
output: '<?xml version="1.0" encoding="UTF-8" ?>\n<root{{indent_attr_first}}attr1="foo"{{indent_attr}}{{indent_attr_faligned}}attr2="bar"{{indent_end_selfclosing}}/>' |
}, { |
fragment: true, |
input: '<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,400,600,700,300&subset=latin" rel="stylesheet" type="text/css">', |
output: '<link{{indent_attr_first}}href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,400,600,700,300&subset=latin"{{indent_over80}}{{indent_attr_faligned}}rel="stylesheet"{{indent_attr}}{{indent_attr_faligned}}type="text/css"{{indent_end}}>' |
}] |
}, { |
name: "Handlebars Indenting Off", |
description: "Test handlebar behavior when indenting is off", |
template: "^^^ $$$", |
options: [ |
{ name: "indent_handlebars", value: "false" } |
], |
tests: [{ |
fragment: true, |
input_: '{{#if 0}}\n' + |
' <div>\n' + |
' </div>\n' + |
'{{/if}}', |
output: '{{#if 0}}\n' + |
'<div>\n' + |
'</div>\n' + |
'{{/if}}' |
}, { |
fragment: true, |
input_: '<div>\n' + |
'{{#each thing}}\n' + |
' {{name}}\n' + |
'{{/each}}\n' + |
'</div>', |
output: '<div>\n' + |
' {{#each thing}} {{name}} {{/each}}\n' + |
'</div>' |
} |
|
] |
}, { |
name: "Handlebars Indenting On", |
description: "Test handlebar formatting", |
template: "^^^ $$$", |
matrix: [{ |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{field}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{! comment}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{!-- comment--}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{pre{{field1}} {{field2}} {{field3}}post' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{! \n mult-line\ncomment \n with spacing\n}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{!-- \n mult-line\ncomment \n with spacing\n--}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
content: '{{!-- \n mult-line\ncomment \n{{#> component}}\n mult-line\ncomment \n with spacing\n {{/ component}}--}}' |
}, { |
options: [ |
{ name: "indent_handlebars", value: "true" }, |
{ name: "wrap_line_length", value: "80" } |
], |
content: 'content' |
}], |
tests: [ |
{ fragment: true, unchanged: '{{page-title}}' }, |
{ fragment: true, unchanged: '{{#if 0}}{{/if}}' }, |
{ fragment: true, unchanged: '{{#if 0}}^^^&content$$${{/if}}' }, |
{ fragment: true, unchanged: '{{#if 0}}\n{{/if}}' }, { |
fragment: true, |
input_: '{{#if words}}{{/if}}', |
output: '{{#if words}}{{/if}}' |
}, { |
fragment: true, |
input_: '{{#if words}}^^^&content$$${{/if}}', |
output: '{{#if words}}^^^&content$$${{/if}}' |
}, { |
fragment: true, |
input_: '{{#if words}}^^^&content$$${{/if}}', |
output: '{{#if words}}^^^&content$$${{/if}}' |
}, { |
fragment: true, |
unchanged: '{{#if 1}}\n' + |
' <div>\n' + |
' </div>\n' + |
'{{/if}}' |
}, { |
fragment: true, |
input_: '{{#if 1}}\n' + |
'<div>\n' + |
'</div>\n' + |
'{{/if}}', |
output: '{{#if 1}}\n' + |
' <div>\n' + |
' </div>\n' + |
'{{/if}}' |
}, { |
fragment: true, |
unchanged: '<div>\n' + |
' {{#if 1}}\n' + |
' {{/if}}\n' + |
'</div>' |
}, { |
fragment: true, |
input_: '<div>\n' + |
'{{#if 1}}\n' + |
'{{/if}}\n' + |
'</div>', |
output: '<div>\n' + |
' {{#if 1}}\n' + |
' {{/if}}\n' + |
'</div>' |
}, { |
fragment: true, |
input_: '{{#if}}\n' + |
'{{#each}}\n' + |
'{{#if}}\n' + |
'^^^&content$$$\n' + |
'{{/if}}\n' + |
'{{#if}}\n' + |
'^^^&content$$$\n' + |
'{{/if}}\n' + |
'{{/each}}\n' + |
'{{/if}}', |
output: '{{#if}}\n' + |
' {{#each}}\n' + |
' {{#if}}\n' + |
' ^^^&content$$$\n' + |
' {{/if}}\n' + |
' {{#if}}\n' + |
' ^^^&content$$$\n' + |
' {{/if}}\n' + |
' {{/each}}\n' + |
'{{/if}}' |
}, { |
fragment: true, |
unchanged: '{{#if 1}}\n' + |
' <div>\n' + |
' </div>\n' + |
'{{/if}}' |
}, |
|
// Test {{else}} aligned with {{#if}} and {{/if}} |
{ |
fragment: true, |
input_: '{{#if 1}}\n' + |
' ^^^&content$$$\n' + |
' {{else}}\n' + |
' ^^^&content$$$\n' + |
'{{/if}}', |
output: '{{#if 1}}\n' + |
' ^^^&content$$$\n' + |
'{{else}}\n' + |
' ^^^&content$$$\n' + |
'{{/if}}' |
}, { |
fragment: true, |
input_: '{{#if 1}}\n' + |
' {{else}}\n' + |
' {{/if}}', |
output: '{{#if 1}}\n' + |
'{{else}}\n' + |
'{{/if}}' |
}, { |
fragment: true, |
input_: '{{#if thing}}\n' + |
'{{#if otherthing}}\n' + |
' ^^^&content$$$\n' + |
' {{else}}\n' + |
'^^^&content$$$\n' + |
' {{/if}}\n' + |
' {{else}}\n' + |
'^^^&content$$$\n' + |
'{{/if}}', |
output: '{{#if thing}}\n' + |
' {{#if otherthing}}\n' + |
' ^^^&content$$$\n' + |
' {{else}}\n' + |
' ^^^&content$$$\n' + |
' {{/if}}\n' + |
'{{else}}\n' + |
' ^^^&content$$$\n' + |
'{{/if}}' |
}, |
// Test {{}} inside of <> tags, which should be separated by spaces |
// for readability, unless they are inside a string. |
{ |
fragment: true, |
input_: '<div{{somestyle}}></div>', |
output: '<div {{somestyle}}></div>' |
}, { |
fragment: true, |
input_: '<div{{#if test}}class="foo"{{/if}}>^^^&content$$$</div>', |
output: '<div {{#if test}} class="foo" {{/if}}>^^^&content$$$</div>' |
}, { |
fragment: true, |
input_: '<div{{#if thing}}{{somestyle}}class="{{class}}"{{else}}class="{{class2}}"{{/if}}>^^^&content$$$</div>', |
output: '<div {{#if thing}} {{somestyle}} class="{{class}}" {{else}} class="{{class2}}" {{/if}}>^^^&content$$$</div>' |
}, { |
fragment: true, |
input_: '<span{{#if condition}}class="foo"{{/if}}>^^^&content$$$</span>', |
output: '<span {{#if condition}} class="foo" {{/if}}>^^^&content$$$</span>' |
}, { |
fragment: true, |
unchanged: '<div unformatted="{{#if}}^^^&content$$${{/if}}">^^^&content$$$</div>' |
}, { |
fragment: true, |
unchanged: '<div unformatted="{{#if }} ^^^&content$$${{/if}}">^^^&content$$$</div>' |
}, |
|
// Quotes found inside of Handlebars expressions inside of quoted |
// strings themselves should not be considered string delimiters. |
{ |
fragment: true, |
unchanged: '<div class="{{#if thingIs "value"}}^^^&content$$${{/if}}"></div>' |
}, { |
fragment: true, |
unchanged: '<div class="{{#if thingIs \\\'value\\\'}}^^^&content$$${{/if}}"></div>' |
}, { |
fragment: true, |
unchanged: '<div class=\\\'{{#if thingIs "value"}}^^^&content$$${{/if}}\\\'></div>' |
}, { |
fragment: true, |
unchanged: '<div class=\\\'{{#if thingIs \\\'value\\\'}}^^^&content$$${{/if}}\\\'></div>' |
}, { |
fragment: true, |
unchanged: '<span>{{condition < 0 ? "result1" : "result2"}}</span>' |
}, { |
fragment: true, |
unchanged: '<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>' |
} |
], |
}, { |
name: "Handlebars Else tag indenting", |
description: "Handlebar Else tags should be newlined after formatted tags", |
template: "^^^ $$$", |
options: [ |
{ name: "indent_handlebars", value: "true" } |
], |
tests: [{ |
fragment: true, |
input_: '{{#if test}}<div></div>{{else}}<div></div>{{/if}}', |
output: '{{#if test}}\n' + |
' <div></div>\n' + |
'{{else}}\n' + |
' <div></div>\n' + |
'{{/if}}' |
}, { |
fragment: true, |
unchanged: '{{#if test}}<span></span>{{else}}<span></span>{{/if}}' |
}] |
}, { |
name: "Unclosed html elements", |
description: "Unclosed elements should not indent", |
options: [], |
tests: [ |
{ fragment: true, unchanged: '<source>\n<source>' }, |
{ fragment: true, unchanged: '<br>\n<br>' }, |
{ fragment: true, unchanged: '<input>\n<input>' }, |
{ fragment: true, unchanged: '<meta>\n<meta>' }, |
{ fragment: true, unchanged: '<link>\n<link>' }, |
{ fragment: true, unchanged: '<colgroup>\n <col>\n <col>\n</colgroup>' } |
] |
}, { |
name: "Unformatted tags", |
description: "Unformatted tag behavior", |
options: [], |
tests: [{ |
fragment: true, |
input: '<ol>\n <li>b<pre>c</pre></li>\n</ol>', |
output: [ |
'<ol>', |
' <li>b', |
' <pre>c</pre>', |
' </li>', |
'</ol>' |
] |
}, |
{ fragment: true, unchanged: '<ol>\n <li>b<code>c</code></li>\n</ol>' }, |
{ fragment: true, unchanged: '<ul>\n <li>\n <span class="octicon octicon-person"></span>\n <a href="/contact/">Kontakt</a>\n </li>\n</ul>' }, |
{ fragment: true, unchanged: '<div class="searchform"><input type="text" value="" name="s" id="s" /><input type="submit" id="searchsubmit" value="Search" /></div>' }, |
{ fragment: true, unchanged: '<div class="searchform"><input type="text" value="" name="s" id="s"><input type="submit" id="searchsubmit" value="Search"></div>' }, |
{ fragment: true, unchanged: '<p>\n <a href="/test/"><img src="test.jpg" /></a>\n</p>' }, |
{ fragment: true, unchanged: '<p>\n <a href="/test/"><img src="test.jpg" /></a><a href="/test/"><img src="test.jpg" /></a>\n</p>' }, |
{ fragment: true, unchanged: '<p>\n <a href="/test/"><img src="test.jpg" /></a><a href="/test/"><img src="test.jpg" /></a><a href="/test/"><img src="test.jpg" /></a><a href="/test/"><img src="test.jpg" /></a>\n</p>' }, |
{ fragment: true, unchanged: '<p>\n <span>image: <img src="test.jpg" /></span><span>image: <img src="test.jpg" /></span>\n</p>' }, |
{ fragment: true, unchanged: '<p>\n <strong>image: <img src="test.jpg" /></strong><strong>image: <img src="test.jpg" /></strong>\n</p>' }, |
] |
}, { |
name: "File starting with comment", |
description: "Unformatted tag behavior", |
options: [], |
tests: [{ |
fragment: true, |
unchanged: [ |
'<!--sample comment -->', |
'', |
'<html>', |
'<body>', |
' <span>a span</span>', |
'</body>', |
'', |
'</html>' |
] |
}, ] |
}, { |
name: "Php formatting", |
description: "Php (<?php ... ?>) treated as comments.", |
options: [], |
tests: [{ |
fragment: true, |
input: '<h1 class="content-page-header"><?=$view["name"]; ?></h1>', |
output: '<h1 class="content-page-header">\n <?=$view["name"]; ?>\n</h1>', |
}, { |
fragment: true, |
unchanged: [ |
'<?php', |
'for($i = 1; $i <= 100; $i++;) {', |
' #count to 100!', |
' echo($i . "</br>");', |
'}', |
'?>' |
] |
}, { |
fragment: true, |
unchanged: [ |
'<?php ?>', |
'<!DOCTYPE html>', |
'', |
'<html>', |
'', |
'<head></head>', |
'', |
'<body></body>', |
'', |
'</html>' |
] |
}] |
}, { |
name: "Support simple language specific option inheritance/overriding", |
description: "Support simple language specific option inheritance/overriding", |
matrix: [{ |
options: [ |
{ name: "js", value: "{ 'indent_size': 3 }" }, |
{ name: "css", value: "{ 'indent_size': 5 }" } |
], |
h: ' ', |
c: ' ', |
j: ' ' |
}, |
{ |
options: [ |
{ name: "html", value: "{ 'js': { 'indent_size': 3 }, 'css': { 'indent_size': 5 } }" } |
], |
h: ' ', |
c: ' ', |
j: ' ' |
}, |
{ |
options: [ |
{ name: "indent_size", value: "9" }, |
{ name: "html", value: "{ 'js': { 'indent_size': 3 }, 'css': { 'indent_size': 5 }, 'indent_size': 2}" }, |
{ name: "js", value: "{ 'indent_size': 5 }" }, |
{ name: "css", value: "{ 'indent_size': 3 }" } |
], |
h: ' ', |
c: ' ', |
j: ' ' |
} |
], |
tests: [{ |
fragment: true, |
unchanged: [ |
'<head>', |
'{{h}}<script>', |
'{{h}}{{h}}if (a == b) {', |
'{{h}}{{h}}{{j}}test();', |
'{{h}}{{h}}}', |
'{{h}}</script>', |
'{{h}}<style>', |
'{{h}}{{h}}.selector {', |
'{{h}}{{h}}{{c}}font-size: 12px;', |
'{{h}}{{h}}}', |
'{{h}}</style>', |
'</head>', |
] |
}, ] |
}, { |
name: "underscore.js formatting", |
description: "underscore.js templates (<% ... %>) treated as comments.", |
options: [], |
tests: [{ |
fragment: true, |
unchanged: [ |
'<div class="col-sm-9">', |
' <textarea id="notes" class="form-control" rows="3">', |
' <%= notes %>', |
' </textarea>', |
'</div>' |
] |
}, ] |
}, { |
name: "Indent with tabs", |
description: "Use one tab instead of several spaces for indentation", |
template: "^^^ $$$", |
options: [ |
{ name: "indent_with_tabs", value: "true" } |
], |
tests: [{ |
fragment: true, |
input_: '<div>\n' + |
'<div>\n' + |
'</div>\n' + |
'</div>', |
output: '<div>\n' + |
'\t<div>\n' + |
'\t</div>\n' + |
'</div>' |
}] |
}, { |
name: "Indent without tabs", |
description: "Use several spaces for indentation", |
template: "^^^ $$$", |
options: [ |
{ name: "indent_with_tabs", value: "false" } |
], |
tests: [{ |
fragment: true, |
input_: '<div>\n' + |
'<div>\n' + |
'</div>\n' + |
'</div>', |
output: '<div>\n' + |
' <div>\n' + |
' </div>\n' + |
'</div>' |
}] |
}, { |
name: "Indent body inner html by default", |
description: "", |
tests: [{ |
fragment: true, |
input: '<html>\n<body>\n<div></div>\n</body>\n\n</html>', |
output: '<html>\n<body>\n <div></div>\n</body>\n\n</html>' |
}] |
}, { |
name: "indent_body_inner_html set to false prevents indent of body inner html", |
description: "", |
options: [ |
{ name: 'indent_body_inner_html', value: "false" } |
], |
tests: [{ |
fragment: true, |
unchanged: '<html>\n<body>\n<div></div>\n</body>\n\n</html>' |
}] |
}, { |
name: "Indent head inner html by default", |
description: "", |
tests: [{ |
fragment: true, |
input: '<html>\n\n<head>\n<meta>\n</head>\n\n</html>', |
output: '<html>\n\n<head>\n <meta>\n</head>\n\n</html>' |
}] |
}, { |
name: "indent_head_inner_html set to false prevents indent of head inner html", |
description: "", |
options: [ |
{ name: 'indent_head_inner_html', value: "false" } |
], |
tests: [{ |
fragment: true, |
unchanged: '<html>\n\n<head>\n<meta>\n</head>\n\n</html>' |
}] |
}, { |
name: "content_unformatted to prevent formatting content", |
description: "", |
options: [ |
{ name: 'content_unformatted', value: "['script', 'style', 'p', 'span', 'br']" } |
], |
tests: [{ |
fragment: true, |
input: '<html><body><h1>A</h1><script>if(1){f();}</script><style>.a{display:none;}</style></body></html>', |
output: [ |
'<html>', |
'<body>', |
' <h1>A</h1>', |
' <script>if(1){f();}</script>', |
' <style>.a{display:none;}</style>', |
'</body>', |
'', |
'</html>' |
] |
}, { |
fragment: true, |
input: '<div><p>Beautify me</p></div><p><p>But not me</p></p>', |
output: [ |
'<div>', |
' <p>Beautify me</p>', |
'</div>', |
'<p><p>But not me</p></p>' |
] |
}, { |
fragment: true, |
input: '<div><p\n class="beauty-me"\n>Beautify me</p></div><p><p\n class="iamalreadybeauty"\n>But not me</p></p>', |
output: [ |
'<div>', |
' <p class="beauty-me">Beautify me</p>', |
'</div>', |
'<p><p', |
' class="iamalreadybeauty"', |
'>But not me</p></p>' |
] |
}, { |
fragment: true, |
unchanged: '<div><span>blabla<div>something here</div></span></div>' |
}, { |
fragment: true, |
unchanged: '<div><br /></div>' |
}, { |
fragment: true, |
input: '<div><pre>var a=1;\nvar b=a;</pre></div>', |
output: [ |
'<div>', |
' <pre>var a=1; var b=a;</pre>', |
'</div>' |
] |
}, { |
fragment: true, |
input: '<div><pre>\nvar a=1;\nvar b=a;\n</pre></div>', |
output: [ |
'<div>', |
' <pre>', |
' var a=1; var b=a;', |
' </pre>', |
'</div>' |
] |
}] |
}, { |
name: "default content_unformatted", |
description: "", |
options: [], |
tests: [{ |
fragment: true, |
input: '<html><body><h1>A</h1><script>if(1){f();}</script><style>.a{display:none;}</style></body></html>', |
output: [ |
'<html>', |
'<body>', |
' <h1>A</h1>', |
' <script>', |
' if (1) {', |
' f();', |
' }', |
' </script>', |
' <style>', |
' .a {', |
' display: none;', |
' }', |
' </style>', |
'</body>', |
'', |
'</html>' |
] |
}, { |
fragment: true, |
input: '<div><p>Beautify me</p></div><p><p>But not me</p></p>', |
output: [ |
'<div>', |
' <p>Beautify me</p>', |
'</div>', |
'<p>', |
' <p>But not me</p>', |
'</p>', |
] |
}, { |
fragment: true, |
input: '<div><p\n class="beauty-me"\n>Beautify me</p></div><p><p\n class="iamalreadybeauty"\n>But not me</p></p>', |
output: [ |
'<div>', |
' <p class="beauty-me">Beautify me</p>', |
'</div>', |
'<p>', |
' <p class="iamalreadybeauty">But not me</p>', |
'</p>' |
] |
}, { |
fragment: true, |
unchanged: '<div><span>blabla<div>something here</div></span></div>' |
}, { |
fragment: true, |
unchanged: '<div><br /></div>' |
}, { |
fragment: true, |
input: '<div><pre>var a=1;\nvar b=a;</pre></div>', |
output: [ |
'<div>', |
' <pre>var a=1;', |
'var b=a;</pre>', |
'</div>' |
] |
}, { |
fragment: true, |
input: '<div><pre>\nvar a=1;\nvar b=a;\n</pre></div>', |
output: [ |
'<div>', |
' <pre>', |
'var a=1;', |
'var b=a;', |
'</pre>', |
'</div>' |
] |
}] |
}, { |
name: "New Test Suite" |
}], |
}; |