Class: Embarista::Filters::RewriteMinispadeRequiresFilter

Inherits:
Rake::Pipeline::Filter
  • Object
show all
Defined in:
lib/embarista/filters/rewrite_minispade_requires_filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = nil, &block) ⇒ RewriteMinispadeRequiresFilter

Returns a new instance of RewriteMinispadeRequiresFilter.



6
7
8
9
10
# File 'lib/embarista/filters/rewrite_minispade_requires_filter.rb', line 6

def initialize(options=nil, &block)
  @options = options || {}
  @options[:prefix] = '' unless @options.has_key?(:prefix)
  super(&block)
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



4
5
6
# File 'lib/embarista/filters/rewrite_minispade_requires_filter.rb', line 4

def options
  @options
end

Instance Method Details

#generate_output(inputs, output) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/embarista/filters/rewrite_minispade_requires_filter.rb', line 12

def generate_output(inputs, output)
  inputs.each do |input|
    code = input.read
    #puts input.path
    relative_root = Pathname.new(input.path).dirname
    code.gsub!(%r{(?<!\.)\brequire\s*\(\s*["']([^"']+)["']\s*}) do |m|
      before_path = $1
      path = before_path.dup
      path = relative_root.join(path).to_s if path.start_with?('.')
      path = path.gsub(%r{^#{options[:root]}/}, '') if options[:root]
      path = options[:prefix] + path if options[:prefix] && !path.include?(':')
      # puts "require: #{before_path} -> #{path}"
      "minispade.require('#{path}'"
    end
    code.gsub!(%r{(?<!\.)\brequireAll\s*\(([^)]+)\)}) do |m|
      regex = $1
      # puts "requireAll: #{regex}"
      "minispade.requireAll(#{regex})"
    end
    output.write(code)
  end
end