Hexo-scripts-that-I-use/gloss.js

78 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2019-05-16 00:59:20 +08:00
/*
gloss.js - simple interlinear gloss noting.
Author : Yoxem <yoxem.tem98^^^AT^^^nctu.edu.tw>
usage:
{% gloss}
I believe You.
Gua2 siong1-sin3 Li2.
{% endgloss}
*/
2019-05-17 01:10:04 +08:00
hexo.extend.filter.register('after_post_render', (data) => {
2019-05-16 21:45:15 +08:00
var css_content = `
.css-table1{
display: table;
border: none;}
2019-05-16 00:59:20 +08:00
.css-tr1{
2019-05-16 21:45:15 +08:00
display:table-row;
2019-05-16 00:59:20 +08:00
}
2019-05-16 21:45:15 +08:00
2019-05-16 00:59:20 +08:00
.css-td1{
2019-05-16 21:45:15 +08:00
display: table-cell;
padding-right: 1ex;
}`;
2019-05-17 01:10:04 +08:00
2019-05-16 21:45:15 +08:00
var css_rendered = css_content.replace(/([ ]|\t|\n)+/g, " ");
2019-05-16 00:59:20 +08:00
2019-05-17 01:10:04 +08:00
var link_js = `<script type="text/javascript">
var head = document.getElementsByTagName(\"head\");
var link_css = document.createElement('style');
link_css.setAttribute('type', 'text/css');
link_css.innerHTML = '${css_rendered}';
document.getElementsByTagName('head')[0].appendChild(link_css);</script>`;
2019-05-16 00:59:20 +08:00
2019-05-17 01:10:04 +08:00
var link_js_rendered = link_js.replace(/(\t|\n)+/g, " ").replace(//g, "'");
2019-05-16 00:59:20 +08:00
2019-05-17 01:10:04 +08:00
data.content += link_js_rendered;
2019-05-16 00:59:20 +08:00
return data;
});
2019-05-16 01:27:47 +08:00
2019-05-16 00:59:20 +08:00
hexo.extend.tag.register('gloss', function(args, content){
2019-05-16 01:27:47 +08:00
2019-05-16 00:59:20 +08:00
var content2dArray = [];
var contentSplitted = content.split("\n");
var content2dArrayMaxLen = 0;
for (var i=0; i < contentSplitted.length; i++){
var SplittedInsideALine = contentSplitted[i].split(/\s+/);
content2dArray.push(SplittedInsideALine);
}
var render_result = "";
for (var i=0; i<content2dArray.length; i++){
var line_result = "<div class=\"css-tr1\">";
for (var j=0; j<content2dArray[i].length; j++){
line_result += ("<div class=\"css-td1\">" + content2dArray[i][j] + "</div>");
}
2019-05-16 01:27:47 +08:00
line_result += "</div>";
2019-05-16 00:59:20 +08:00
render_result += line_result;
}
2019-05-16 01:27:47 +08:00
return "<div class='css-table1'>" + render_result + "</div></div></div>" },
2019-05-16 00:59:20 +08:00
{ends: true});