class Slim::Command
Slim commandline interface @api private
Public Class Methods
new(args)
click to toggle source
# File lib/slim/command.rb, line 10 def initialize(args) @args = args @options = {} end
Public Instance Methods
run()
click to toggle source
Run command
# File lib/slim/command.rb, line 16 def run @opts = OptionParser.new(&method(:set_opts)) @opts.parse!(@args) process exit 0 rescue Exception => ex raise ex if @options[:trace] || SystemExit === ex $stderr.print "#{ex.class}: " if ex.class != RuntimeError $stderr.puts ex.message $stderr.puts ' Use --trace for backtrace.' exit 1 end
Private Instance Methods
process()
click to toggle source
Process command
# File lib/slim/command.rb, line 83 def process args = @args.dup unless @options[:input] file = args.shift if file @options[:file] = file @options[:input] = File.open(file, 'r') else @options[:file] = 'STDIN' @options[:input] = $stdin end end unless @options[:output] file = args.shift @options[:output] = file ? File.open(file, 'w') : $stdout end result = if @options[:erb] require 'slim/erb_converter' ERBConverter.new(:file => @options[:file]).call(@options[:input].read) elsif @options[:compile] Engine.new(:file => @options[:file]).call(@options[:input].read) else Template.new(@options[:file]) { @options[:input].read }.render end @options[:output].puts(result) end
set_opts(opts)
click to toggle source
Configure OptionParser
# File lib/slim/command.rb, line 32 def set_opts(opts) opts.on('-s', '--stdin', 'Read input from standard input instead of an input file') do @options[:input] = $stdin end opts.on('--trace', 'Show a full traceback on error') do @options[:trace] = true end opts.on('-c', '--compile', 'Compile only but do not run') do @options[:compile] = true end opts.on('-e', '--erb', 'Convert to ERB') do @options[:erb] = true end opts.on('-r', '--rails', 'Generate rails compatible code (Implies --compile)') do Engine.set_default_options :disable_capture => true, :generator => Temple::Generators::RailsOutputBuffer @options[:compile] = true end opts.on('-t', '--translator', 'Enable translator plugin') do require 'slim/translator' end opts.on('-l', '--logic-less', 'Enable logic less plugin') do require 'slim/logic_less' end opts.on('-p', '--pretty', 'Produce pretty html') do Engine.set_default_options :pretty => true end opts.on('-o', '--option [NAME=CODE]', String, 'Set slim option') do |str| parts = str.split('=', 2) Engine.default_options[parts.first.gsub(/\A:/, '').to_sym] = eval(parts.last) end opts.on_tail('-h', '--help', 'Show this message') do puts opts exit end opts.on_tail('-v', '--version', 'Print version') do puts "Slim #{VERSION}" exit end end