debride-erb 1.0.1 → 1.0.2

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
- SHA1:
3
- metadata.gz: 4d4ebf45842d991313fc528425c0ef355fac5c0f
4
- data.tar.gz: 5ecc380d48d635109791a47acab3bfb0876ff612
2
+ SHA256:
3
+ metadata.gz: 81c551fc516b4b0008e5ad8baa6fbbe97d82eefb884ffeea51cba53b1d6cb51f
4
+ data.tar.gz: 5f84aabef77af827bacb91b2f420a62db4909dacfb840ad9377b9458a6e945ad
5
5
  SHA512:
6
- metadata.gz: 776bb16cffbdb6f6346b1e4696fe07ffc3da38a1bc2fca0912414abc01c03bde8063a17bb8350d0510aaae33fbd5e11caf6aa89dfd868897f6ae795ee894357b
7
- data.tar.gz: 41d636e2e6f54b8ef7ede2dc9389ec031436ae46b4b70f01e691dd0833a2174f7f70487c811db01ebac05158df0765a5df71399bbac55aeb22b4b84d8387d7fd
6
+ metadata.gz: 296e8b21a2b7ada3f91435b2d93c9a173f1ae3037fd55b76d99620798a177e21affd2bcbcf2bed02456bc5146c89873209768ba7e7743a6535401bd20266a4ed
7
+ data.tar.gz: c449998879e46d947fd1df7a285aed79e43533d8a3d53f9317ef5a569123e6c6a04d08ffa0bc179db043aabaeb299f33d9f1f4877bcaaca3087d29a83faffacd
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,13 @@
1
+ === 1.0.2 / 2023-05-02
2
+
3
+ * 1 major enhancement:
4
+
5
+ * Switched from erubis to to erubi.
6
+
7
+ * 1 minor enhancement:
8
+
9
+ * Brought in action_view hacks to enable block calls w/ <%= forms.
10
+
1
11
  === 1.0.1 / 2015-04-13
2
12
 
3
13
  * 1 bug fix:
@@ -9,4 +19,3 @@
9
19
  * 1 major enhancement
10
20
 
11
21
  * Birthday!
12
-
data/Manifest.txt CHANGED
@@ -4,5 +4,6 @@ Manifest.txt
4
4
  README.rdoc
5
5
  Rakefile
6
6
  lib/debride_erb.rb
7
+ test/block.erb
7
8
  test/file.erb
8
9
  test/test_debride_erb.rb
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ Hoe.spec "debride-erb" do
13
13
  license "MIT"
14
14
 
15
15
  dependency "debride", "~> 1.2"
16
- dependency "erubis", "~> 2.7.0"
16
+ dependency "erubi", "~> 1.10"
17
17
  end
18
18
 
19
19
  # vim: syntax=ruby
data/lib/debride_erb.rb CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  require "debride"
4
4
  require "erb"
5
- require "erubis"
5
+ require "erubi"
6
6
 
7
7
  class Debride
8
8
  module Erb
9
- VERSION = "1.0.1"
9
+ VERSION = "1.0.2"
10
10
  end
11
11
 
12
12
  ##
@@ -16,7 +16,7 @@ class Debride
16
16
  def process_erb file
17
17
  erb = File.read file
18
18
 
19
- ruby = Erubis.new(erb).src
19
+ ruby = Erubi.new(erb).src
20
20
 
21
21
  begin
22
22
  RubyParser.new.process ruby, file
@@ -26,22 +26,66 @@ class Debride
26
26
  end
27
27
  end
28
28
 
29
- class Erubis < ::Erubis::Eruby # :nodoc:
30
- BLOCK_EXPR = /\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/
29
+ # stolen (and munged) from lib/action_view/template/handlers/erb/erubi.rb
30
+ class Erubi < ::Erubi::Engine
31
+ # :nodoc: all
32
+ def initialize(input, properties = {})
33
+ @newline_pending = 0
31
34
 
32
- def add_expr_literal(src, code)
33
- if code =~ BLOCK_EXPR
34
- src << '@output_buffer.append= ' << code
35
+ properties[:postamble] = "_buf.to_s"
36
+ properties[:bufvar] = "_buf"
37
+ properties[:freeze_template_literals] = false
38
+
39
+ super
40
+ end
41
+
42
+ def add_text(text)
43
+ return if text.empty?
44
+
45
+ if text == "\n"
46
+ @newline_pending += 1
35
47
  else
36
- src << '@output_buffer.append=(' << code << ');'
48
+ src << "_buf.safe_append='"
49
+ src << "\n" * @newline_pending if @newline_pending > 0
50
+ src << text.gsub(/['\\]/, '\\\\\&')
51
+ src << "';"
52
+
53
+ @newline_pending = 0
37
54
  end
38
55
  end
39
56
 
40
- def add_expr_escaped(src, code)
41
- if code =~ BLOCK_EXPR
42
- src << "@output_buffer.safe_append= " << code
57
+ BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/
58
+
59
+ def add_expression(indicator, code)
60
+ flush_newline_if_pending(src)
61
+
62
+ if (indicator == "==") || @escape
63
+ src << "_buf.safe_expr_append="
43
64
  else
44
- src << "@output_buffer.safe_append=(" << code << ");"
65
+ src << "_buf.append="
66
+ end
67
+
68
+ if BLOCK_EXPR.match?(code)
69
+ src << " " << code
70
+ else
71
+ src << "(" << code << ");"
72
+ end
73
+ end
74
+
75
+ def add_code(code)
76
+ flush_newline_if_pending(src)
77
+ super
78
+ end
79
+
80
+ def add_postamble(_)
81
+ flush_newline_if_pending(src)
82
+ super
83
+ end
84
+
85
+ def flush_newline_if_pending(src)
86
+ if @newline_pending > 0
87
+ src << "_buf.safe_append='#{"\n" * @newline_pending}';"
88
+ @newline_pending = 0
45
89
  end
46
90
  end
47
91
  end
data/test/block.erb ADDED
@@ -0,0 +1,5 @@
1
+ <%= block_call(1,
2
+ 2
3
+ ) do |f| %>
4
+ woot?
5
+ <% end %>
data/test/file.erb CHANGED
@@ -1 +1 @@
1
- woot
1
+ woot <%= 42 %>
@@ -4,12 +4,31 @@ require "debride_erb"
4
4
  module TestDebride; end
5
5
 
6
6
  class TestDebride::TestErb < Minitest::Test
7
+ make_my_diffs_pretty!
8
+
7
9
  def test_process_erb
8
10
  sexp = Debride.new.process_erb "test/file.erb"
9
11
 
10
12
  exp = s(:block,
11
- s(:lasgn, :_buf, s(:str, "")),
12
- s(:call, s(:lvar, :_buf), :<<, s(:str, "woot")),
13
+ s(:lasgn, :_buf, s(:call, s(:colon3, :String), :new)),
14
+ s(:attrasgn, s(:lvar, :_buf), :safe_append=, s(:str, "woot ")),
15
+ s(:attrasgn, s(:lvar, :_buf), :append=, s(:lit, 42)),
16
+ s(:attrasgn, s(:lvar, :_buf), :safe_append=, s(:str, "\n")),
17
+ s(:call, s(:lvar, :_buf), :to_s))
18
+
19
+ assert_equal exp, sexp
20
+ end
21
+
22
+ def test_process_block
23
+ sexp = Debride.new.process_erb "test/block.erb"
24
+
25
+ exp = s(:block,
26
+ s(:lasgn, :_buf, s(:call, s(:colon3, :String), :new)),
27
+ s(:attrasgn, s(:lvar, :_buf), :append=,
28
+ s(:iter,
29
+ s(:call, nil, :block_call, s(:lit, 1), s(:lit, 2)),
30
+ s(:args, :f),
31
+ s(:attrasgn, s(:lvar, :_buf), :safe_append=, s(:str, "\nwoot?\n")))),
13
32
  s(:call, s(:lvar, :_buf), :to_s))
14
33
 
15
34
  assert_equal exp, sexp
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debride-erb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBBzANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE0MDkxNzIzMDcwN1oXDTE1MDkxNzIzMDcwN1owRTETMBEGA1UE
15
+ GRYDY29tMB4XDTIzMDEwMTA3NTExN1oXDTI0MDEwMTA3NTExN1owRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -21,86 +21,78 @@ cert_chain:
21
21
  GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
- HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
- AQAFoDJRokCQdxFfOrmsKX41KOFlU/zjrbDVM9hgB/Ur999M6OXGSi8FitXNtMwY
26
- FVjsiAPeU7HaWVVcZkj6IhINelTkXsxgGz/qCzjHy3iUMuZWw36cS0fiWJ5rvH+e
27
- hD7uXxJSFuyf1riDGI1aeWbQ74WMwvNstOxLUMiV5a1fzBhlxPqb537ubDjq/M/h
28
- zPUFPVYeL5KjDHLCqI2FwIk2sEMOQgjpXHzl+3NlD2LUgUhHDMevmgVua0e2GT1B
29
- xJcC6UN6NHMOVMyAXsr2HR0gRRx4ofN1LoP2KhXzSr8UMvQYlwPmE0N5GQv1b5AO
30
- VpzF30vNaJK6ZT7xlIsIlwmH
24
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
25
+ AQAkg3y+PBnBAPWdxxITm5sPHqdWQgSyCpRA20o4LTuWr8BWhSXBkfQNa7cY6fOn
26
+ xyM34VPzBFbExv6XOGDfOMFBVaYTHuN9peC/5/umL7kLl+nflXzL2QA7K6LYj5Bg
27
+ sM574Onr0dZDM6Vn69bzQ7rBIFDfK/OhlPzqKZad4nsdcsVH8ODCiT+ATMIZyz5K
28
+ WCnNtqlyiWXI8tdTpahDgcUwfcN/oN7v4K8iU5IbLJX6HQ5DKgmKjfb6XyMth16k
29
+ ROfWo9Uyp8ba/j9eVG14KkYRaLydAY1MNQk2yd3R5CGfeOpD1kttxjoypoUJ2dOG
30
+ nsNBRuQJ1UfiCG97a6DNm+Fr
31
31
  -----END CERTIFICATE-----
32
- date: 2015-04-13 00:00:00.000000000 Z
32
+ date: 2023-05-02 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: debride
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.2'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.2'
48
48
  - !ruby/object:Gem::Dependency
49
- name: erubis
49
+ name: erubi
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.7.0
54
+ version: '1.10'
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.7.0
62
- - !ruby/object:Gem::Dependency
63
- name: minitest
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '5.6'
69
- type: :development
70
- prerelease: false
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: '5.6'
61
+ version: '1.10'
76
62
  - !ruby/object:Gem::Dependency
77
63
  name: rdoc
78
64
  requirement: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '4.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '7'
83
72
  type: :development
84
73
  prerelease: false
85
74
  version_requirements: !ruby/object:Gem::Requirement
86
75
  requirements:
87
- - - ~>
76
+ - - ">="
88
77
  - !ruby/object:Gem::Version
89
78
  version: '4.0'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '7'
90
82
  - !ruby/object:Gem::Dependency
91
83
  name: hoe
92
84
  requirement: !ruby/object:Gem::Requirement
93
85
  requirements:
94
- - - ~>
86
+ - - "~>"
95
87
  - !ruby/object:Gem::Version
96
- version: '3.13'
88
+ version: '4.0'
97
89
  type: :development
98
90
  prerelease: false
99
91
  version_requirements: !ruby/object:Gem::Requirement
100
92
  requirements:
101
- - - ~>
93
+ - - "~>"
102
94
  - !ruby/object:Gem::Version
103
- version: '3.13'
95
+ version: '4.0'
104
96
  description: Extends debride to analyze erb files (erubis ala rails, actually).
105
97
  email:
106
98
  - ryand-ruby@zenspider.com
@@ -111,39 +103,39 @@ extra_rdoc_files:
111
103
  - Manifest.txt
112
104
  - README.rdoc
113
105
  files:
114
- - .autotest
115
- - .gemtest
106
+ - ".autotest"
116
107
  - History.rdoc
117
108
  - Manifest.txt
118
109
  - README.rdoc
119
110
  - Rakefile
120
111
  - lib/debride_erb.rb
112
+ - test/block.erb
121
113
  - test/file.erb
122
114
  - test/test_debride_erb.rb
123
115
  homepage: https://github.com/seattlerb/debride-erb
124
116
  licenses:
125
117
  - MIT
126
- metadata: {}
127
- post_install_message:
118
+ metadata:
119
+ homepage_uri: https://github.com/seattlerb/debride-erb
120
+ post_install_message:
128
121
  rdoc_options:
129
- - --main
122
+ - "--main"
130
123
  - README.rdoc
131
124
  require_paths:
132
125
  - lib
133
126
  required_ruby_version: !ruby/object:Gem::Requirement
134
127
  requirements:
135
- - - '>='
128
+ - - ">="
136
129
  - !ruby/object:Gem::Version
137
130
  version: '0'
138
131
  required_rubygems_version: !ruby/object:Gem::Requirement
139
132
  requirements:
140
- - - '>='
133
+ - - ">="
141
134
  - !ruby/object:Gem::Version
142
135
  version: '0'
143
136
  requirements: []
144
- rubyforge_project:
145
- rubygems_version: 2.4.5
146
- signing_key:
137
+ rubygems_version: 3.4.10
138
+ signing_key:
147
139
  specification_version: 4
148
140
  summary: Extends debride to analyze erb files (erubis ala rails, actually).
149
141
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/.gemtest DELETED
File without changes