sprockets-amd 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/sprockets-amd/engine.rb +31 -0
- data/lib/sprockets-amd/template_engine.rb +77 -0
- data/lib/sprockets-amd/version.rb +3 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjUwZGFiYjJiMDA4N2ZhMDU5OWIxOGRkOTk0ZWRlZTRhMWZjNTA0OA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjgwMDE4YTUzMDdjZjhhN2I2MTRjY2Q3NTMwZDM0YzNlMDgyYjBiMw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTgzN2MwMzNmN2VhOGQ4MmE5MmY2ZWZkZjhmNTc4ODM2MTYzMGNmMTJlMzk2
|
10
|
+
YzhmODY2NDFiYmYxYmJmZGFiYjhjNzE2ZDNkMzFhZmJkNTFiZjRiMGMxN2Nj
|
11
|
+
MjI2OTY1ZmQ5NGU2ZjUyZjE2NjE2ZDIzYmUyMjIyYjViODg4OWU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmEwY2YwNDQwMjA2Zjc2YWJiNzIyNDdmODExZDNmZTYyZmU1MWY5YzI5NGUw
|
14
|
+
NmY3ZjM4YmEyZjkzNzEzYjllYzBlMzNjN2NhMDk2MzE4NDE4MmQ2M2QxMmNi
|
15
|
+
YmQzNzM5M2QyNTU4YTE2YmFiMThmZjNjZjU2Yjk2Y2QxMmE3ODg=
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
|
3
|
+
module SprocketsAmd
|
4
|
+
|
5
|
+
class AMDTemplate < Tilt::Template
|
6
|
+
class << self;
|
7
|
+
attr_accessor :config
|
8
|
+
end
|
9
|
+
|
10
|
+
self.config = {}
|
11
|
+
|
12
|
+
self.default_mime_type = 'application/javascript'
|
13
|
+
|
14
|
+
|
15
|
+
def self.engine_initialized?
|
16
|
+
defined? ::AMDTemplateEngine
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize_engine
|
20
|
+
require_template_library 'sprockets-amd/template_engine'
|
21
|
+
end
|
22
|
+
|
23
|
+
def prepare; end
|
24
|
+
|
25
|
+
def evaluate(scope, locals, &block)
|
26
|
+
@output ||= AMDTemplateEngine.new(data, self.class.config).render
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
class AMDTemplateEngine
|
2
|
+
|
3
|
+
def initialize(code, options = {})
|
4
|
+
@prefixes = options[:prefixes]
|
5
|
+
@code = code
|
6
|
+
@require_statement = options[:require_statement] || "AMD\.require"
|
7
|
+
@module_statement = options[:module_statement] || "AMD\.module"
|
8
|
+
end
|
9
|
+
|
10
|
+
def extract_module_name
|
11
|
+
regexp = /#{@module_statement}\.([\w_\.-]+)/
|
12
|
+
@moodule_name ||= with_prefix(@code.match(regexp)[1]).first
|
13
|
+
end
|
14
|
+
|
15
|
+
def extract_dependencies
|
16
|
+
regexp = /#{@require_statement}\.([\w_\.-]+)/
|
17
|
+
@deps ||= with_prefix @code.scan(regexp).flatten.uniq
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_quote_dependencies
|
21
|
+
extract_dependencies.map { |el| "'#{el}'" }
|
22
|
+
end
|
23
|
+
|
24
|
+
def with_prefix(matches)
|
25
|
+
matches = [matches] unless matches.is_a?(Array)
|
26
|
+
matches.map do |el|
|
27
|
+
arr = el.split(".")
|
28
|
+
if get_registered_prefixes.include?(arr[0])
|
29
|
+
arr.slice(0, 2).join(".")
|
30
|
+
else
|
31
|
+
arr.slice(0)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_registered_prefixes
|
37
|
+
@prefixes || []
|
38
|
+
end
|
39
|
+
|
40
|
+
def module_name_without_prefix
|
41
|
+
without_prefix [extract_module_name]
|
42
|
+
end
|
43
|
+
|
44
|
+
def dependencies_without_prefix
|
45
|
+
without_prefix extract_dependencies
|
46
|
+
end
|
47
|
+
|
48
|
+
def without_prefix(thing)
|
49
|
+
prefixes = get_registered_prefixes
|
50
|
+
thing.map do |el|
|
51
|
+
prefixes.each { |pr| el = el.gsub("#{pr}.", '') }
|
52
|
+
el
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def combined_prefixes
|
57
|
+
syntax = [@require_statement, @module_statement]
|
58
|
+
prefs = get_registered_prefixes.inject([]) do |sum, pref|
|
59
|
+
sum + syntax.map { |el| "#{el}.#{pref}" }
|
60
|
+
end
|
61
|
+
prefs + syntax
|
62
|
+
end
|
63
|
+
|
64
|
+
def strip_code
|
65
|
+
@code = "var #{module_name_without_prefix[0]} = {};\n#{@code}"
|
66
|
+
combined_prefixes.each do |pref|
|
67
|
+
@code = @code.gsub "#{pref}.", ''
|
68
|
+
end
|
69
|
+
@code += "\nreturn #{module_name_without_prefix[0]};"
|
70
|
+
@code
|
71
|
+
end
|
72
|
+
|
73
|
+
def render
|
74
|
+
"define('#{extract_module_name}', [#{get_quote_dependencies.join(', ')}], function(#{dependencies_without_prefix.join(", ")}) {\n#{strip_code}});"
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-amd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vyacheslav Shebanov
|
@@ -31,6 +31,9 @@ extensions: []
|
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
33
|
- lib/sprockets-amd.rb
|
34
|
+
- lib/sprockets-amd/engine.rb
|
35
|
+
- lib/sprockets-amd/version.rb
|
36
|
+
- lib/sprockets-amd/template_engine.rb
|
34
37
|
homepage: https://github.com/Termina1/sprockets-amd
|
35
38
|
licenses: []
|
36
39
|
metadata: {}
|