slim-embedded-minify 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff321da624a61d8215c09916aa017f32c2ba58c23ef5a95ab43779a92662d9e8
4
- data.tar.gz: df8297c4a0af39b8b6529ad909e4fbfde7ffff1938704f27c6b16cb302c1cd4e
3
+ metadata.gz: 697b542e806ec204502d7380a4a58a6ff124e35b4a122a1f91dcabb49443f10e
4
+ data.tar.gz: dc79454cac050709c4cac6f9d2d8471e856d2601b4d7b6ad5c74478b72a91155
5
5
  SHA512:
6
- metadata.gz: 8a5fcc44e03800cc7c29835c0abe1f0b7649e5162b94f117c2893d3b87c1de89acf0a99ce1514d9b691cf6b8da92d1ac53c49540eb6919f025bf98a38f10b021
7
- data.tar.gz: 4b678a3bf1f78606222b31319a6c64c204ba631b4c839f265ce45183a6237529e7b65d2cecb8b66b09e956bc0ca338498d52a30e3aa7f1b9c740839ada082a6f
6
+ metadata.gz: 332eb59aa954df089d98101630fd6b7bfb0dee70b752e5f422adde76eac4f8ea18027cbc415bedb5c3375232566390f39f9065d7d78cb8bba6c6fbb81eca1b7e
7
+ data.tar.gz: 826969cc768ed7d071fbb87fb273acc76454100d72182a423310e59f6ed8a1e6858f0e96f0344da64cc001d4f4cc334d45e3ca17811e4d1987f32e8733fc7f55
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.2.1 - 2023-07-18
4
+
5
+ - Refactor code.
6
+
3
7
  ## 0.2.0 - 2023-07-13
4
8
 
5
9
  - Add support for css minify.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # SlimEmbeddedMinify
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/slim-embedded-minify.svg)](https://badge.fury.io/rb/slim-embedded-minify)
4
+
3
5
  A slim file to minify embedded code.
4
6
 
5
7
  ## Installation
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Slim
4
+ class Embedded < Filter
5
+ module Minify
6
+ module Javascript
7
+ include Tag
8
+
9
+ def on_slim_embedded(engine, body, attrs)
10
+ minified_body = minify(body)
11
+ super(engine, minified_body, attrs)
12
+ end
13
+
14
+ private
15
+
16
+ def remove_comments!(line)
17
+ line.last.gsub!(/((?<!['"])\/\*[^*\/]*\*\/?(?<!['"]))/, '')
18
+ line.last.gsub!(/((?<!['"])\/\/.*[^'"]+)/, '')
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Slim
4
+ class Embedded < Filter
5
+ module Minify
6
+ module Tag
7
+ def on_slim_embedded(engine, body, attrs)
8
+ body = minify(body) if engine == :css
9
+ super(engine, body, attrs)
10
+ end
11
+
12
+ private
13
+
14
+ def minify(body)
15
+ multiline_comment = false
16
+ body.map do |line|
17
+ if line.instance_of?(Array) && line.first == :slim
18
+ remove_comments!(line)
19
+ remove_whitespace!(line)
20
+
21
+ stripped_quotes = stripped_quotes(line)
22
+ if stripped_quotes.match?(%r{/\*})
23
+ multiline_comment = true
24
+ next
25
+ elsif multiline_comment
26
+ multiline_comment = false if stripped_quotes.match?(%r{\*/})
27
+ next
28
+ end
29
+ line
30
+ else
31
+ line
32
+ end
33
+ end.compact
34
+ end
35
+
36
+ def remove_comments!(line)
37
+ line.last.gsub!(/((?<!['"])\/\*[^*\/]*\*\/?(?<!['"]))/, '')
38
+ end
39
+
40
+ def remove_whitespace!(line)
41
+ if line.last.gsub(/\n/, '').match?(/^\s*$/)
42
+ line.last.gsub!(/^\s*$/, '')
43
+ end
44
+ end
45
+
46
+ def stripped_quotes(line)
47
+ line.last.gsub(/(['"]).*?\1/, '')
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlimEmbeddedMinify
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -3,5 +3,18 @@
3
3
  require "slim"
4
4
 
5
5
  require_relative "minify/version"
6
- require_relative "minify/java_script_engine"
7
- require_relative "minify/tag_engine"
6
+
7
+ require_relative "minify/tag"
8
+ require_relative "minify/javascript"
9
+
10
+ module Slim
11
+ class Embedded < Filter
12
+ class TagEngine < Engine
13
+ prepend Minify::Tag
14
+ end
15
+
16
+ class JavaScriptEngine < TagEngine
17
+ prepend Minify::Javascript
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim-embedded-minify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-13 00:00:00.000000000 Z
11
+ date: 2023-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim
@@ -38,8 +38,8 @@ files:
38
38
  - README.md
39
39
  - Rakefile
40
40
  - lib/slim/embedded/minify.rb
41
- - lib/slim/embedded/minify/java_script_engine.rb
42
- - lib/slim/embedded/minify/tag_engine.rb
41
+ - lib/slim/embedded/minify/javascript.rb
42
+ - lib/slim/embedded/minify/tag.rb
43
43
  - lib/slim/embedded/minify/version.rb
44
44
  - slim-embedded-minify.gemspec
45
45
  homepage: https://github.com/ydah/slim-embedded-minify
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Slim
4
- class Embedded < Filter
5
- class JavaScriptEngine < TagEngine
6
- alias orig_js_on_slim_embedded on_slim_embedded
7
-
8
- def on_slim_embedded(engine, body, attrs)
9
- minified_body = minify(body)
10
- orig_js_on_slim_embedded(engine, minified_body, attrs)
11
- end
12
-
13
- private
14
-
15
- def remove_comments!(line)
16
- line.last.gsub!(/((?<!['"])\/\*[^*\/]*\*\/?(?<!['"]))/, '')
17
- line.last.gsub!(/((?<!['"])\/\/.*[^'"]+)/, '')
18
- end
19
- end
20
- end
21
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Slim
4
- class Embedded < Filter
5
- class TagEngine < Engine
6
- alias orig_tag_on_slim_embedded on_slim_embedded
7
-
8
- def on_slim_embedded(engine, body, attrs)
9
- body = minify(body) if engine == :css
10
- orig_tag_on_slim_embedded(engine, body, attrs)
11
- end
12
-
13
- private
14
-
15
- def minify(body)
16
- multiline_comment = false
17
- body.map do |line|
18
- if line.instance_of?(Array) && line.first == :slim
19
- remove_comments!(line)
20
- remove_whitespace!(line)
21
-
22
- stripped_quotes = stripped_quotes(line)
23
- if stripped_quotes.match?(%r{/\*})
24
- multiline_comment = true
25
- next
26
- elsif multiline_comment
27
- multiline_comment = false if stripped_quotes.match?(%r{\*/})
28
- next
29
- end
30
- line
31
- else
32
- line
33
- end
34
- end.compact
35
- end
36
-
37
- def remove_comments!(line)
38
- line.last.gsub!(/((?<!['"])\/\*[^*\/]*\*\/?(?<!['"]))/, '')
39
- end
40
-
41
- def remove_whitespace!(line)
42
- if line.last.gsub(/\n/, '').match?(/^\s*$/)
43
- line.last.gsub!(/^\s*$/, '')
44
- end
45
- end
46
-
47
- def stripped_quotes(line)
48
- line.last.gsub(/(['"]).*?\1/, '')
49
- end
50
- end
51
- end
52
- end