Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed
https://markdown-it.github.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
#!/usr/bin/env node
|
|
|
|
//
|
|
// Markdown entities generator (from html5 entities)
|
|
//
|
|
'use strict';
|
|
|
|
/*eslint no-console:0*/
|
|
|
|
|
|
var http = require('http');
|
|
|
|
function codeToUni(code) {
|
|
var result = code.toString(16).toUpperCase();
|
|
while (result.length < 4) { result = '0' + result; }
|
|
return '\\u' + result;
|
|
}
|
|
|
|
function strToUni(str) {
|
|
var result = codeToUni(str.charCodeAt(0));
|
|
if (str.length > 1) {
|
|
result += codeToUni(str.charCodeAt(1));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
http.get('http://www.w3.org/TR/html5/entities.json', function (res) {
|
|
var body = '';
|
|
res.on('data', function(chunk) {
|
|
body += chunk;
|
|
});
|
|
res.on('end', function() {
|
|
var entities = JSON.parse(body);
|
|
var out = {};
|
|
|
|
Object.keys(entities).forEach(function (entity) {
|
|
// Skip legacy - not allosed in markdown
|
|
if (entity[entity.length - 1] !== ';') { return; }
|
|
|
|
out[entity.slice(1, -1)] = strToUni(entities[entity].characters);
|
|
});
|
|
|
|
var result = [];
|
|
|
|
Object.keys(out).forEach(function (key) {
|
|
result.push(' "' + key + '":"' + out[key] + '"');
|
|
});
|
|
|
|
console.log('{\n' + result.join(',\n') + '\n}');
|
|
});
|
|
});
|
|
|