Sha256: b6c5d70cded9a088f3f6a2e25be84b948edc4a4f33fea135832b4273151eb73a

Contents?: true

Size: 1.27 KB

Versions: 14

Compression:

Stored size: 1.27 KB

Contents

require 'schmooze'

module Sprockets
  module Commoner
    class Bundle < Schmooze::Base
      dependencies generator: 'babel-generator.default',
        babelHelpers: 'babel-helpers',
        t: 'babel-types'

      method :generate_helpers, <<-JS
function(helpers) {
  if (helpers.length === 0) {
    return '';
  }
  var declaration = t.variableDeclaration('var',
    helpers.map(function(helper) {
      return t.variableDeclarator(t.identifier('__commoner_helper__' + helper), babelHelpers.get(helper));
    })
  );
  return generator(declaration).code;
}
JS

      PRELUDE = <<-JS.freeze
!function() {
var __commoner_initialize_module__ = function(f) {
  var module = {exports: {}};
  f.call(module.exports, module, module.exports);
  return module.exports;
};
var global = window;
JS

      OUTRO = <<-JS.freeze

}();
JS
      def self.instance(env)
        @instance ||= new(env.root)
      end

      def self.call(input)
        instance(input[:environment]).call(input)
      end

      def call(input)
        return unless input[:metadata][:commoner_enabled]

        used_helpers = input[:metadata][:commoner_used_helpers]
        helpers = generate_helpers(used_helpers.to_a)
        {
          data: "#{PRELUDE}#{helpers}\n#{input[:data]}#{OUTRO}"
        }
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
sprockets-commoner-0.2.8 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.7 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.1.4 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.6 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.5 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.4 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.1.3 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.3 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.1.2 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.2 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.1.1 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.1 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.2.0 lib/sprockets/commoner/bundle.rb
sprockets-commoner-0.1.0 lib/sprockets/commoner/bundle.rb