mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-10-31 13:17:26 +00:00 
			
		
		
		
	Adjust CSS file handling by generators.
This commit is contained in:
		| @@ -1,32 +1,40 @@ | ||||
| /** | ||||
| HTML resume generator for FluentCV. | ||||
| @license Copyright (c) 2015 by James M. Devlin. All rights reserved. | ||||
| @license Copyright (c) 2015 James M. Devlin / FluentDesk | ||||
| */ | ||||
|  | ||||
| var TemplateGenerator = require('./template-generator'); | ||||
| var FS = require('fs-extra'); | ||||
| var HTML = require( 'html' ); | ||||
| (function() { | ||||
|  | ||||
| var HtmlGenerator = module.exports = TemplateGenerator.extend({ | ||||
|   var TemplateGenerator = require('./template-generator') | ||||
|     , FS = require('fs-extra') | ||||
|     , HTML = require( 'html' ) | ||||
|     , PATH = require('path'); | ||||
|  | ||||
|   init: function() { | ||||
|     this._super( 'html' ); | ||||
|   }, | ||||
|   var HtmlGenerator = module.exports = TemplateGenerator.extend({ | ||||
|  | ||||
|   /** | ||||
|   Generate an HTML resume with optional pretty printing. | ||||
|   */ | ||||
|   onBeforeSave: function( mk, theme, outputFile ) { | ||||
|     var themeFile = theme.getFormat('html').path; | ||||
|     var cssSrc = themeFile.replace( /.html$/g, '.css' ); | ||||
|     var cssDst = outputFile.replace( /.html$/g, '.css' ); | ||||
|     var that = this; | ||||
|     FS.copySync( cssSrc, cssDst, { clobber: true }, function( e ) { | ||||
|       throw { fluenterror: that.codes.copyCss, data: [cssSrc,cssDst] }; | ||||
|     }); | ||||
|     init: function() { | ||||
|       this._super( 'html' ); | ||||
|     }, | ||||
|  | ||||
|     return this.opts.prettify ? | ||||
|       HTML.prettyPrint( mk, this.opts.prettify ) : mk; | ||||
|   } | ||||
|     /** | ||||
|     Copy satellite CSS files to the destination and optionally pretty-print | ||||
|     the HTML resume prior to saving. | ||||
|     */ | ||||
|     onBeforeSave: function( info ) { | ||||
|       var cssSrc = PATH.join( info.theme.folder, 'templates', '*.css' ) | ||||
|         , outFolder = PATH.parse( info.outputFile ).dir, that = this; | ||||
|  | ||||
| }); | ||||
|       info.theme.cssFiles.forEach( function( f ) { | ||||
|         var fi = PATH.parse( f[1].path ); | ||||
|         FS.copySync( f[1].path, PATH.join( outFolder, fi.base ), { clobber: true }, function( e ) { | ||||
|           throw { fluenterror: that.codes.copyCss, data: [cssSrc,cssDst] }; | ||||
|         }); | ||||
|       }); | ||||
|  | ||||
|       return this.opts.prettify ? | ||||
|         HTML.prettyPrint( info.mk, this.opts.prettify ) : info.mk; | ||||
|     } | ||||
|  | ||||
|   }); | ||||
|  | ||||
| }()); | ||||
|   | ||||
| @@ -1,74 +1,71 @@ | ||||
| /** | ||||
| HTML-based PDF resume generator for FluentCV. | ||||
| @license Copyright (c) 2015 by James M. Devlin. All rights reserved. | ||||
| Definition of the HtmlPdfGenerator class. | ||||
| @license Copyright (c) 2015 James M. Devlin / FluentDesk | ||||
| */ | ||||
|  | ||||
| var TemplateGenerator = require('./template-generator'); | ||||
| var FS = require('fs-extra'); | ||||
| var HTML = require( 'html' ); | ||||
| (function() { | ||||
|  | ||||
| var HtmlPdfGenerator = module.exports = TemplateGenerator.extend({ | ||||
|  | ||||
|   init: function() { | ||||
|     this._super( 'pdf', 'html' ); | ||||
|   }, | ||||
|   var TemplateGenerator = require('./template-generator') | ||||
|     , FS = require('fs-extra') | ||||
|     , HTML = require( 'html' ); | ||||
|  | ||||
|   /** | ||||
|   Generate an HTML resume with optional pretty printing. | ||||
|   TODO: Avoid copying the CSS file to dest if we don't need to. | ||||
|   An HTML-based PDF resume generator for FluentCV. | ||||
|   */ | ||||
|   onBeforeSave: function( mk, themeFile, outputFile ) { | ||||
|     // var cssSrc = themeFile.replace( /pdf\.html$/gi, 'html.css' ); | ||||
|     // var cssDst = outputFile.replace( /\.pdf$/gi, '.css' ); | ||||
|     // var that = this; | ||||
|     // FS.copySync( cssSrc, cssDst, { clobber: true }, function( e ) { | ||||
|     //   if( e ) that.err( "Couldn't copy CSS file to destination: " + e); | ||||
|     // }); | ||||
|     // return true ? | ||||
|     //   HTML.prettyPrint( mk, { indent_size: 2 } ) : mk; | ||||
|   var HtmlPdfGenerator = module.exports = TemplateGenerator.extend({ | ||||
|  | ||||
|     pdf(mk, outputFile); | ||||
|     return mk; | ||||
|   } | ||||
|     init: function() { | ||||
|       this._super( 'pdf', 'html' ); | ||||
|     }, | ||||
|  | ||||
| }); | ||||
|  | ||||
| /** | ||||
| Generate a PDF from HTML. | ||||
| */ | ||||
| function pdf( markup, fOut ) { | ||||
|  | ||||
|   var pdfCount = 0; | ||||
|   if( false ) { //( _opts.pdf === 'phantom' || _opts.pdf == 'all' ) { | ||||
|     pdfCount++; | ||||
|     require('phantom').create( function( ph ) { | ||||
|       ph.createPage( function( page ) { | ||||
|         page.setContent( markup ); | ||||
|         page.set('paperSize', { | ||||
|           format: 'A4', | ||||
|           orientation: 'portrait', | ||||
|           margin: '1cm' | ||||
|         }); | ||||
|         page.set("viewportSize", { | ||||
|           width: 1024, // TODO: option-ify | ||||
|           height: 768 // TODO: Use "A" sizes | ||||
|         }); | ||||
|         page.set('onLoadFinished', function(success) { | ||||
|           page.render( fOut ); | ||||
|           pdfCount++; | ||||
|           ph.exit(); | ||||
|         }); | ||||
|       }, | ||||
|       { dnodeOpts: {  weak: false   } } ); | ||||
|     }); | ||||
|   } | ||||
|   if( true ) { // _opts.pdf === 'wkhtmltopdf' || _opts.pdf == 'all' ) { | ||||
|     var fOut2 = fOut; | ||||
|     if( pdfCount == 1 ) { | ||||
|       fOut2 = fOut2.replace(/\.pdf$/g, '.b.pdf'); | ||||
|     /** | ||||
|     Generate the binary PDF. | ||||
|     */ | ||||
|     onBeforeSave: function( info ) { | ||||
|       pdf(info.mk, info.outputFile); | ||||
|       return mk; | ||||
|     } | ||||
|     require('wkhtmltopdf')( markup, { pageSize: 'letter' } ) | ||||
|       .pipe( FS.createWriteStream( fOut2 ) ); | ||||
|  | ||||
|   }); | ||||
|  | ||||
|   /** | ||||
|   Generate a PDF from HTML. | ||||
|   */ | ||||
|   function pdf( markup, fOut ) { | ||||
|  | ||||
|     var pdfCount = 0; | ||||
|     if( false ) { //( _opts.pdf === 'phantom' || _opts.pdf == 'all' ) { | ||||
|       pdfCount++; | ||||
|       require('phantom').create( function( ph ) { | ||||
|         ph.createPage( function( page ) { | ||||
|           page.setContent( markup ); | ||||
|           page.set('paperSize', { | ||||
|             format: 'A4', | ||||
|             orientation: 'portrait', | ||||
|             margin: '1cm' | ||||
|           }); | ||||
|           page.set("viewportSize", { | ||||
|             width: 1024, // TODO: option-ify | ||||
|             height: 768 // TODO: Use "A" sizes | ||||
|           }); | ||||
|           page.set('onLoadFinished', function(success) { | ||||
|             page.render( fOut ); | ||||
|             pdfCount++; | ||||
|             ph.exit(); | ||||
|           }); | ||||
|         }, | ||||
|         { dnodeOpts: {  weak: false   } } ); | ||||
|       }); | ||||
|     } | ||||
|     if( true ) { // _opts.pdf === 'wkhtmltopdf' || _opts.pdf == 'all' ) { | ||||
|       var fOut2 = fOut; | ||||
|       if( pdfCount == 1 ) { | ||||
|         fOut2 = fOut2.replace(/\.pdf$/g, '.b.pdf'); | ||||
|       } | ||||
|       require('wkhtmltopdf')( markup, { pageSize: 'letter' } ) | ||||
|         .pipe( FS.createWriteStream( fOut2 ) ); | ||||
|         pdfCount++; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| }()); | ||||
|   | ||||
| @@ -89,11 +89,11 @@ var TemplateGenerator = module.exports = BaseGenerator.extend({ | ||||
|     // Load theme and CSS data | ||||
|     var tplFolder = PATH.join( tFolder, 'templates' ); | ||||
|     var curFmt = theme.getFormat( this.format ); | ||||
|     var ctx = { file: curFmt.css ? curFmt.cssPath : null, data: curFmt.css || null }; | ||||
|     var cssInfo = { file: curFmt.css ? curFmt.cssPath : null, data: curFmt.css || null }; | ||||
|  | ||||
|     // Compile and invoke the template! | ||||
|     var mk = this.single( rez, curFmt.data, this.format, ctx, opts ); | ||||
|     this.onBeforeSave && (mk = this.onBeforeSave( mk, theme, f )); | ||||
|     var mk = this.single( rez, curFmt.data, this.format, cssInfo, opts ); | ||||
|     this.onBeforeSave && (mk = this.onBeforeSave( { mk: mk, theme: theme, outputFile: f } )); | ||||
|     FS.writeFileSync( f, mk, { encoding: 'utf8', flags: 'w' } ); | ||||
|  | ||||
|   }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user