Sha256: 0d417ba61c894ec63d8758695866fde2990f337ed74399d90921de86b2bc0ad6

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

require 'tilt'

module Typescript
  module Rails

    class TypeScriptTemplate < ::Tilt::Template
      self.default_mime_type = 'application/javascript'

      @@default_bare = false

      def self.default_bare
        @@default_bare
      end

      def self.default_bare=(value)
        @@default_bare = value
      end

      # DEPRECATED
      def self.default_no_wrap
        @@default_bare
      end

      # DEPRECATED
      def self.default_no_wrap=(value)
        @@default_bare = value
      end

      def self.engine_initialized?
        defined? ::TypeScript
      end

      def initialize_engine
        require_template_library 'coffee_script'
      end

      def prepare
        if !options.key?(:bare) and !options.key?(:no_wrap)
          options[:bare] = self.class.default_bare
        end
      end

      def evaluate(scope, locals, &block)
        @output ||= TypeScript.compile(data, options)
      end

      def allows_script?
        false
      end
    end

    class TemplateHandler

       def self.erb_handler
        @@erb_handler ||= ActionView::Template.registered_template_handler(:erb)
      end

      def self.call(template)
        compiled_source = erb_handler.call(template)
        "TypeScript.compile(begin;#{compiled_source};end)"
      end
    end
  end
end

ActiveSupport.on_load(:action_view) do
  ActionView::Template.register_template_handler :ts, Typescript::Rails::TemplateHandler
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
typescript-rails-0.0.4 lib/typescript/rails/template_handler.rb
typescript-rails-0.0.3 lib/typescript/rails/template_handler.rb
typescript-rails-0.0.2 lib/typescript/rails/template_handler.rb
typescript-rails-0.0.1 lib/typescript/rails/template_handler.rb