mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-22 08:20:11 +00:00
Support Markdown-driven hyperlinks in MS Word.
This commit is contained in:
parent
d0c181ee8c
commit
78c5081a29
@ -11,49 +11,49 @@ Definition of the Markdown to WordProcessingML conversion routine.
|
|||||||
|
|
||||||
module.exports = function( html ) {
|
module.exports = function( html ) {
|
||||||
|
|
||||||
var final = '';
|
// Tokenize the HTML stream.
|
||||||
var is_bold = false, is_italic = false, is_link = false;
|
|
||||||
var depth = 0;
|
|
||||||
|
|
||||||
var tokens = HTML5Tokenizer.tokenize( html );
|
var tokens = HTML5Tokenizer.tokenize( html );
|
||||||
|
|
||||||
|
var final = '', is_bold, is_italic, is_link, link_url;
|
||||||
|
|
||||||
|
// Process <em>, <strong>, and <a> elements in the HTML stream, producing
|
||||||
|
// equivalent WordProcessingML that can be dumped into a <w:p> or other
|
||||||
|
// text container element.
|
||||||
_.each( tokens, function( tok ) {
|
_.each( tokens, function( tok ) {
|
||||||
|
|
||||||
switch( tok.type ) {
|
switch( tok.type ) {
|
||||||
|
|
||||||
case 'StartTag':
|
case 'StartTag':
|
||||||
switch( tok.tagName ) {
|
switch( tok.tagName ) {
|
||||||
case 'p':
|
case 'p': final += '<w:p>'; break;
|
||||||
final += '<w:p>';
|
case 'strong': is_bold = true; break;
|
||||||
break;
|
case 'em': is_italic = true; break;
|
||||||
case 'strong':
|
|
||||||
is_bold = true;
|
|
||||||
break;
|
|
||||||
case 'em':
|
|
||||||
is_italic = true;
|
|
||||||
break;
|
|
||||||
case 'a':
|
case 'a':
|
||||||
is_link = true;
|
is_link = true;
|
||||||
|
link_url = tok.attributes.filter(function(attr){
|
||||||
|
return attr[0] === 'href'; }
|
||||||
|
)[0][1];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'EndTag':
|
case 'EndTag':
|
||||||
switch( tok.tagName ) {
|
switch( tok.tagName ) {
|
||||||
case 'p':
|
case 'p': final += '</w:p>'; break;
|
||||||
final += '</w:p>';
|
case 'strong': is_bold = false; break;
|
||||||
break;
|
case 'em': is_italic = false; break;
|
||||||
case 'strong':
|
case 'a': is_link = false; break;
|
||||||
is_bold = false;
|
|
||||||
break;
|
|
||||||
case 'em':
|
|
||||||
is_italic = false;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
is_link = false;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'Chars':
|
case 'Chars':
|
||||||
var style = is_bold ? '<w:b/>' : '';
|
var style = is_bold ? '<w:b/>' : '';
|
||||||
style += is_italic ? '<w:i/>': '';
|
style += is_italic ? '<w:i/>': '';
|
||||||
final += '<w:r><w:rPr>' + style + '</w:rPr><w:t>' + tok.chars + '</w:t></w:r>';
|
style += is_link ? '<w:rStyle w:val="Hyperlink"/>' : '';
|
||||||
|
final +=
|
||||||
|
(is_link ? ('<w:hlink w:dest="' + link_url + '">') : '') +
|
||||||
|
'<w:r><w:rPr>' + style + '</w:rPr><w:t>' + tok.chars +
|
||||||
|
'</w:t></w:r>' + (is_link ? '</w:hlink>' : '');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user