mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-10-31 05:07:26 +00:00 
			
		
		
		
	Scrub theme.js.
This commit is contained in:
		| @@ -33,72 +33,74 @@ Abstract theme representation. | ||||
|       return friendly[val] || val; | ||||
|     } | ||||
|  | ||||
|     // Open the theme.json file; should have the same name as folder | ||||
|     // Open the [theme-name].json file; should have the same name as folder | ||||
|     this.folder = themeFolder; | ||||
|     var pathInfo = PATH.parse( themeFolder ); | ||||
|     var themeFile = PATH.join( themeFolder, pathInfo.base + '.json' ); | ||||
|     var themeInfo = JSON.parse( FS.readFileSync( themeFile, 'utf8' ) ); | ||||
|  | ||||
|     // Move properties from the theme JSON file to the theme object | ||||
|     EXTEND( true, this, themeInfo ); | ||||
|  | ||||
|     // Set up a hash of formats supported by this theme. | ||||
|     var formatsHash = { }; | ||||
|  | ||||
|     // Iterate over all files in the theme folder, producing an array, fmts, | ||||
|     // containing info for each file. | ||||
|     // Establish the base theme folder | ||||
|     var tplFolder = PATH.join( themeFolder, 'src' ); | ||||
|     var fmts = RECURSIVE_READ_DIR( tplFolder ).map( | ||||
|       function( absPath ) { | ||||
|  | ||||
|         var pathInfo = PATH.parse(absPath); | ||||
|     // Iterate over all files in the theme folder, producing an array, fmts, | ||||
|     // containing info for each file. While we're doing that, also build up | ||||
|     // the formatsHash object. | ||||
|     var fmts = RECURSIVE_READ_DIR( tplFolder ).map( function( absPath ) { | ||||
|  | ||||
|         // If this file lives in a specific format folder within the theme, | ||||
|         // such as "/latex" or "/html", then that format is the output format | ||||
|         // for all files within the folder. | ||||
|         var outFmt = ''; | ||||
|         var portion = pathInfo.dir.replace(tplFolder,''); | ||||
|         if( portion && portion.trim() ) { | ||||
|           var reg = /^(?:\/|\\)(html|latex|doc|pdf)(?:\/|\\)?/ig; | ||||
|           var res = reg.exec( portion ); | ||||
|           res && (outFmt = res[1]); | ||||
|         } | ||||
|  | ||||
|         // Otherwise, the output format is inferred from the filename, as in | ||||
|         // compact-[outputformat].[extension], for ex, compact-pdf.html. | ||||
|         if( !outFmt ) { | ||||
|           var idx = pathInfo.name.lastIndexOf('-'); | ||||
|           outFmt = ( idx === -1 ) ? pathInfo.name : pathInfo.name.substr( idx + 1 ) | ||||
|         } | ||||
|  | ||||
|         // We should have a valid output format now | ||||
|         formatsHash[ outFmt ] = formatsHash[outFmt] || { outFormat: outFmt, files: [] }; | ||||
|  | ||||
|         var obj = { | ||||
|           path: absPath, | ||||
|           ext: pathInfo.ext.slice(1), | ||||
|           title: friendlyName( outFmt ), | ||||
|           pre: outFmt, | ||||
|           // outFormat: outFmt || pathInfo.name, | ||||
|           data: FS.readFileSync( absPath, 'utf8' ), | ||||
|           css: null | ||||
|         }; | ||||
|  | ||||
|         // Add this file to the list of files for this format type. | ||||
|         formatsHash[ outFmt ].files.push( obj ); | ||||
|         return obj; | ||||
|       // If this file lives in a specific format folder within the theme, | ||||
|       // such as "/latex" or "/html", then that format is the output format | ||||
|       // for all files within the folder. | ||||
|       var pathInfo = PATH.parse(absPath); | ||||
|       var outFmt = ''; | ||||
|       var portion = pathInfo.dir.replace(tplFolder,''); | ||||
|       if( portion && portion.trim() ) { | ||||
|         var reg = /^(?:\/|\\)(html|latex|doc|pdf)(?:\/|\\)?/ig; | ||||
|         var res = reg.exec( portion ); | ||||
|         res && (outFmt = res[1]); | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|       // Otherwise, the output format is inferred from the filename, as in | ||||
|       // compact-[outputformat].[extension], for ex, compact-pdf.html. | ||||
|       if( !outFmt ) { | ||||
|         var idx = pathInfo.name.lastIndexOf('-'); | ||||
|         outFmt = ( idx === -1 ) ? pathInfo.name : pathInfo.name.substr( idx + 1 ) | ||||
|       } | ||||
|  | ||||
|       // We should have a valid output format now. | ||||
|       formatsHash[ outFmt ] = formatsHash[outFmt] || { outFormat: outFmt, files: [] }; | ||||
|  | ||||
|       // Create the file representation object. | ||||
|       var obj = { | ||||
|         path: absPath, | ||||
|         ext: pathInfo.ext.slice(1), | ||||
|         title: friendlyName( outFmt ), | ||||
|         pre: outFmt, | ||||
|         // outFormat: outFmt || pathInfo.name, | ||||
|         data: FS.readFileSync( absPath, 'utf8' ), | ||||
|         css: null | ||||
|       }; | ||||
|  | ||||
|       // Add this file to the list of files for this format type. | ||||
|       formatsHash[ outFmt ].files.push( obj ); | ||||
|       return obj; | ||||
|     }); | ||||
|  | ||||
|     // Add freebie formats every theme gets | ||||
|     formatsHash[ 'json' ] = { title: 'json', outFormat: 'json', pre: 'json', ext: 'json', path: null, data: null }; | ||||
|     formatsHash[ 'yml' ] = { title: 'yaml', outFormat: 'yml', pre: 'yml', ext: 'yml', path: null, data: null }; | ||||
|  | ||||
|     // Now, get all the CSS files... | ||||
|     this.cssFiles = fmts.filter(function( fmt ){ return fmt.ext === 'css'; }); | ||||
|  | ||||
|     // ...and assemble information on them | ||||
|     this.cssFiles.forEach(function( cssf ) { | ||||
|       // For each CSS file, get its corresponding HTML file | ||||
|       var idx = _.findIndex(fmts, function( fmt ) { | ||||
|         return fmt.pre === cssf.pre && fmt.ext === 'html' | ||||
|     (this.cssFiles = fmts.filter(function( fmt ){ return fmt.ext === 'css'; })) | ||||
|     .forEach(function( cssf ) { | ||||
|         // For each CSS file, get its corresponding HTML file | ||||
|         var idx = _.findIndex(fmts, function( fmt ) { | ||||
|           return fmt.pre === cssf.pre && fmt.ext === 'html' | ||||
|       }); | ||||
|       fmts[ idx ].css = cssf.data; | ||||
|       fmts[ idx ].cssPath = cssf.path; | ||||
| @@ -109,7 +111,7 @@ Abstract theme representation. | ||||
|       return fmt.ext !== 'css'; | ||||
|     }); | ||||
|  | ||||
|     // Create a hash out of the formats for this theme | ||||
|     // Cache the formats hash | ||||
|     this.formats = formatsHash; | ||||
|  | ||||
|     // Set the official theme name | ||||
|   | ||||
		Reference in New Issue
	
	Block a user