Sha256: c6f9ae52a506f9ac0cd1b0ae375a696e81459ba19f2f7a969dc42f86d283deac

Contents?: true

Size: 981 Bytes

Versions: 3

Compression:

Stored size: 981 Bytes

Contents

module Bunch
  class EJSNode < FileNode
    def initialize(fn)
      EJSNode.require_ejs
      @filename = fn
    end

    def content
      @content ||= fetch(@filename) {
        <<-JAVASCRIPT
          (function() {
            this.JST || (this.JST = {});
            this.JST['#{template_name}'] = #{EJS.compile(File.read(@filename))};
          })();
        JAVASCRIPT
      }
    rescue => e
      raise CompileError.new(e, @filename)
    end

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

    def template_name
      name = @filename.sub(/\.jst\.ejs$/, '')

      if @options[:root]
        name.sub(/^#{Regexp.escape(@options[:root].to_s)}\//, '')
      else
        name
      end
    end

    def target_extension
      '.js'
    end
  end

  class << EJSNode
    def require_ejs
      unless @required
        require 'ejs'
        @required = true
      end
    rescue LoadError
      raise "'gem install ejs' to compile .ejs files."
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bunch-0.2.2 lib/bunch/ejs_node.rb
bunch-0.2.1 lib/bunch/ejs_node.rb
bunch-0.2.0 lib/bunch/ejs_node.rb