| 16 | } |
| 17 | |
| 18 | function process(uri, callback) { |
| 19 | var entities = []; |
| 20 | get(uri, function (content) { |
| 21 | var lines = content.split('\n'); |
| 22 | lines.forEach(function (line) { |
| 23 | var name, code; |
| 24 | if (line.indexOf('<!ENTITY') !== 0) { |
| 25 | return; |
| 26 | } |
| 27 | name = /<!ENTITY\s([a-zA-Z0-4]+)/g.exec(line)[1]; |
| 28 | code = /"&#x([0-9A-Fa-f]+);/g.exec(line); |
| 29 | if (code === null) { |
| 30 | code = /"&#([0-9]+);/g.exec(line); |
| 31 | code = parseInt(code[1], 10); |
| 32 | entities.push({ name: name, code: code }); |
| 33 | } else { |
| 34 | code = parseInt(code[1], 16); |
| 35 | entities.push({ name: name, code: code }); |
| 36 | } |
| 37 | }); |
| 38 | callback(entities); |
| 39 | }); |
| 40 | } |
| 41 | |
| 42 | function collect(callback) { |
| 43 | var entities = []; |