slim-embedded-minify 0.2.5 → 0.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14375e81992194bca2bc3c42733011ccb783db89cf89a3dffbb62ec3245f2184
4
- data.tar.gz: 824370e31b97a05335c8d4c4a64c1bed55ea02ea9a678faa8609a4308c1657b6
3
+ metadata.gz: 559dbaf2124f8ff4c7e5c7a41f6420ad9bd16c6ee008e3d54af3d5263ddc7509
4
+ data.tar.gz: 7a9612c610b3f4bb61a8712b3c875aca6d752e5710a55a88cfe41a3e18594322
5
5
  SHA512:
6
- metadata.gz: 947549a68e10777ab21e2779ac67491a7be49cdb54e800f08e8b0fa891138ee72dc249f3216bbe9ac8f2b9f1e3574f1592a156c2ef90fa3c751771b1237e317b
7
- data.tar.gz: df9d4962e7ba6e74492306c5367ff7c44bb6c5a9527b77dd19514bd2104da0a0de0020cd0bac68e58ccdbe33de7cfe48bb3819eef2cb4c4fb2391a38540e69e4
6
+ metadata.gz: c3a31cce0082ecd69d49bcaffde0b9e6e992c5b178e0a6678071dfb7b3ab7196078b86d297b67680cadd4faac561fe31770b7df25dac40427c38f3f97aad787f
7
+ data.tar.gz: a6003c38359fe0f33c309554bd3d3dfa3afd527d9b1aeb42f8290074dc0488dcbd5894a5ac7a02923b422fb2168e98e6abcd02d1c437101f5e56ea4f4da7e4b0
data/CHANGELOG.md CHANGED
@@ -1,8 +1,16 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.2.7 - 2023-08-01
4
+
5
+ - Fix incorrect removing when using escaped quotation for css.
6
+
7
+ ## 0.2.6 - 2023-08-01
8
+
9
+ - Fix incorrect removing when using escaped quotation.
10
+
3
11
  ## 0.2.5 - 2023-07-27
4
12
 
5
- Fix to not delete anything other than comments.
13
+ - Fix to not delete anything other than comments.
6
14
 
7
15
  ## 0.2.4 - 2023-07-27
8
16
 
@@ -14,6 +14,8 @@ module Slim
14
14
  def remove_comments!(line)
15
15
  need_deletion = false
16
16
  need_deletion_all = false
17
+ escaped = false
18
+ escaped_backslash = false
17
19
  inside_char = nil
18
20
  line[-1] = line.last.chars.each_with_index.map do |char, index|
19
21
  next if need_deletion_all
@@ -29,22 +31,25 @@ module Slim
29
31
  elsif char == "/" && next_char(line, index) == "/" && inside_char.nil? && !need_deletion
30
32
  need_deletion_all = true
31
33
  next
32
- elsif char == '"' && !need_deletion
33
- if inside_char == '"'
34
- inside_char = nil
35
- next char
34
+ elsif char == "\\" && next_char(line, index) == "\\" && inside_char
35
+ escaped_backslash = true
36
+ next char
37
+ elsif char == "\\"
38
+ if ["'", '"'].include?(next_char(line, index)) && inside_char == next_char(line, index) && !escaped_backslash
39
+ escaped = true
36
40
  end
37
-
38
- inside_char = '"' if inside_char.nil?
39
- elsif char == "'" && !need_deletion
40
- if inside_char == "'"
41
- inside_char = nil
41
+ escaped_backslash = false
42
+ next char
43
+ elsif ["'", '"'].include?(char) && !need_deletion
44
+ if inside_char == char
45
+ inside_char = nil unless escaped
46
+ escaped = false
42
47
  next char
43
48
  end
44
49
 
45
- inside_char = "'" if inside_char.nil?
50
+ inside_char = char if inside_char.nil?
46
51
  end
47
- char unless need_deletion
52
+ char if !need_deletion || inside_char
48
53
  end&.compact&.join
49
54
  end
50
55
  end
@@ -41,8 +41,11 @@ module Slim
41
41
 
42
42
  def remove_comments!(line)
43
43
  need_deletion = false
44
+ escaped = false
45
+ escaped_backslash = false
44
46
  inside_char = nil
45
47
  line[-1] = line.last.chars.each_with_index.map do |char, index|
48
+
46
49
  if char == "/" && next_char(line, index) == "*" && inside_char.nil?
47
50
  if remaining_string_range(line, index).include?("*/")
48
51
  need_deletion = true
@@ -51,22 +54,25 @@ module Slim
51
54
  elsif char == "/" && prev_char(line, index) == "*" && inside_char.nil? && need_deletion
52
55
  need_deletion = false
53
56
  next
54
- elsif char == '"' && !need_deletion
55
- if inside_char == '"'
56
- inside_char = nil
57
- next char
57
+ elsif char == "\\" && next_char(line, index) == "\\" && inside_char
58
+ escaped_backslash = true
59
+ next char
60
+ elsif char == "\\"
61
+ if ["'", '"'].include?(next_char(line, index)) && inside_char == next_char(line, index) && !escaped_backslash
62
+ escaped = true
58
63
  end
59
-
60
- inside_char = '"' if inside_char.nil?
61
- elsif char == "'" && !need_deletion
62
- if inside_char == "'"
63
- inside_char = nil
64
+ escaped_backslash = false
65
+ next char
66
+ elsif ["'", '"'].include?(char) && !need_deletion
67
+ if inside_char == char
68
+ inside_char = nil unless escaped
69
+ escaped = false
64
70
  next char
65
71
  end
66
72
 
67
- inside_char = "'" if inside_char.nil?
73
+ inside_char = char if inside_char.nil?
68
74
  end
69
- char unless need_deletion
75
+ char if !need_deletion || inside_char
70
76
  end&.compact&.join
71
77
  end
72
78
 
@@ -75,7 +81,7 @@ module Slim
75
81
  end
76
82
 
77
83
  def prev_char(line, index)
78
- line.last[index - 1]
84
+ line.last[index - 1] if index.positive?
79
85
  end
80
86
 
81
87
  def next_char(line, index)
@@ -89,7 +95,33 @@ module Slim
89
95
  end
90
96
 
91
97
  def stripped_quotes(line)
92
- line.last.gsub(/(['"]).*?\1/, "")
98
+ inside_char = nil
99
+ escaped = false
100
+ escaped_backslash = false
101
+ line.last.chars.each_with_index.filter_map do |char, index|
102
+ if ["'", '"'].include?(char) && inside_char.nil?
103
+ inside_char = char
104
+ next
105
+ elsif char == "\\" && next_char(line, index) == "\\" && inside_char
106
+ escaped_backslash = true
107
+ next
108
+ elsif char == "\\"
109
+ if ["'",
110
+ '"'].include?(next_char(line, index)) && inside_char == next_char(line, index) && !escaped_backslash
111
+ escaped = true
112
+ end
113
+ escaped_backslash = false
114
+ next
115
+ elsif char == inside_char && !inside_char.nil?
116
+ inside_char = nil unless escaped
117
+ escaped = false
118
+ next
119
+ elsif inside_char
120
+ next
121
+ else
122
+ char
123
+ end
124
+ end.join
93
125
  end
94
126
 
95
127
  def empty_line?(line)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlimEmbeddedMinify
4
- VERSION = "0.2.5"
4
+ VERSION = "0.2.7"
5
5
  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.5
4
+ version: 0.2.7
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-27 00:00:00.000000000 Z
11
+ date: 2023-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim