Sha256: 30e565ee58ba079eb24c85224542bb0ef568b20f3e57108ba566fbc61e31aae6

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'requirejs/error'

module RequirejsHelper
  def _requirejs_data(name, &block)
    {}.tap do |data|
      if name
        name += ".js" unless name =~ /\.js$/
        data['main'] = javascript_path(name)
      end

      data.merge!(yield controller) if block_given?
    end.map do |k, v|
      %Q{data-#{k}="#{v}"}
    end.join(" ")
  end

  def _data_main(name)
    if name
      name += ".js" unless name =~ /\.js$/
      %Q{data-main="#{javascript_path(name)}"}
    else
      ""
    end
  end

  def requirejs_include_tag(name=nil, &block)
    html = ""
    requirejs = Rails.application.config.requirejs

    if controller.requirejs_included
      raise Requirejs::MultipleIncludeError, "Only one requirejs_include_tag allowed per page."
    end

    unless requirejs.run_config.empty?
      run_config = requirejs.run_config
      if Rails.application.config.assets.digest
        modules = requirejs.build_config['modules'].map { |m| m['name'] }

        # Generate digestified paths from the modules spec
        paths = {}
        modules.each { |m| paths[m] = javascript_path(m).sub /\.js$/,'' }

        # Override uesr paths, whose mappings are only relevant in dev mode
        # and in the build_config.
        run_config['paths'] = paths
      end
      html.concat <<-HTML
      <script>var require = #{run_config.to_json};</script>
      HTML
    end

    html.concat <<-HTML
    <script #{_requirejs_data(name, &block)} src="#{javascript_path 'require.js'}"></script>
    HTML

    controller.requirejs_included = true
    html.html_safe
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
requirejs-rails-0.6.1 app/helpers/requirejs_helper.rb