darkroom 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/VERSION +1 -1
- data/lib/darkroom/asset.rb +23 -5
- data/lib/darkroom/darkroom.rb +6 -0
- data/lib/darkroom/delegates/javascript.rb +2 -4
- data/lib/darkroom/version.rb +1 -1
- data/lib/darkroom.rb +0 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfceb46e778a627cdd5fb64a51224ce2fdbfabb27dc4020e625d470fd80050a5
|
4
|
+
data.tar.gz: 38478af8de2fb0c42f46857e204b05ba76fa5f18415e0ae7d66baaefb04a5d8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 513abc20887e655aa9ecbcdfb706ae9c75d0e97907de7cd72e42aec6544839c4e96596f576b551b3e06dbc8d0fcd1edacbb212a662a017c6edbf0ed6c3111b58
|
7
|
+
data.tar.gz: e93f811868982d3ede4e64c848f9479a8564959845d0a1dea3a1bce980961d9fb8278513f969bfef45ac258fc39bce486c1915129ed69c914ffdce75ad0060ed
|
data/README.md
CHANGED
@@ -44,9 +44,9 @@ project includes HTX templates or you wish to minify CSS and/or JavaScript asset
|
|
44
44
|
to be added to your Gemfile:
|
45
45
|
|
46
46
|
```ruby
|
47
|
-
gem('htx')
|
48
|
-
gem('sassc')
|
49
|
-
gem('
|
47
|
+
gem('htx') # HTX compilation
|
48
|
+
gem('sassc') # CSS minification
|
49
|
+
gem('terser') # JavaScript and HTX minification
|
50
50
|
```
|
51
51
|
|
52
52
|
## Usage
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/darkroom/asset.rb
CHANGED
@@ -5,6 +5,12 @@ require('digest')
|
|
5
5
|
require('set')
|
6
6
|
|
7
7
|
require_relative('darkroom')
|
8
|
+
require_relative('errors/asset_error')
|
9
|
+
require_relative('errors/asset_not_found_error')
|
10
|
+
require_relative('errors/circular_reference_error')
|
11
|
+
require_relative('errors/missing_library_error')
|
12
|
+
require_relative('errors/processing_error')
|
13
|
+
require_relative('errors/unrecognized_extension_error')
|
8
14
|
|
9
15
|
class Darkroom
|
10
16
|
##
|
@@ -241,8 +247,13 @@ class Darkroom
|
|
241
247
|
# * +ignore+ - Assets already accounted for as dependency tree is walked (to prevent infinite loops when
|
242
248
|
# circular chains are encountered).
|
243
249
|
#
|
244
|
-
def dependencies(ignore =
|
245
|
-
@dependencies
|
250
|
+
def dependencies(ignore = nil)
|
251
|
+
return @dependencies if @dependencies
|
252
|
+
|
253
|
+
dependencies = accumulate(:dependencies, ignore)
|
254
|
+
@dependencies = dependencies unless ignore
|
255
|
+
|
256
|
+
dependencies
|
246
257
|
end
|
247
258
|
|
248
259
|
##
|
@@ -251,8 +262,13 @@ class Darkroom
|
|
251
262
|
# * +ignore+ - Assets already accounted for as import tree is walked (to prevent infinite loops when
|
252
263
|
# circular chains are encountered).
|
253
264
|
#
|
254
|
-
def imports(ignore =
|
255
|
-
@imports
|
265
|
+
def imports(ignore = nil)
|
266
|
+
return @imports if @imports
|
267
|
+
|
268
|
+
imports = accumulate(:imports, ignore)
|
269
|
+
@imports = imports unless ignore
|
270
|
+
|
271
|
+
imports
|
256
272
|
end
|
257
273
|
|
258
274
|
##
|
@@ -419,7 +435,7 @@ class Darkroom
|
|
419
435
|
# Darkroom does not explicitly depend on any libraries necessary for asset compilation or minification,
|
420
436
|
# since not every app will use every kind of asset or use minification. It is instead up to each app
|
421
437
|
# using Darkroom to specify any needed compilation and minification libraries as direct dependencies
|
422
|
-
# (e.g. specify +gem('
|
438
|
+
# (e.g. specify +gem('terser')+ in the app's Gemfile if JavaScript minification is desired).
|
423
439
|
#
|
424
440
|
def require_libs
|
425
441
|
begin
|
@@ -446,7 +462,9 @@ class Darkroom
|
|
446
462
|
# circular references are encountered).
|
447
463
|
#
|
448
464
|
def accumulate(name, ignore)
|
465
|
+
ignore ||= Set.new
|
449
466
|
ignore << self
|
467
|
+
|
450
468
|
process
|
451
469
|
|
452
470
|
instance_variable_get(:"@own_#{name}").each_with_object([]) do |asset, assets|
|
data/lib/darkroom/darkroom.rb
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
require('set')
|
4
4
|
|
5
|
+
require_relative('asset')
|
6
|
+
require_relative('errors/asset_not_found_error')
|
7
|
+
require_relative('errors/duplicate_asset_error')
|
8
|
+
require_relative('errors/invalid_path_error')
|
9
|
+
require_relative('errors/processing_error')
|
10
|
+
|
5
11
|
##
|
6
12
|
# Main class providing fast, lightweight, and straightforward web asset management.
|
7
13
|
#
|
@@ -7,10 +7,8 @@ class Darkroom
|
|
7
7
|
JavaScriptDelegate = Delegate.new(
|
8
8
|
content_type: 'text/javascript',
|
9
9
|
import_regex: /^ *import +#{QUOTED_PATH.source} *;? *(\n|$)/.freeze,
|
10
|
-
minify_lib: '
|
11
|
-
minify: ->(content)
|
12
|
-
Uglifier.compile(content, harmony: true)
|
13
|
-
end,
|
10
|
+
minify_lib: 'terser',
|
11
|
+
minify: ->(content) { Terser.compile(content) },
|
14
12
|
)
|
15
13
|
end
|
16
14
|
end
|
data/lib/darkroom/version.rb
CHANGED
data/lib/darkroom.rb
CHANGED
@@ -9,15 +9,6 @@ require('darkroom/delegates/html')
|
|
9
9
|
require('darkroom/delegates/htx')
|
10
10
|
require('darkroom/delegates/javascript')
|
11
11
|
|
12
|
-
require('darkroom/errors/asset_error')
|
13
|
-
require('darkroom/errors/asset_not_found_error')
|
14
|
-
require('darkroom/errors/circular_reference_error')
|
15
|
-
require('darkroom/errors/duplicate_asset_error')
|
16
|
-
require('darkroom/errors/invalid_path_error')
|
17
|
-
require('darkroom/errors/missing_library_error')
|
18
|
-
require('darkroom/errors/processing_error')
|
19
|
-
require('darkroom/errors/unrecognized_extension_error')
|
20
|
-
|
21
12
|
Darkroom.register('.css', Darkroom::Asset::CSSDelegate)
|
22
13
|
Darkroom.register('.htm', '.html', Darkroom::Asset::HTMLDelegate)
|
23
14
|
Darkroom.register('.htx', Darkroom::Asset::HTXDelegate)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: darkroom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Pickens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03
|
11
|
+
date: 2022-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|