emcee 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/emcee/compressors/html_compressor.rb +13 -11
- data/lib/emcee/post_processors/import_processor.rb +37 -0
- data/lib/emcee/post_processors/script_processor.rb +42 -0
- data/lib/emcee/post_processors/stylesheet_processor.rb +42 -0
- data/lib/emcee/pre_processors/directive_processor.rb +35 -0
- data/lib/emcee/railtie.rb +9 -9
- data/lib/emcee/version.rb +1 -1
- data/test/compressors_test.rb +1 -1
- data/test/dummy/app/assets/components/test6.html +5 -0
- data/test/dummy/log/test.log +1902 -0
- data/test/dummy/tmp/cache/assets/test/sass/18faa83aed720fffcd7a34710aa03193f172abab/test5.css.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/458351c9b3b38136f089d00567fa2ab9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d4ee6708adf72d1eb87e17c8ac3ae163 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e0561b1cebd62df57d5d6ac9d2b23033 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ef2c9664b54fb0d162127bdea23cb7d9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f16d30b33e206690649697e498a2f1a8 +0 -0
- data/test/dummy_app_integration_test.rb +5 -0
- data/test/{processors_test.rb → post_processors_test.rb} +7 -7
- metadata +14 -8
- data/lib/emcee/processors/directive_processor.rb +0 -33
- data/lib/emcee/processors/import_processor.rb +0 -34
- data/lib/emcee/processors/script_processor.rb +0 -39
- data/lib/emcee/processors/stylesheet_processor.rb +0 -39
data/test/dummy/tmp/cache/assets/test/sass/18faa83aed720fffcd7a34710aa03193f172abab/test5.css.scssc
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -33,6 +33,11 @@ class DummyAppIntegrationTest < ActionController::TestCase
|
|
33
33
|
<p>test3</p>
|
34
34
|
<p>test2</p>
|
35
35
|
<p>test1</p>
|
36
|
+
<polymer-element name="test6" attributes="source">
|
37
|
+
<template>
|
38
|
+
<img src="{{ source }}">
|
39
|
+
</template>
|
40
|
+
</polymer-element>
|
36
41
|
EOS
|
37
42
|
end
|
38
43
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
require 'emcee/
|
3
|
-
require 'emcee/
|
4
|
-
require 'emcee/
|
2
|
+
require 'emcee/post_processors/import_processor'
|
3
|
+
require 'emcee/post_processors/script_processor'
|
4
|
+
require 'emcee/post_processors/stylesheet_processor'
|
5
5
|
|
6
6
|
require 'coffee-rails'
|
7
7
|
require 'sass'
|
@@ -28,7 +28,7 @@ class ContextStub
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
class
|
31
|
+
class PostProcessorsTest < ActiveSupport::TestCase
|
32
32
|
setup do
|
33
33
|
@context = ContextStub.new
|
34
34
|
@body = <<-EOS.strip_heredoc
|
@@ -40,7 +40,7 @@ class ProcessorsTest < ActiveSupport::TestCase
|
|
40
40
|
end
|
41
41
|
|
42
42
|
test "processing imports should work" do
|
43
|
-
processor = Emcee::ImportProcessor.new(@context)
|
43
|
+
processor = Emcee::PostProcessors::ImportProcessor.new(@context)
|
44
44
|
processed = processor.process(@body)
|
45
45
|
|
46
46
|
assert_equal 1, @context.assets.length
|
@@ -53,7 +53,7 @@ class ProcessorsTest < ActiveSupport::TestCase
|
|
53
53
|
end
|
54
54
|
|
55
55
|
test "processing stylesheets should work" do
|
56
|
-
processor = Emcee::StylesheetProcessor.new(@context)
|
56
|
+
processor = Emcee::PostProcessors::StylesheetProcessor.new(@context)
|
57
57
|
processed = processor.process(@body)
|
58
58
|
|
59
59
|
assert_equal processed, <<-EOS.strip_heredoc
|
@@ -65,7 +65,7 @@ class ProcessorsTest < ActiveSupport::TestCase
|
|
65
65
|
end
|
66
66
|
|
67
67
|
test "processing scripts should work" do
|
68
|
-
processor = Emcee::ScriptProcessor.new(@context)
|
68
|
+
processor = Emcee::PostProcessors::ScriptProcessor.new(@context)
|
69
69
|
processed = processor.process(@body)
|
70
70
|
|
71
71
|
assert_equal processed, <<-EOS.strip_heredoc
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emcee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Huth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -95,10 +95,10 @@ files:
|
|
95
95
|
- lib/emcee/helpers/asset_url_helper.rb
|
96
96
|
- lib/emcee/helpers/sprockets_helper.rb
|
97
97
|
- lib/emcee/loose_assets.rb
|
98
|
-
- lib/emcee/
|
99
|
-
- lib/emcee/
|
100
|
-
- lib/emcee/
|
101
|
-
- lib/emcee/
|
98
|
+
- lib/emcee/post_processors/import_processor.rb
|
99
|
+
- lib/emcee/post_processors/script_processor.rb
|
100
|
+
- lib/emcee/post_processors/stylesheet_processor.rb
|
101
|
+
- lib/emcee/pre_processors/directive_processor.rb
|
102
102
|
- lib/emcee/railtie.rb
|
103
103
|
- lib/emcee/version.rb
|
104
104
|
- lib/generators/emcee/install/install_generator.rb
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- test/dummy/app/assets/components/test/test3.css
|
116
116
|
- test/dummy/app/assets/components/test/test3.html
|
117
117
|
- test/dummy/app/assets/components/test1.html
|
118
|
+
- test/dummy/app/assets/components/test6.html
|
118
119
|
- test/dummy/app/assets/javascripts/application.js
|
119
120
|
- test/dummy/app/assets/stylesheets/application.css
|
120
121
|
- test/dummy/app/controllers/application_controller.rb
|
@@ -163,10 +164,12 @@ files:
|
|
163
164
|
- test/dummy/tmp/cache/assets/test/sprockets/83958b863f75dc6cbe887cc7e0db513f
|
164
165
|
- test/dummy/tmp/cache/assets/test/sprockets/96626508ecce28b11270d0e13ca4edff
|
165
166
|
- test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
167
|
+
- test/dummy/tmp/cache/assets/test/sprockets/d4ee6708adf72d1eb87e17c8ac3ae163
|
166
168
|
- test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
167
169
|
- test/dummy/tmp/cache/assets/test/sprockets/de38944857ad9b137b1a944b4458197f
|
168
170
|
- test/dummy/tmp/cache/assets/test/sprockets/e0561b1cebd62df57d5d6ac9d2b23033
|
169
171
|
- test/dummy/tmp/cache/assets/test/sprockets/ea6d25feb3cd8cc19f7982458443f784
|
172
|
+
- test/dummy/tmp/cache/assets/test/sprockets/ef2c9664b54fb0d162127bdea23cb7d9
|
170
173
|
- test/dummy/tmp/cache/assets/test/sprockets/f16d30b33e206690649697e498a2f1a8
|
171
174
|
- test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
172
175
|
- test/dummy/tmp/cache/assets/test/sprockets/fadf553480495a92d11dade99298bf7e
|
@@ -174,7 +177,7 @@ files:
|
|
174
177
|
- test/dummy/vendor/assets/components/test4.js
|
175
178
|
- test/dummy_app_integration_test.rb
|
176
179
|
- test/helpers_test.rb
|
177
|
-
- test/
|
180
|
+
- test/post_processors_test.rb
|
178
181
|
- test/test_helper.rb
|
179
182
|
homepage: https://github.com/ahuth/emcee
|
180
183
|
licenses:
|
@@ -210,6 +213,7 @@ test_files:
|
|
210
213
|
- test/dummy/app/assets/components/test/test3.css
|
211
214
|
- test/dummy/app/assets/components/test/test3.html
|
212
215
|
- test/dummy/app/assets/components/test1.html
|
216
|
+
- test/dummy/app/assets/components/test6.html
|
213
217
|
- test/dummy/app/assets/javascripts/application.js
|
214
218
|
- test/dummy/app/assets/stylesheets/application.css
|
215
219
|
- test/dummy/app/controllers/application_controller.rb
|
@@ -260,10 +264,12 @@ test_files:
|
|
260
264
|
- test/dummy/tmp/cache/assets/test/sprockets/83958b863f75dc6cbe887cc7e0db513f
|
261
265
|
- test/dummy/tmp/cache/assets/test/sprockets/96626508ecce28b11270d0e13ca4edff
|
262
266
|
- test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
267
|
+
- test/dummy/tmp/cache/assets/test/sprockets/d4ee6708adf72d1eb87e17c8ac3ae163
|
263
268
|
- test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
264
269
|
- test/dummy/tmp/cache/assets/test/sprockets/de38944857ad9b137b1a944b4458197f
|
265
270
|
- test/dummy/tmp/cache/assets/test/sprockets/e0561b1cebd62df57d5d6ac9d2b23033
|
266
271
|
- test/dummy/tmp/cache/assets/test/sprockets/ea6d25feb3cd8cc19f7982458443f784
|
272
|
+
- test/dummy/tmp/cache/assets/test/sprockets/ef2c9664b54fb0d162127bdea23cb7d9
|
267
273
|
- test/dummy/tmp/cache/assets/test/sprockets/f16d30b33e206690649697e498a2f1a8
|
268
274
|
- test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
269
275
|
- test/dummy/tmp/cache/assets/test/sprockets/fadf553480495a92d11dade99298bf7e
|
@@ -271,6 +277,6 @@ test_files:
|
|
271
277
|
- test/dummy/vendor/assets/components/test4.js
|
272
278
|
- test/dummy_app_integration_test.rb
|
273
279
|
- test/helpers_test.rb
|
274
|
-
- test/
|
280
|
+
- test/post_processors_test.rb
|
275
281
|
- test/test_helper.rb
|
276
282
|
has_rdoc:
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Emcee
|
2
|
-
# The `DirectiveProcessor` is responsible for parsing and evaluating
|
3
|
-
# directive comments in a source file.
|
4
|
-
class DirectiveProcessor < Sprockets::DirectiveProcessor
|
5
|
-
# Matches the entire header/directive block. This is everything from the
|
6
|
-
# top of the file, enclosed in html comments.
|
7
|
-
HEADER_PATTERN = /\A((?m:\s*)(<!--(?m:.*?)-->))+/
|
8
|
-
|
9
|
-
# Implement `render` so that it uses our own header pattern.
|
10
|
-
def render(context, locals)
|
11
|
-
@context = context
|
12
|
-
@pathname = context.pathname
|
13
|
-
@directory = File.dirname(@pathname)
|
14
|
-
|
15
|
-
@header = data[HEADER_PATTERN, 0] || ""
|
16
|
-
@body = $' || data
|
17
|
-
# Ensure body ends in a new line
|
18
|
-
@body += "\n" if @body != "" && @body !~ /\n\Z/m
|
19
|
-
|
20
|
-
@included_pathnames = []
|
21
|
-
|
22
|
-
@result = ""
|
23
|
-
@result.force_encoding(body.encoding)
|
24
|
-
|
25
|
-
@has_written_body = false
|
26
|
-
|
27
|
-
process_directives
|
28
|
-
process_source
|
29
|
-
|
30
|
-
@result
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Emcee
|
4
|
-
# ImportProcessor scans a file for html imports and adds them to the current
|
5
|
-
# required assets.
|
6
|
-
class ImportProcessor
|
7
|
-
def initialize(context)
|
8
|
-
@context = context
|
9
|
-
@directory = File.dirname(context.pathname)
|
10
|
-
end
|
11
|
-
|
12
|
-
def process(data)
|
13
|
-
doc = Nokogiri::HTML.fragment(data)
|
14
|
-
require_assets(doc)
|
15
|
-
remove_imports(doc)
|
16
|
-
doc.to_s.lstrip
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def require_assets(doc)
|
22
|
-
doc.css("link[rel='import']").each do |node|
|
23
|
-
path = File.absolute_path(node.attribute("href"), @directory)
|
24
|
-
@context.require_asset(path)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def remove_imports(doc)
|
29
|
-
doc.css("link[rel='import']").each do |node|
|
30
|
-
node.remove
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Emcee
|
4
|
-
# ScriptProcessor scans a document for external script references and inlines
|
5
|
-
# them into the current document.
|
6
|
-
class ScriptProcessor
|
7
|
-
def initialize(context)
|
8
|
-
@context = context
|
9
|
-
@directory = File.dirname(context.pathname)
|
10
|
-
end
|
11
|
-
|
12
|
-
def process(data)
|
13
|
-
doc = Nokogiri::HTML.fragment(data)
|
14
|
-
inline_scripts(doc)
|
15
|
-
doc.to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def inline_scripts(doc)
|
21
|
-
doc.css("script[src]").each do |node|
|
22
|
-
path = absolute_path(node.attribute("src"))
|
23
|
-
content = @context.evaluate(path)
|
24
|
-
script = create_script(doc, content)
|
25
|
-
node.replace(script)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def absolute_path(path)
|
30
|
-
File.absolute_path(path, @directory)
|
31
|
-
end
|
32
|
-
|
33
|
-
def create_script(doc, content)
|
34
|
-
node = Nokogiri::XML::Node.new("script", doc)
|
35
|
-
node.content = content
|
36
|
-
node
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Emcee
|
4
|
-
# StylesheetProcessor scans a document for external stylesheet references and
|
5
|
-
# inlines them into the current document.
|
6
|
-
class StylesheetProcessor
|
7
|
-
def initialize(context)
|
8
|
-
@context = context
|
9
|
-
@directory = File.dirname(context.pathname)
|
10
|
-
end
|
11
|
-
|
12
|
-
def process(data)
|
13
|
-
doc = Nokogiri::HTML.fragment(data)
|
14
|
-
inline_styles(doc)
|
15
|
-
doc.to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def inline_styles(doc)
|
21
|
-
doc.css("link[rel='stylesheet']").each do |node|
|
22
|
-
path = absolute_path(node.attribute("href"))
|
23
|
-
content = @context.evaluate(path)
|
24
|
-
style = create_style(doc, content)
|
25
|
-
node.replace(style)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def absolute_path(path)
|
30
|
-
File.absolute_path(path, @directory)
|
31
|
-
end
|
32
|
-
|
33
|
-
def create_style(doc, content)
|
34
|
-
node = Nokogiri::XML::Node.new("style", doc)
|
35
|
-
node.content = content
|
36
|
-
node
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|