mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-10-31 13:17:26 +00:00 
			
		
		
		
	Improve Underscore.js rendering support.
This commit is contained in:
		
							
								
								
									
										34
									
								
								src/helpers/underscore-helpers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/helpers/underscore-helpers.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| /** | ||||
| Template helper definitions for Underscore. | ||||
| @license MIT. Copyright (c) 2016 hacksalot (https://github.com/hacksalot) | ||||
| @module handlebars-helpers.js | ||||
| */ | ||||
|  | ||||
|  | ||||
| (function() { | ||||
|  | ||||
|   var HANDLEBARS = require('handlebars') | ||||
|   , _ = require('underscore') | ||||
|   , helpers = require('./generic-helpers'); | ||||
|  | ||||
|   /** | ||||
|   Register useful Underscore helpers. | ||||
|   @method registerHelpers | ||||
|   */ | ||||
|   module.exports = function( theme, opts, cssInfo, ctx, eng ) { | ||||
|  | ||||
|     helpers.theme = theme; | ||||
|     helpers.opts = opts; | ||||
|     helpers.cssInfo = cssInfo; | ||||
|     helpers.engine = eng; | ||||
|     ctx.h = helpers; | ||||
|  | ||||
|     _.each( helpers, function( hVal, hKey ) { | ||||
|       if( _.isFunction( hVal )) { | ||||
|         _.bind( hVal, ctx ); | ||||
|       } | ||||
|     }, this); | ||||
|  | ||||
|   }; | ||||
|  | ||||
| }()); | ||||
| @@ -8,7 +8,9 @@ Definition of the UnderscoreGenerator class. | ||||
|  | ||||
|  | ||||
|  | ||||
|   var _ = require('underscore'); | ||||
|   var _ = require('underscore') | ||||
|     , registerHelpers = require('../helpers/underscore-helpers') | ||||
|     , HMSTATUS = require('../core/status-codes'); | ||||
|  | ||||
|  | ||||
|   /** | ||||
| @@ -17,6 +19,23 @@ Definition of the UnderscoreGenerator class. | ||||
|   */ | ||||
|   var UnderscoreGenerator = module.exports = { | ||||
|  | ||||
|     generateSimple: function( data, tpl ) { | ||||
|  | ||||
|       try { | ||||
|         // Compile and run the Handlebars template. | ||||
|         var template = _.template( tpl ); | ||||
|         return template( data ); | ||||
|       } | ||||
|       catch( ex ) { | ||||
|         throw { | ||||
|           fluenterror: template ? | ||||
|             HMSTATUS.invokeTemplate : HMSTATUS.compileTemplate, | ||||
|           inner: ex | ||||
|         }; | ||||
|       } | ||||
|  | ||||
|     }, | ||||
|  | ||||
|     generate: function( json, jst, format, cssInfo, opts, theme ) { | ||||
|  | ||||
|       // Tweak underscore's default template delimeters | ||||
| @@ -31,23 +50,20 @@ Definition of the UnderscoreGenerator class. | ||||
|       // Strip {# comments #} | ||||
|       jst = jst.replace( delims.comment, ''); | ||||
|  | ||||
|       var helpers = require('../helpers/generic-helpers'); | ||||
|       helpers.opts = opts; | ||||
|       helpers.cssInfo = cssInfo; | ||||
|  | ||||
|       // Compile and run the template. TODO: avoid unnecessary recompiles. | ||||
|       var compiled = _.template(jst); | ||||
|       var ret = compiled({ | ||||
|       var ctx = { | ||||
|         r: format === 'html' || format === 'pdf' || format === 'png' ? json.markdownify() : json, | ||||
|         filt: opts.filters, | ||||
|         XML: require('xml-escape'), | ||||
|         RAW: json, | ||||
|         cssInfo: cssInfo, | ||||
|         //engine: this, | ||||
|         headFragment: opts.headFragment || '', | ||||
|         opts: opts, | ||||
|         h: helpers | ||||
|       }); | ||||
|       return ret; | ||||
|         opts: opts | ||||
|       }; | ||||
|  | ||||
|       registerHelpers( theme, opts, cssInfo, ctx, this ); | ||||
|  | ||||
|       return this.generateSimple( ctx, jst ); | ||||
|     } | ||||
|  | ||||
|   }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user