slim-embedded-minify 0.2.0 → 0.2.2

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: c8790fa5ff94a6dea3f1c2ae7918b4c4d4fdbba1f0701f669e3504436235d21a
4
+ data.tar.gz: ff1238ac7c872c6c7eb01e9a5a337c7fe7755faab2324278fb847ad3cdc3e6a4
5
5
  SHA512:
6
- metadata.gz: 8a5fcc44e03800cc7c29835c0abe1f0b7649e5162b94f117c2893d3b87c1de89acf0a99ce1514d9b691cf6b8da92d1ac53c49540eb6919f025bf98a38f10b021
7
- data.tar.gz: 4b678a3bf1f78606222b31319a6c64c204ba631b4c839f265ce45183a6237529e7b65d2cecb8b66b09e956bc0ca338498d52a30e3aa7f1b9c740839ada082a6f
6
+ metadata.gz: 6043fc78dce665411c16075931132e9d2674ce67b527ccb3d56bdb6f8d0d74bba8e8cfed4319ccba49aaa9cfd4d7bc5556dfab182422b8cfd225fd869bdc3118
7
+ data.tar.gz: 6ca3fe0cebb59a549af68dfe0172d640ddac6006f123248e2bc7866f1adf2f3456635267fe1166f2fff2cb6e45511b57bb60ea15d37fe95282751008cb72643e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## Unreleased
2
2
 
3
+ - Fix an invalid remove comment.
4
+
5
+ ## 0.2.1 - 2023-07-18
6
+
7
+ - Refactor code.
8
+
3
9
  ## 0.2.0 - 2023-07-13
4
10
 
5
11
  - 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.2"
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.2
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-20 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
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements: []
67
- rubygems_version: 3.4.13
67
+ rubygems_version: 3.4.10
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: A slim file to minify embedded code.
@@ -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