condenser 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +1 -0
  4. data/lib/condenser.rb +108 -0
  5. data/lib/condenser/asset.rb +221 -0
  6. data/lib/condenser/cache/memory_store.rb +92 -0
  7. data/lib/condenser/cache/null_store.rb +37 -0
  8. data/lib/condenser/context.rb +272 -0
  9. data/lib/condenser/encoding_utils.rb +155 -0
  10. data/lib/condenser/environment.rb +50 -0
  11. data/lib/condenser/errors.rb +11 -0
  12. data/lib/condenser/export.rb +68 -0
  13. data/lib/condenser/manifest.rb +89 -0
  14. data/lib/condenser/pipeline.rb +82 -0
  15. data/lib/condenser/processors/babel.min.js +25 -0
  16. data/lib/condenser/processors/babel_processor.rb +87 -0
  17. data/lib/condenser/processors/node_processor.rb +38 -0
  18. data/lib/condenser/processors/rollup.js +24083 -0
  19. data/lib/condenser/processors/rollup_processor.rb +164 -0
  20. data/lib/condenser/processors/sass_importer.rb +81 -0
  21. data/lib/condenser/processors/sass_processor.rb +300 -0
  22. data/lib/condenser/resolve.rb +202 -0
  23. data/lib/condenser/server.rb +307 -0
  24. data/lib/condenser/templating_engine/erb.rb +21 -0
  25. data/lib/condenser/utils.rb +32 -0
  26. data/lib/condenser/version.rb +3 -0
  27. data/lib/condenser/writers/file_writer.rb +28 -0
  28. data/lib/condenser/writers/zlib_writer.rb +42 -0
  29. data/test/cache_test.rb +24 -0
  30. data/test/environment_test.rb +49 -0
  31. data/test/manifest_test.rb +513 -0
  32. data/test/pipeline_test.rb +31 -0
  33. data/test/preprocessor/babel_test.rb +21 -0
  34. data/test/processors/rollup_test.rb +71 -0
  35. data/test/resolve_test.rb +105 -0
  36. data/test/server_test.rb +361 -0
  37. data/test/templates/erb_test.rb +18 -0
  38. data/test/test_helper.rb +68 -0
  39. data/test/transformers/scss_test.rb +49 -0
  40. metadata +193 -0
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class CondenserErubiTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ super
7
+ @env.unregister_preprocessor('application/javascript', Condenser::BabelProcessor)
8
+ end
9
+
10
+ test 'find' do
11
+ file 'test.js.erb', "1<%= 1 + 1 %>3\n"
12
+
13
+ assert_file 'test.js', 'application/javascript', <<~CSS
14
+ 123
15
+ CSS
16
+ end
17
+
18
+ end
@@ -0,0 +1,68 @@
1
+ # To make testing/debugging easier, test within this source tree versus an
2
+ # installed gem
3
+ $LOAD_PATH << File.expand_path('../lib', __FILE__)
4
+
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_group 'lib', 'condenser/lib'
8
+ add_group 'ext', 'condenser/ext'
9
+ end
10
+
11
+ require 'fileutils'
12
+
13
+ require 'condenser'
14
+ require 'condenser/server'
15
+ require 'condenser/cache/memory_store'
16
+
17
+ require "active_support"
18
+ require "active_support/testing/autorun"
19
+ require 'mocha/setup'
20
+ require 'minitest/reporters'
21
+
22
+ # This is because Rails changed it's minitest intergration, not sure whats
23
+ # up here
24
+ Minitest.load_plugins
25
+ Minitest.extensions.delete('rails')
26
+ Minitest.extensions.unshift('rails')
27
+
28
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
29
+
30
+ class ActiveSupport::TestCase
31
+
32
+ def setup
33
+ @path = Dir.mktmpdir
34
+ @env = Condenser.new(@path)
35
+ end
36
+
37
+ def teardown
38
+ FileUtils.remove_entry(@path, true)
39
+ end
40
+
41
+ def assert_json(json, &block)
42
+ assert_equal json, jbuild(&block)
43
+ end
44
+
45
+ def file(name, source)
46
+ FileUtils.mkdir_p(File.join(@path, File.dirname(name)))
47
+ File.write(File.join(@path, name), source)
48
+ end
49
+
50
+ def assert_file(path, mime_types, source=nil)
51
+ asset = @env.find(path)
52
+ assert asset, "Couldn't find asset \"#{path}\""
53
+ asset.process
54
+ assert_equal path, asset.filename
55
+ assert_equal Array(mime_types), asset.content_types
56
+ assert_equal(source.rstrip, asset.source.rstrip) if !source.nil?
57
+ end
58
+
59
+ def assert_exported_file(path, mime_types, source=nil)
60
+ asset = @env.find(path)
61
+ assert asset, "Couldn't find asset \"#{path}\""
62
+ asset = asset.export
63
+ assert_equal path, asset.filename
64
+ assert_equal Array(mime_types), asset.content_types
65
+ assert_equal(source.rstrip, asset.source.rstrip) if !source.nil?
66
+ end
67
+
68
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ class CondenserSCSSTest < ActiveSupport::TestCase
4
+
5
+ test 'find' do
6
+ file 'test.scss', <<~SCSS
7
+ body {
8
+ background-color: green;
9
+
10
+ &:hover {
11
+ background-color: blue;
12
+ }
13
+ }
14
+ SCSS
15
+
16
+ assert_file 'test.css', 'text/css', <<~CSS
17
+ body {
18
+ background-color: green; }
19
+ body:hover {
20
+ background-color: blue; }
21
+ CSS
22
+ end
23
+
24
+ test 'scss import globing' do
25
+ file "c/dir/a.scss", "body { color: blue; }"
26
+ file "c/dir/b.scss", "body { color: green; }"
27
+
28
+ file 'c/test.scss', '@import "./dir/*"'
29
+
30
+ assert_file 'c/test.css', 'text/css', <<~CSS
31
+ body {
32
+ color: blue; }
33
+
34
+ body {
35
+ color: green; }
36
+ CSS
37
+
38
+ file 'c/test2.scss', '@import "c/dir/*"'
39
+
40
+ assert_file 'c/test2.css', 'text/css', <<~CSS
41
+ body {
42
+ color: blue; }
43
+
44
+ body {
45
+ color: green; }
46
+ CSS
47
+ end
48
+
49
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: condenser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jon Bracy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: erubi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">"
32
+ - !ruby/object:Gem::Version
33
+ version: '1'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '3'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">"
42
+ - !ruby/object:Gem::Version
43
+ version: '1'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '3'
47
+ - !ruby/object:Gem::Dependency
48
+ name: activesupport
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sass
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.4'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.4'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sassc
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.10.1
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '2.0'
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.10.1
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '2.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: zopfli
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.0.7
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.0.7
109
+ description: Condenser is a Rack-based asset packaging system that concatenates and
110
+ serves JavaScript, CSS, Sass, and SCSS.
111
+ email:
112
+ - jonbracy@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files:
116
+ - README.md
117
+ files:
118
+ - LICENSE
119
+ - README.md
120
+ - lib/condenser.rb
121
+ - lib/condenser/asset.rb
122
+ - lib/condenser/cache/memory_store.rb
123
+ - lib/condenser/cache/null_store.rb
124
+ - lib/condenser/context.rb
125
+ - lib/condenser/encoding_utils.rb
126
+ - lib/condenser/environment.rb
127
+ - lib/condenser/errors.rb
128
+ - lib/condenser/export.rb
129
+ - lib/condenser/manifest.rb
130
+ - lib/condenser/pipeline.rb
131
+ - lib/condenser/processors/babel.min.js
132
+ - lib/condenser/processors/babel_processor.rb
133
+ - lib/condenser/processors/node_processor.rb
134
+ - lib/condenser/processors/rollup.js
135
+ - lib/condenser/processors/rollup_processor.rb
136
+ - lib/condenser/processors/sass_importer.rb
137
+ - lib/condenser/processors/sass_processor.rb
138
+ - lib/condenser/resolve.rb
139
+ - lib/condenser/server.rb
140
+ - lib/condenser/templating_engine/erb.rb
141
+ - lib/condenser/utils.rb
142
+ - lib/condenser/version.rb
143
+ - lib/condenser/writers/file_writer.rb
144
+ - lib/condenser/writers/zlib_writer.rb
145
+ - test/cache_test.rb
146
+ - test/environment_test.rb
147
+ - test/manifest_test.rb
148
+ - test/pipeline_test.rb
149
+ - test/preprocessor/babel_test.rb
150
+ - test/processors/rollup_test.rb
151
+ - test/resolve_test.rb
152
+ - test/server_test.rb
153
+ - test/templates/erb_test.rb
154
+ - test/test_helper.rb
155
+ - test/transformers/scss_test.rb
156
+ homepage: https://github.com/malomalo/condenser
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options:
162
+ - "--main"
163
+ - README.md
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: 2.4.0
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ requirements: []
177
+ rubyforge_project:
178
+ rubygems_version: 2.7.4
179
+ signing_key:
180
+ specification_version: 4
181
+ summary: A Rack-based asset packaging system
182
+ test_files:
183
+ - test/cache_test.rb
184
+ - test/environment_test.rb
185
+ - test/manifest_test.rb
186
+ - test/pipeline_test.rb
187
+ - test/preprocessor/babel_test.rb
188
+ - test/processors/rollup_test.rb
189
+ - test/resolve_test.rb
190
+ - test/server_test.rb
191
+ - test/templates/erb_test.rb
192
+ - test/test_helper.rb
193
+ - test/transformers/scss_test.rb