mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-25 01:40:10 +00:00
Support basic Markdown in MS Word docs.
This commit is contained in:
parent
ae9c295ce1
commit
5475b081b1
@ -9,6 +9,8 @@ Handlebars template generate for FluentCV.
|
|||||||
var HANDLEBARS = require('handlebars');
|
var HANDLEBARS = require('handlebars');
|
||||||
var FS = require('fs');
|
var FS = require('fs');
|
||||||
var moment = require('moment');
|
var moment = require('moment');
|
||||||
|
var MD = require('marked');
|
||||||
|
var H2W = require('../utils/html-to-wpml');
|
||||||
|
|
||||||
module.exports = function( json, jst, format, cssInfo, opts, theme ) {
|
module.exports = function( json, jst, format, cssInfo, opts, theme ) {
|
||||||
|
|
||||||
@ -27,6 +29,13 @@ Handlebars template generate for FluentCV.
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
HANDLEBARS.registerHelper("wpml", function( txt, inline ) {
|
||||||
|
inline = (inline && !inline.hash) || false;
|
||||||
|
txt = inline ? MD(txt.trim()).replace(/^\s*<p>|<\/p>\s*$/gi, '') : MD(txt.trim());
|
||||||
|
txt = H2W( txt.trim() );
|
||||||
|
return txt;
|
||||||
|
});
|
||||||
|
|
||||||
// http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/
|
// http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/
|
||||||
HANDLEBARS.registerHelper('compare', function(lvalue, rvalue, options) {
|
HANDLEBARS.registerHelper('compare', function(lvalue, rvalue, options) {
|
||||||
|
|
||||||
|
@ -3,11 +3,16 @@ MS Word resume generator for FluentCV.
|
|||||||
@license Copyright (c) 2015 by James M. Devlin. All rights reserved.
|
@license Copyright (c) 2015 by James M. Devlin. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var TemplateGenerator = require('./template-generator');
|
(function() {
|
||||||
var WordGenerator = module.exports = TemplateGenerator.extend({
|
|
||||||
|
|
||||||
init: function(){
|
var TemplateGenerator = require('./template-generator');
|
||||||
this._super( 'doc', 'xml' );
|
var WordGenerator = module.exports = TemplateGenerator.extend({
|
||||||
}
|
|
||||||
|
|
||||||
});
|
init: function(){
|
||||||
|
this._super( 'doc', 'xml' );
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
||||||
|
59
src/utils/html-to-wpml.js
Normal file
59
src/utils/html-to-wpml.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
var _ = require('underscore');
|
||||||
|
var HTML5Tokenizer = require('simple-html-tokenizer');
|
||||||
|
|
||||||
|
module.exports = function( html ) {
|
||||||
|
|
||||||
|
var final = '';
|
||||||
|
var is_bold = false, is_italic = false;
|
||||||
|
var depth = 0;
|
||||||
|
|
||||||
|
var tokens = HTML5Tokenizer.tokenize( html );
|
||||||
|
_.each( tokens, function( tok ) {
|
||||||
|
switch( tok.type ) {
|
||||||
|
case 'StartTag':
|
||||||
|
switch( tok.tagName ) {
|
||||||
|
case 'p':
|
||||||
|
final += '<w:p>';
|
||||||
|
break;
|
||||||
|
case 'strong':
|
||||||
|
is_bold = true;
|
||||||
|
break;
|
||||||
|
case 'em':
|
||||||
|
is_italic = true;
|
||||||
|
break;
|
||||||
|
case 'a':
|
||||||
|
is_link = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'EndTag':
|
||||||
|
switch( tok.tagName ) {
|
||||||
|
case 'p':
|
||||||
|
final += '</w:p>';
|
||||||
|
break;
|
||||||
|
case 'strong':
|
||||||
|
is_bold = false;
|
||||||
|
break;
|
||||||
|
case 'em':
|
||||||
|
is_italic = false;
|
||||||
|
break;
|
||||||
|
case 'a':
|
||||||
|
is_link = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'Chars':
|
||||||
|
var style = is_bold ? '<w:b/>' : '';
|
||||||
|
style += is_italic ? '<w:i/>': '';
|
||||||
|
final += '<w:r><w:rPr>' + style + '</w:rPr><w:t>' + tok.chars + '</w:t></w:r>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return final;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}());
|
Loading…
Reference in New Issue
Block a user