class Rake::Pipeline::Typescript::TypeScriptFilter

A filter that compiles TypeScript to JavaScript.

Attributes

options[R]

@return [Hash] a hash of options to pass to CoffeeScript when

rendering.

Public Class Methods

new(options = {}, &block) click to toggle source

By default, the CoffeeScriptFilter converts inputs with the extension .coffee to .js.

@param [Hash] options options to pass to the CoffeeScript

compiler.

@param [Proc] block the output name generator block

# File lib/rake-pipeline-typescript/type_script_filter.rb, line 18
def initialize(options = {}, &block)
  block ||= proc { |input| input.sub(/\.ts$/, '.js') }
  super(&block)
  @options = options
end

Public Instance Methods

external_dependencies() click to toggle source
# File lib/rake-pipeline-typescript/type_script_filter.rb, line 52
def external_dependencies
  [ "typescript-node" ]
end
generate_output(inputs, output) click to toggle source

The body of the filter. Compile each input file into a CoffeeScript compiled output file.

@param [Array] inputs an Array of FileWrapper objects. @param [FileWrapper] output a FileWrapper object

# File lib/rake-pipeline-typescript/type_script_filter.rb, line 29
def generate_output(inputs, output)
  inputs.each do |input|
    begin
      if (input.respond_to?(:read))
        script = input.read
      else
        script = input
      end
      #script = input.read if input.respond_to?(:read)

      result = TypeScript::Node::compile(script)
      output.write(result)
      # if result.success?
      #     output.write(result.js)
      # else
      #   raise result.stderr
      #end
    rescue ExecJS::Error => error
      raise error, "Error compiling #{input.path}. #{error.message}"
    end
  end
end