mirror of
https://github.com/lloeki/sprockets-umodule.git
synced 2025-12-06 10:34:41 +01:00
Initial, working version
This commit is contained in:
commit
e9a75766fd
12 changed files with 196 additions and 0 deletions
15
lib/sprockets/umodule.rb
Normal file
15
lib/sprockets/umodule.rb
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
require 'sprockets/umodule/version'
|
||||
require 'sprockets/umodule/wrapper'
|
||||
require 'sprockets/engines'
|
||||
|
||||
module Sprockets
|
||||
module Umodule
|
||||
class << self
|
||||
attr_accessor :options
|
||||
end
|
||||
|
||||
@options = {}
|
||||
end
|
||||
|
||||
register_engine '.umodule', Umodule::Wrapper
|
||||
end
|
||||
7
lib/sprockets/umodule/umodule.js.erb
Normal file
7
lib/sprockets/umodule/umodule.js.erb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
(function () {
|
||||
define = require('module').define;
|
||||
|
||||
define('<%= module_name %>', function (exports, require, module) {
|
||||
<%= source %>
|
||||
});
|
||||
})();
|
||||
5
lib/sprockets/umodule/version.rb
Normal file
5
lib/sprockets/umodule/version.rb
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
module Sprockets
|
||||
module Umodule
|
||||
VERSION = '1.0.0'
|
||||
end
|
||||
end
|
||||
47
lib/sprockets/umodule/wrapper.rb
Normal file
47
lib/sprockets/umodule/wrapper.rb
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
require 'tilt'
|
||||
|
||||
module Sprockets
|
||||
module Umodule
|
||||
class Wrapper < Tilt::Template
|
||||
@wrapper_template = File.read(File.join(File.dirname(__FILE__), 'umodule.js.erb'))
|
||||
|
||||
class << self
|
||||
attr_reader :wrapper_template
|
||||
|
||||
def engine_initialized?
|
||||
defined?(ERB)
|
||||
end
|
||||
end
|
||||
|
||||
def initialize_engine
|
||||
require 'erb'
|
||||
end
|
||||
|
||||
def prepare
|
||||
@erb = ERB.new(wrapper_template)
|
||||
end
|
||||
|
||||
def evaluate(context, locals, &block)
|
||||
bind(@erb).render(context.logical_path, data)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def wrapper_template
|
||||
self.class.wrapper_template
|
||||
end
|
||||
|
||||
def bind(erb)
|
||||
Class.new do
|
||||
def initialize(erb)
|
||||
@erb = erb
|
||||
end
|
||||
|
||||
def render(module_name, source)
|
||||
@erb.result(binding)
|
||||
end
|
||||
end.new(erb)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue