Sha256: a4f2c7388775b6275fc723d550e09c2162403c3d1d4c88d142cf5a2328aed7d7

Contents?: true

Size: 1001 Bytes

Versions: 1

Compression:

Stored size: 1001 Bytes

Contents

module Bunch
  class JadeNode < FileNode
    def initialize(fn)
      JadeNode.require_jade
      @filename = fn
    end

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

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

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

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

    def target_extension
      '.js'
    end
  end

  class << JadeNode
    def require_jade
      unless @required
        require 'ruby-jade'
        @required = true
      end
    rescue LoadError
      raise "'gem install ruby-jade' to compile .jade files."
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bunch-0.2.2 lib/bunch/jade_node.rb