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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/lib/papercraft/compiler.rb +205 -370
- data/lib/papercraft/compiler_old.rb +701 -0
- data/lib/papercraft/html.rb +9 -9
- data/lib/papercraft/tags.rb +32 -38
- data/lib/papercraft/template.rb +3 -3
- data/lib/papercraft/version.rb +1 -1
- data/lib/papercraft.rb +1 -1
- metadata +25 -10
data/lib/papercraft/html.rb
CHANGED
@@ -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 **
|
14
|
+
# @param **attributes [Hash] tag attributes
|
15
15
|
# @para block [Proc] nested HTML block
|
16
16
|
# @return [void]
|
17
|
-
def p(text = nil, **
|
18
|
-
method_missing(:p, text, **
|
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 **
|
51
|
+
# @param **attributes [Hash] optional element attributes
|
52
52
|
# @return [void]
|
53
|
-
def style(css, **
|
53
|
+
def style(css, **attributes, &block)
|
54
54
|
@buffer << '<style'
|
55
|
-
|
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 **
|
63
|
+
# @param **attributes [Hash] optional element attributes
|
64
64
|
# @return [void]
|
65
|
-
def script(js = nil, **
|
65
|
+
def script(js = nil, **attributes, &block)
|
66
66
|
@buffer << '<script'
|
67
|
-
|
67
|
+
emit_attributes(attributes) unless attributes.empty?
|
68
68
|
|
69
69
|
if js
|
70
70
|
@buffer << '>' << js << '</script>'
|
data/lib/papercraft/tags.rb
CHANGED
@@ -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, **
|
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, **
|
29
|
+
return _for.each { |*a| %<tag>s(text, **attributes) { block.(*a)} } if _for
|
30
30
|
|
31
|
-
if text.is_a?(Hash) &&
|
32
|
-
|
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
|
-
|
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, **
|
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, **
|
63
|
+
return _for.each { |*a| %<tag>s(text, **attributes) { block.(*a)} } if _for
|
64
64
|
|
65
|
-
if text.is_a?(Hash) &&
|
66
|
-
|
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
|
-
|
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 **
|
167
|
+
# @param **attributes [Hash] tag attributes
|
168
168
|
# @return [void]
|
169
|
-
def tag(sym, text = nil, _for: nil, **
|
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, **
|
172
|
+
return _for.each { |*a| tag(sym, text, **attributes) { block.(*a)} } if _for
|
173
173
|
|
174
|
-
if text.is_a?(Hash) &&
|
175
|
-
|
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
|
-
|
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
|
390
|
+
# @param attributes [Hash] tag attributes
|
390
391
|
# @return [void]
|
391
|
-
def
|
392
|
-
|
393
|
-
case
|
394
|
-
when
|
395
|
-
@buffer << S_SPACE << k
|
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
|
-
|
398
|
-
|
399
|
-
|
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
|
data/lib/papercraft/template.rb
CHANGED
data/lib/papercraft/version.rb
CHANGED
data/lib/papercraft.rb
CHANGED
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.
|
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:
|
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.
|
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.
|
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
|
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
|
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:
|
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:
|
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
|
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.
|
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'
|