1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-27 10:32:58 +02:00
joplin/packages/fork-sax/test/xml-internal-entities.js
2020-11-05 16:58:23 +00:00

93 lines
1.8 KiB
JavaScript

var iExpect = []
var myAttributes = {}
var ENTITIES = {}
// generates xml like test0="&control;"
var entitiesToTest = {
// 'ENTITY_NAME': IS_VALID || [invalidCharPos, invalidChar],
'control0': true, // This is a vanilla control.
// entityStart
'_uscore': true,
'#hash': true,
':colon': true,
'-bad': [0, '-'],
'.bad': [0, '.'],
// general entity
'u_score': true,
'd-ash': true,
'd.ot': true,
'all:_#-.': true
}
var xmlStart = '<a test="&amp;" '
var xmlEnd = '/>'
iExpect.push([
'opentagstart',
{
name: 'a',
attributes: {}
}
])
iExpect.push([
'attribute',
{
name: 'test',
value: '&'
}
])
myAttributes['test'] = '&'
var entI = 0
for (var entity in entitiesToTest) {
var attribName = 'test' + entI
var attribValue = 'Testing ' + entity
// add the first part to use in calculation below
xmlStart += attribName + '="' + '&'
if (typeof entitiesToTest[entity] === 'object') {
iExpect.push([
'error',
'Invalid character in entity name\nLine: 0\nColumn: ' +
(xmlStart.length + entitiesToTest[entity][0] + 1) +
'\nChar: ' + entitiesToTest[entity][1]
])
iExpect.push([
'attribute',
{ name: attribName, value: '&' + entity + ';' }
])
myAttributes[attribName] = '&' + entity + ';'
} else {
ENTITIES[entity] = attribValue
iExpect.push(['attribute', { name: attribName, value: attribValue }])
myAttributes[attribName] = attribValue
}
xmlStart += entity + ';" '
entI++
}
iExpect.push([
'opentag',
{
name: 'a',
attributes: myAttributes,
isSelfClosing: true
}
])
iExpect.push([ 'closetag', 'a' ])
var parser = require(__dirname).test({
strict: true,
expect: iExpect
})
for (entity in entitiesToTest) {
parser.ENTITIES[entity] = ENTITIES[entity]
}
parser.write(xmlStart + xmlEnd).close()