Class: Rake::Pipeline::Web::Filters::MinispadeFilter

Inherits:
Filter
  • Object
show all
Defined in:
lib/rake-pipeline-web-filters/minispade_filter.rb

Overview

A filter that wraps JavaScript files in a minispade.register closure for use in minispade.

Examples:

Rake::Pipeline.build do
  input "app/assets", "**/*.js"
  output "public"

  # Wrap each JS file in a minispade.register closure.
  filter Rake::Pipeleine::Web::Filters::MinispadeFilter
end

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ MinispadeFilter

Returns a new instance of MinispadeFilter.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :use_strict (Boolean)

    Whether to add “use strict” to each outputted function; defaults to false.

  • :module_id_generator (Proc)

    a proc to use to generate the minispade module id.



21
22
23
24
25
26
# File 'lib/rake-pipeline-web-filters/minispade_filter.rb', line 21

def initialize(options = {})
  super()
  @use_strict = !!options[:use_strict]
  @module_id_generator = options[:module_id_generator] ||
    proc { |input| input.fullpath.sub(Dir.pwd, '') }
end

Instance Method Details

#generate_output(inputs, output) ⇒ Object

Implement the #generate_output method required by the Filter API. Wraps each input file in a minispade.register closure.

Parameters:

  • inputs (Array<FileWrapper>)

    an Array of FileWrapper objects representing the inputs to this filter.

  • output (FileWrapper)

    a single FileWrapper object representing the output.



37
38
39
40
41
42
43
44
45
# File 'lib/rake-pipeline-web-filters/minispade_filter.rb', line 37

def generate_output(inputs, output)
  inputs.each do |input|
    code = input.read
    code = '"use strict"; ' + code if @use_strict
    function = "function() { #{code} }"
    ret = "minispade.register('#{@module_id_generator.call(input)}',#{function});"
    output.write ret
  end
end