-
Notifications
You must be signed in to change notification settings - Fork 0
/
browser.js
34 lines (31 loc) · 913 Bytes
/
browser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const styles = require('./inject.styl')
const inject = require('./inject.js')
const { parse, generate } = require('./parser.js')
const { PSEUDO_CODE, INJECT_FLAG, pseudonymize } = require('./def')
const parsers = {}
function pseudoCode(elements, options = {}) {
if (elements.length) {
let style = document.head.querySelector(`style[${PSEUDO_CODE}]`)
if (!style) {
style = pseudonymize(document.createElement('style'))
document.head.appendChild(style)
}
style.innerHTML = styles
}
for (const el of elements) {
const nodes = parse(el.textContent)
const html = generate(nodes)
pseudonymize(el)
parsers[el[PSEUDO_CODE]] = nodes
el.innerHTML = html
}
if (!window[INJECT_FLAG]) {
inject({ parsers, options })
window[INJECT_FLAG] = true
}
}
if (typeof window === 'object') {
window.pseudoCode = pseudoCode
} else {
module.exports = pseudoCode
}