mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2025-05-15 10:07:07 +01:00
Finish HackMyCore reshaping.
Reintroduce HackMyCore, dropping the interim submodule, and reorganize and improve tests.
This commit is contained in:
87
src/core/jrs-theme.coffee
Normal file
87
src/core/jrs-theme.coffee
Normal file
@ -0,0 +1,87 @@
|
||||
###*
|
||||
Definition of the JRSTheme class.
|
||||
@module core/jrs-theme
|
||||
@license MIT. See LICENSE.MD for details.
|
||||
###
|
||||
|
||||
|
||||
|
||||
_ = require 'underscore'
|
||||
PATH = require 'path'
|
||||
parsePath = require 'parse-filepath'
|
||||
pathExists = require('path-exists').sync
|
||||
|
||||
|
||||
|
||||
###*
|
||||
The JRSTheme class is a representation of a JSON Resume theme asset.
|
||||
@class JRSTheme
|
||||
###
|
||||
class JRSTheme
|
||||
|
||||
|
||||
###*
|
||||
Open and parse the specified theme.
|
||||
@method open
|
||||
###
|
||||
open: ( thFolder ) ->
|
||||
|
||||
@folder = thFolder
|
||||
|
||||
# Open the [theme-name].json file; should have the same
|
||||
# name as folder
|
||||
pathInfo = parsePath thFolder
|
||||
|
||||
# Open and parse the theme's package.json file.
|
||||
pkgJsonPath = PATH.join thFolder, 'package.json'
|
||||
if pathExists pkgJsonPath
|
||||
thApi = require thFolder
|
||||
thPkg = require pkgJsonPath
|
||||
this.name = thPkg.name
|
||||
this.render = (thApi && thApi.render) || undefined
|
||||
this.engine = 'jrs'
|
||||
|
||||
# Create theme formats (HTML and PDF). Just add the bare minimum mix of
|
||||
# properties necessary to allow JSON Resume themes to share a rendering
|
||||
# path with FRESH themes.
|
||||
this.formats =
|
||||
html:
|
||||
outFormat: 'html'
|
||||
files: [{
|
||||
action: 'transform',
|
||||
render: this.render,
|
||||
major: true,
|
||||
ext: 'html',
|
||||
css: null
|
||||
}]
|
||||
pdf:
|
||||
outFormat: 'pdf'
|
||||
files: [{
|
||||
action: 'transform',
|
||||
render: this.render,
|
||||
major: true,
|
||||
ext: 'pdf',
|
||||
css: null
|
||||
}]
|
||||
else
|
||||
throw { fluenterror: HACKMYSTATUS.missingPackageJSON };
|
||||
@
|
||||
|
||||
|
||||
|
||||
###*
|
||||
Determine if the theme supports the output format.
|
||||
@method hasFormat
|
||||
###
|
||||
hasFormat: ( fmt ) -> _.has this.formats, fmt
|
||||
|
||||
|
||||
|
||||
###*
|
||||
Return the requested output format.
|
||||
@method getFormat
|
||||
###
|
||||
getFormat = ( fmt ) -> @formats[ fmt ]
|
||||
|
||||
|
||||
module.exports = JRSTheme;
|
Reference in New Issue
Block a user