Class: Haml::Exec::HamlSass

Inherits:
Generic
  • Object
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

Constant Summary

Constants inherited from Generic

Generic::COLORS

Instance Method Summary collapse

Methods inherited from Generic

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

Constructor Details

#initialize(args) ⇒ HamlSass

Returns a new instance of HamlSass.

Parameters:

  • args (Array<String>)

    The command-line arguments



163
164
165
166
# File 'lib/haml/exec.rb', line 163

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.



236
237
238
239
240
# File 'lib/haml/exec.rb', line 236

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)


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
220
221
222
223
224
225
226
227
228
# File 'lib/haml/exec.rb', line 177

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