Sha256: 1ca2db501e7adbc2b009b44fdc72457077ea98eb63cb7fdf1baa6aa7656656e2

Contents?: true

Size: 1.11 KB

Versions: 38

Compression:

Stored size: 1.11 KB

Contents

require 'coffee-script'
require 'nokogiri'

##
# Awestruct:Extensions:CoffeeScript is a transformer that compiles inline CoffeeScript in HTML files as JavaScript.

module Awestruct
  module Extensions
    class CoffeeScriptTransform

      def transform(site, page, input)
        ext = File.extname(page.output_path)[1..-1].to_sym
        case ext
        when :html
          encoding = 'UTF-8'
          encoding = site.encoding unless site.encoding.nil?

          return compile(input, encoding)
        end
        return input
      end

      private

      def compile(input, encoding)
        html = Nokogiri::HTML(input, nil, encoding);
        html.search('script').each  do |script|
          next unless 'text/coffeescript'.eql? script.attr('type')

          if script.attr('src') =~ /\.coffee$/
            script.set_attribute('src', File.basename( script.attr('src'), '.coffee' ) + '.js')
          else
            script.inner_html = CoffeeScript.compile script.inner_html
          end
          script.set_attribute('type', 'text/javascript')

        end
        return html.to_html
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 2 rubygems

Version Path
awestruct-0.5.6.beta3 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.6.beta2 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.6.beta lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.5 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.2 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.1 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.rc3 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.rc2 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.rc lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.4.beta1 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.3 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.2.1 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.2 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.1 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.1a lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.0 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.5.0.cr lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.4.8 lib/awestruct/extensions/coffeescripttransform.rb
awestruct-0.4.7 lib/awestruct/extensions/coffeescripttransform.rb