let CleanCSS = require('@ndcode/clean-css')
let assert = require('assert')
+let html_entities = require('html-entities')
let html_minifier = require('@ndcode/html-minifier')
+let node_stringify = require('node-stringify')
let uglify_es = require('uglify-es')
let clean_css = new CleanCSS({format: 'beautify'})
+let xml_entities = new html_entities.XmlEntities()
let jstize = (text, options) => {
options = Object.assign(
let suffix = ''
for (let i = 0; i < attrs.length; ++i) {
if (attrs[i].name == 'class') {
- let fields = attrs[i].value.split(' ')
+ let fields = xml_entities.decode(attrs[i].value).split(' ')
for (let j = 0; j < fields.length; ++j)
out = out.replace(
/([.#])([^.#]*-[0-9]*)$/,
- (match, sep, name) => `${sep}'${name}'`
+ (match, sep, name) => sep + node_stringify(name)
) + '.' + fields[j]
}
else if (attrs[i].name == 'id') {
- let fields = attrs[i].value.split(' ')
+ let fields = xml_entities.decode(attrs[i].value).split(' ')
for (let j = 0; j < fields.length; ++j)
out += '#' + fields[j]
}
else {
out1 += prefix + attrs[i].name
if (attrs[i].value !== undefined)
- out1 += `="${attrs[i].value}"`
+ out1 +=
+ '=' + JSON.stringify(xml_entities.decode(attrs[i].value))
prefix = ' '
suffix = ')'
}
buffer.push(
' '.repeat(indent) +
out.replace(
- /([.#])style$/,
- (match, sep) => `${sep}'style'`
- ).replace(
- /([.#])([^.#]*-style)$/,
- (match, sep, name) => `${sep}'${name}'`
+ /([.#])(([^.#]*-)?style)$/,
+ (match, sep, name) => sep + node_stringify(name)
) +
out1 +
suffix +
text,
{
compress: false,
+ mangle: false,
output: {
beautify: true,
indent_level: options.indent,
}
else
//buffer.push(text)
- out = [`'${text}'`]
+ out = [node_stringify(xml_entities.decode(text))]
for (let i = 0; i < out.length; ++i)
buffer.push(' '.repeat(indent) + out[i] + '\n')
},