Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AnastasiaDunbar/47963e596fa93aedec092b241f1509db to your computer and use it in GitHub Desktop.
Save AnastasiaDunbar/47963e596fa93aedec092b241f1509db to your computer and use it in GitHub Desktop.
`[kanji]{kana}` furigana syntax to HTML <ruby> markup, would've been nice as a Markdown extension.
(string=>{
string=string.replace(/(\[[^\]]+\]{[^{]+})+/g,x=>"<ruby>"+x+"</ruby>");
var multiReplace=(s,o)=>{
for(var key in o){ //What if there were collisions (replacing what's already been replaced)?
s=s.replace(key,o[key]);
}
return s;
},matches=[...string.matchAll(/\[[^\]]+\]{[^{]+}/g)],iShift=0;
for(var i=0;i<matches.length;i++){
var index=matches[i].index,length=matches[i][0].length,
newStr=multiReplace(string.substring(iShift+index,iShift+index+length),{"[":"<rb>","]":"</rb>","{":"<rt>","}":"</rt>"});
string=string.substring(0,iShift+index)+newStr+string.substring(iShift+index+length);
iShift+=newStr.length-length;
}
return string;
})("これは[日]{に}[本]{ほん}[語]{ご}です。"); //'これは<ruby><rb>日</rb><rt>に</rt><rb>本</rb><rt>ほん</rt><rb>語</rb><rt>ご</rt></ruby>です。'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment