Class: Haml::Exec::HamlSass

Inherits:
Generic show all
Defined in:
lib/haml/exec.rb

Overview

An abstrac class that encapsulates the code specific to the haml and sass executables.

Direct Known Subclasses

Haml, Sass

Instance Method Summary collapse

Methods inherited from Generic

#color, #get_line, #parse!, #puts_action, #to_s

Constructor Details

#initialize(args) ⇒ HamlSass

Returns a new instance of HamlSass.

Parameters:

  • args (Array<String>)

    The command-line arguments



154
155
156
157
# File 'lib/haml/exec.rb', line 154

def initialize(args)
  super
  @options[:for_engine] = {}
end

Instance Method Details

#process_result (protected)

Processes the options set by the command-line arguments. In particular, sets @options[:for_engine][:filename] to the input filename and requires the appropriate file.

This is meant to be overridden by subclasses so they can run their respective programs.



227
228
229
230
231
# File 'lib/haml/exec.rb', line 227

def process_result
  super
  @options[:for_engine][:filename] = @options[:filename] if @options[:filename]
  require File.dirname(__FILE__) + "/../#{@name.downcase}"
end

#set_opts(opts) (protected)

Tells optparse how to parse the arguments available for the haml and sass executables.

This is meant to be overridden by subclasses so they can add their own options.

Parameters:

  • opts (OptionParser)


168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/haml/exec.rb', line 168

def set_opts(opts)
  opts.banner = <<END
Usage: #{@name.downcase} [options] [INPUT] [OUTPUT]

Description:
  Uses the #{@name} engine to parse the specified template
  and outputs the result to the specified file.

Options:
END

  opts.on('--rails RAILS_DIR', "Install Haml and Sass from the Gem to a Rails project") do |dir|
    original_dir = dir

    dir = File.join(dir, 'vendor', 'plugins')

    unless File.exists?(dir)
      puts "Directory #{dir} doesn't exist"
      exit
    end

    dir = File.join(dir, 'haml')

    if File.exists?(dir)
      print "Directory #{dir} already exists, overwrite [y/N]? "
      exit if gets !~ /y/i
      FileUtils.rm_rf(dir)
    end

    begin
      Dir.mkdir(dir)
    rescue SystemCallError
      puts "Cannot create #{dir}"
      exit
    end

    File.open(File.join(dir, 'init.rb'), 'w') do |file|
      file << File.read(File.dirname(__FILE__) + "/../../init.rb")
    end

    puts "Haml plugin added to #{original_dir}"
    exit
  end

  opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
    require 'stringio'
    @options[:check_syntax] = true
    @options[:output] = StringIO.new
  end

  super
end