Module: Jade
- Defined in:
- lib/jade-ruby/config.rb,
lib/jade-ruby/compile.rb
Defined Under Namespace
Classes: CompileError, Config, ExecutableError
Class Attribute Summary collapse
-
.config ⇒ Object
Returns the value of attribute config.
Class Method Summary collapse
Class Attribute Details
.config ⇒ Object
Returns the value of attribute config.
47 48 49 |
# File 'lib/jade-ruby/config.rb', line 47 def config @config end |
Class Method Details
.check_executable! ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/jade-ruby/compile.rb', line 48 def check_executable! unless @executable_checked `jade --version` unless $?.success? raise ExecutableError, 'No jade executable found in your system. Did you forget to "npm install -g jade"?' end @executable_checked = true end end |
.compile(source, options = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/jade-ruby/compile.rb', line 8 def compile(source, = {}) check_executable! source = source.read if source.respond_to?(:read) = config.to_hash.merge() # http://web.archive.org/web/*/http://jade-lang.com/command-line/ cmd = ['jade'] [:compileDebug] = [:compile_debug] [:nameAfterFile] = [:name_after_file] .respond_to?(:compact) ? .compact : .delete_if { |k, v| v.nil? } # Command line arguments take precedence over json options # https://github.com/jadejs/jade/blob/master/bin/jade.js cmd.push('--obj', JSON.generate()) cmd.push('--out', escape([:out])) if [:out] cmd.push('--path', escape([:filename])) if [:filename] cmd.push('--basedir', escape([:basedir])) if [:basedir] cmd.push('--pretty') if [:pretty] cmd.push('--client') if [:client] cmd.push('--name', escape([:name])) if [:name] cmd.push('--no-debug') unless [:compile_debug] cmd.push('--extension', escape([:extension])) if [:extension] cmd.push('--hierarchy', escape([:hierarchy])) if [:hierarchy] cmd.push('--name-after-file', escape([:name_after_file])) if [:name_after_file] cmd.push('--doctype', escape([:doctype])) if [:doctype] stdout, stderr, exit_status = Open3.capture3(*cmd, stdin_data: source) raise CompileError.new(stderr) unless exit_status.success? if [:client] %{ (function(jade) { #{stdout}; return #{[:name]}; }).call(this, jade); } else stdout end end |