papercraft 1.2 → 1.3

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.
@@ -11,11 +11,11 @@ module Papercraft
11
11
  # Emits the p tag (overrides Object#p)
12
12
  #
13
13
  # @param text [String] text content of tag
14
- # @param **props [Hash] tag attributes
14
+ # @param **attributes [Hash] tag attributes
15
15
  # @para block [Proc] nested HTML block
16
16
  # @return [void]
17
- def p(text = nil, **props, &block)
18
- method_missing(:p, text, **props, &block)
17
+ def p(text = nil, **attributes, &block)
18
+ method_missing(:p, text, **attributes, &block)
19
19
  end
20
20
 
21
21
  S_HTML5_DOCTYPE = '<!DOCTYPE html>'
@@ -48,11 +48,11 @@ module Papercraft
48
48
  # Emits an inline CSS style element.
49
49
  #
50
50
  # @param css [String] CSS code
51
- # @param **props [Hash] optional element attributes
51
+ # @param **attributes [Hash] optional element attributes
52
52
  # @return [void]
53
- def style(css, **props, &block)
53
+ def style(css, **attributes, &block)
54
54
  @buffer << '<style'
55
- emit_props(props) unless props.empty?
55
+ emit_attributes(attributes) unless attributes.empty?
56
56
 
57
57
  @buffer << '>' << css << '</style>'
58
58
  end
@@ -60,11 +60,11 @@ module Papercraft
60
60
  # Emits an inline JS script element.
61
61
  #
62
62
  # @param js [String, nil] Javascript code
63
- # @param **props [Hash] optional element attributes
63
+ # @param **attributes [Hash] optional element attributes
64
64
  # @return [void]
65
- def script(js = nil, **props, &block)
65
+ def script(js = nil, **attributes, &block)
66
66
  @buffer << '<script'
67
- emit_props(props) unless props.empty?
67
+ emit_attributes(attributes) unless attributes.empty?
68
68
 
69
69
  if js
70
70
  @buffer << '>' << js << '</script>'
@@ -23,18 +23,18 @@ module Papercraft
23
23
  S_TAG_%<TAG>s_PRE = %<tag_pre>s
24
24
  S_TAG_%<TAG>s_CLOSE = %<tag_close>s
25
25
 
26
- def %<tag>s(text = nil, _for: nil, **props, &block)
26
+ def %<tag>s(text = nil, _for: nil, **attributes, &block)
27
27
  return if @render_fragment && @fragment != @render_fragment
28
28
 
29
- return _for.each { |*a| %<tag>s(text, **props) { block.(*a)} } if _for
29
+ return _for.each { |*a| %<tag>s(text, **attributes) { block.(*a)} } if _for
30
30
 
31
- if text.is_a?(Hash) && props.empty?
32
- props = text
31
+ if text.is_a?(Hash) && attributes.empty?
32
+ attributes = text
33
33
  text = nil
34
34
  end
35
35
 
36
36
  @buffer << S_TAG_%<TAG>s_PRE
37
- emit_props(props) unless props.empty?
37
+ emit_attributes(attributes) unless attributes.empty?
38
38
 
39
39
  if block
40
40
  @buffer << S_GT
@@ -57,18 +57,18 @@ module Papercraft
57
57
  S_TAG_%<TAG>s_PRE = %<tag_pre>s
58
58
  S_TAG_%<TAG>s_CLOSE = %<tag_close>s
59
59
 
60
- def %<tag>s(text = nil, _for: nil, **props, &block)
60
+ def %<tag>s(text = nil, _for: nil, **attributes, &block)
61
61
  return if @render_fragment && @fragment != @render_fragment
62
62
 
63
- return _for.each { |*a| %<tag>s(text, **props) { block.(*a)} } if _for
63
+ return _for.each { |*a| %<tag>s(text, **attributes) { block.(*a)} } if _for
64
64
 
65
- if text.is_a?(Hash) && props.empty?
66
- props = text
65
+ if text.is_a?(Hash) && attributes.empty?
66
+ attributes = text
67
67
  text = nil
68
68
  end
69
69
 
70
70
  @buffer << S_TAG_%<TAG>s_PRE
71
- emit_props(props) unless props.empty?
71
+ emit_attributes(attributes) unless attributes.empty?
72
72
 
73
73
  if block
74
74
  @buffer << S_GT
@@ -164,22 +164,22 @@ module Papercraft
164
164
  #
165
165
  # @param sym [Symbol, String] XML tag
166
166
  # @param text [String, nil] tag content
167
- # @param **props [Hash] tag attributes
167
+ # @param **attributes [Hash] tag attributes
168
168
  # @return [void]
169
- def tag(sym, text = nil, _for: nil, **props, &block)
169
+ def tag(sym, text = nil, _for: nil, **attributes, &block)
170
170
  return if @render_fragment && @fragment != @render_fragment
171
171
 
172
- return _for.each { |*a| tag(sym, text, **props) { block.(*a)} } if _for
172
+ return _for.each { |*a| tag(sym, text, **attributes) { block.(*a)} } if _for
173
173
 
174
- if text.is_a?(Hash) && props.empty?
175
- props = text
174
+ if text.is_a?(Hash) && attributes.empty?
175
+ attributes = text
176
176
  text = nil
177
177
  end
178
178
 
179
179
  tag = tag_repr(sym)
180
180
 
181
181
  @buffer << S_LT << tag
182
- emit_props(props) unless props.empty?
182
+ emit_attributes(attributes) unless attributes.empty?
183
183
 
184
184
  if block
185
185
  @buffer << S_GT
@@ -218,9 +218,10 @@ module Papercraft
218
218
  # Emits text into the rendering buffer, escaping any special characters to
219
219
  # the respective XML entities.
220
220
  #
221
- # @param data [String] text
221
+ # @param data [String, nil] text
222
222
  # @return [void]
223
- def text(data)
223
+ def text(data = nil)
224
+ return if !data
224
225
  return if @render_fragment && @fragment != @render_fragment
225
226
 
226
227
  @buffer << escape_text(data)
@@ -386,29 +387,22 @@ module Papercraft
386
387
 
387
388
  # Emits tag attributes into the rendering buffer.
388
389
  #
389
- # @param props [Hash] tag attributes
390
+ # @param attributes [Hash] tag attributes
390
391
  # @return [void]
391
- def emit_props(props)
392
- props.each { |k, v|
393
- case k
394
- when :src, :href
395
- @buffer << S_SPACE << k.to_s << S_EQUAL_QUOTE << EscapeUtils.escape_uri(v) << S_QUOTE
392
+ def emit_attributes(attributes)
393
+ attributes.each do |k, v|
394
+ case v
395
+ when true
396
+ @buffer << S_SPACE << att_repr(k)
397
+ when false, nil
398
+ # emit nothing
396
399
  else
397
- case v
398
- when true
399
- @buffer << S_SPACE << att_repr(k)
400
- when false, nil
401
- # emit nothing
402
- when Array
403
- v = v.join(' ')
404
- @buffer << S_SPACE << att_repr(k) <<
405
- S_EQUAL_QUOTE << escape_text(v) << S_QUOTE
406
- else
407
- @buffer << S_SPACE << att_repr(k) <<
408
- S_EQUAL_QUOTE << escape_text(v) << S_QUOTE
409
- end
400
+ v = v.join(S_SPACE) if v.is_a?(Array)
401
+ @buffer << S_SPACE << att_repr(k) <<
402
+ S_EQUAL_QUOTE << escape_text(v) << S_QUOTE
410
403
  end
411
- }
404
+ end
412
405
  end
406
+
413
407
  end
414
408
  end
@@ -200,8 +200,8 @@ module Papercraft
200
200
  @mime_type
201
201
  end
202
202
 
203
- # def compile
204
- # Papercraft::Compiler.new.compile(self)
205
- # end
203
+ def compile(*args)
204
+ Papercraft::Compiler.new.compile(self, *args)
205
+ end
206
206
  end
207
207
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Papercraft
4
- VERSION = '1.2'
4
+ VERSION = '1.3'
5
5
  end
data/lib/papercraft.rb CHANGED
@@ -6,7 +6,7 @@ require 'kramdown-parser-gfm'
6
6
 
7
7
  require_relative 'papercraft/template'
8
8
  require_relative 'papercraft/renderer'
9
- # require_relative 'papercraft/compiler'
9
+ require_relative 'papercraft/compiler'
10
10
 
11
11
 
12
12
  # Papercraft is a composable templating library
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papercraft
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-21 00:00:00.000000000 Z
11
+ date: 2024-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sirop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.4'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: escape_utils
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,28 +44,28 @@ dependencies:
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 2.4.0
47
+ version: 2.5.1
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 2.4.0
54
+ version: 2.5.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rouge
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 4.1.3
61
+ version: 4.5.1
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 4.1.3
68
+ version: 4.5.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: kramdown-parser-gfm
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +86,14 @@ dependencies:
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '5.19'
89
+ version: 5.25.4
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '5.19'
96
+ version: 5.25.4
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: benchmark-ips
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +148,7 @@ files:
134
148
  - README.md
135
149
  - lib/papercraft.rb
136
150
  - lib/papercraft/compiler.rb
151
+ - lib/papercraft/compiler_old.rb
137
152
  - lib/papercraft/extension_proxy.rb
138
153
  - lib/papercraft/extensions/soap.rb
139
154
  - lib/papercraft/html.rb
@@ -165,14 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
180
  requirements:
166
181
  - - ">="
167
182
  - !ruby/object:Gem::Version
168
- version: '2.7'
183
+ version: '3.2'
169
184
  required_rubygems_version: !ruby/object:Gem::Requirement
170
185
  requirements:
171
186
  - - ">="
172
187
  - !ruby/object:Gem::Version
173
188
  version: '0'
174
189
  requirements: []
175
- rubygems_version: 3.4.1
190
+ rubygems_version: 3.5.16
176
191
  signing_key:
177
192
  specification_version: 4
178
193
  summary: 'Papercraft: component-based HTML templating for Ruby'