Sha256: 3947b797b28d93d3be8fe6ba72107f536115b089c1c6d523a3a0dfdd108238bf

Contents?: true

Size: 772 Bytes

Versions: 7

Compression:

Stored size: 772 Bytes

Contents

module Bunch
  class CoffeeNode < FileNode
    def initialize(fn)
      CoffeeNode.require_coffee
      @filename = fn
    end

    def content
      @content ||= fetch(@filename) { CoffeeScript.compile(File.read(@filename), :bare => CoffeeNode.bare) }
    rescue => e
      raise CompileError.new(e, @filename)
    end

    def name
      File.basename(@filename, '.coffee')
    end

    def target_extension
      '.js'
    end
  end

  class << CoffeeNode
    attr_writer :bare

    def require_coffee
      unless @required
        require 'coffee-script'
        @required = true
      end
    rescue LoadError
      raise "'gem install coffee-script' to compile .coffee files."
    end

    def bare
      defined?(@bare) ? @bare : (@bare = false)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
bunch-0.2.2 lib/bunch/coffee_node.rb
bunch-0.2.1 lib/bunch/coffee_node.rb
bunch-0.2.0 lib/bunch/coffee_node.rb
bunch-0.1.0 lib/bunch/coffee_node.rb
bunch-0.0.11 lib/bunch/coffee_node.rb
bunch-0.0.10 lib/bunch/coffee_node.rb
bunch-0.0.9 lib/bunch/coffee_node.rb