Class: Extruder::ConcatFilter

Inherits:
Filter
  • Object
show all
Defined in:
lib/extruder/filters/concat_filter.rb

Overview

A built-in filter that simply accepts a series of inputs and concatenates them into output files with the output file generator.

Examples:

Extruder.build do
  input "app/assets", "**/*.js"
  output "public"

  # create a concatenated output file for each
  # directory of inputs.
  filter(Extruder::ConcatFilter) do |input|
    # input files will look something like:
    #   javascripts/admin/main.js
    #   javascripts/admin/app.js
    #   javascripts/users/main.js
    #
    # and the outputs will look like:
    #   javascripts/admin.js
    #   javascripts/users.js
    directory = File.dirname(input)
    ext = File.extname(input)

    "#{directory}#{ext}"
  end
end

Direct Known Subclasses

OrderingConcatFilter

Instance Attribute Summary

Attributes inherited from Filter

#files, #output_name_generator, #output_root

Instance Method Summary collapse

Methods inherited from Filter

#outputs, #process, processes_binary_files

Constructor Details

#initialize(string = nil, &block) ⇒ ConcatFilter

… more soon

Parameters:

  • string (String) (defaults to: nil)

    the name of the output file to concatenate inputs to.

  • block (Proc)

    a block to use as the Filter’s Filter#output_name_generator.



42
43
44
45
# File 'lib/extruder/filters/concat_filter.rb', line 42

def initialize(string=nil, &block)
  block = proc { string } if string
  super(&block)
end

Instance Method Details

#encodingString

Returns the String “BINARY”.

Returns:

  • (String)

    the String “BINARY”



49
# File 'lib/extruder/filters/concat_filter.rb', line 49

processes_binary_files

#generate_output(inputs, output) ⇒ Object

implement the #generate_output method required by the Filter API. In this case, simply loop through the inputs and write their contents to the output.

Recall that this method will be called once for each unique output file.

Parameters:



66
67
68
69
70
# File 'lib/extruder/filters/concat_filter.rb', line 66

def generate_output(inputs, output)
  inputs.each do |input|
    output.write input.read
  end
end