papercraft 1.2 → 1.4
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 +8 -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 +5 -5
- metadata +25 -14
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
@@ -1,14 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'kramdown'
|
4
|
-
require 'rouge'
|
5
|
-
require 'kramdown-parser-gfm'
|
6
|
-
|
7
3
|
require_relative 'papercraft/template'
|
8
4
|
require_relative 'papercraft/renderer'
|
9
5
|
# require_relative 'papercraft/compiler'
|
10
6
|
|
11
|
-
|
12
7
|
# Papercraft is a composable templating library
|
13
8
|
module Papercraft
|
14
9
|
# Exception class used to signal templating-related errors
|
@@ -82,6 +77,11 @@ module Papercraft
|
|
82
77
|
# @param opts [Hash] Kramdown option overrides
|
83
78
|
# @return [String] HTML
|
84
79
|
def markdown(markdown, **opts)
|
80
|
+
# require relevant deps on use
|
81
|
+
require 'kramdown'
|
82
|
+
require 'rouge'
|
83
|
+
require 'kramdown-parser-gfm'
|
84
|
+
|
85
85
|
opts = default_kramdown_options.merge(opts)
|
86
86
|
Kramdown::Document.new(markdown, **opts).to_html
|
87
87
|
end
|
metadata
CHANGED
@@ -1,15 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: papercraft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-01-09 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: sirop
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0.5'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0.5'
|
13
26
|
- !ruby/object:Gem::Dependency
|
14
27
|
name: escape_utils
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,28 +43,28 @@ dependencies:
|
|
30
43
|
requirements:
|
31
44
|
- - "~>"
|
32
45
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
46
|
+
version: 2.5.1
|
34
47
|
type: :runtime
|
35
48
|
prerelease: false
|
36
49
|
version_requirements: !ruby/object:Gem::Requirement
|
37
50
|
requirements:
|
38
51
|
- - "~>"
|
39
52
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
53
|
+
version: 2.5.1
|
41
54
|
- !ruby/object:Gem::Dependency
|
42
55
|
name: rouge
|
43
56
|
requirement: !ruby/object:Gem::Requirement
|
44
57
|
requirements:
|
45
58
|
- - "~>"
|
46
59
|
- !ruby/object:Gem::Version
|
47
|
-
version: 4.1
|
60
|
+
version: 4.5.1
|
48
61
|
type: :runtime
|
49
62
|
prerelease: false
|
50
63
|
version_requirements: !ruby/object:Gem::Requirement
|
51
64
|
requirements:
|
52
65
|
- - "~>"
|
53
66
|
- !ruby/object:Gem::Version
|
54
|
-
version: 4.1
|
67
|
+
version: 4.5.1
|
55
68
|
- !ruby/object:Gem::Dependency
|
56
69
|
name: kramdown-parser-gfm
|
57
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +85,14 @@ dependencies:
|
|
72
85
|
requirements:
|
73
86
|
- - "~>"
|
74
87
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
88
|
+
version: 5.25.4
|
76
89
|
type: :development
|
77
90
|
prerelease: false
|
78
91
|
version_requirements: !ruby/object:Gem::Requirement
|
79
92
|
requirements:
|
80
93
|
- - "~>"
|
81
94
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
95
|
+
version: 5.25.4
|
83
96
|
- !ruby/object:Gem::Dependency
|
84
97
|
name: benchmark-ips
|
85
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +135,6 @@ dependencies:
|
|
122
135
|
- - "~>"
|
123
136
|
- !ruby/object:Gem::Version
|
124
137
|
version: 2.2.0
|
125
|
-
description:
|
126
138
|
email: sharon@noteflakes.com
|
127
139
|
executables: []
|
128
140
|
extensions: []
|
@@ -134,6 +146,7 @@ files:
|
|
134
146
|
- README.md
|
135
147
|
- lib/papercraft.rb
|
136
148
|
- lib/papercraft/compiler.rb
|
149
|
+
- lib/papercraft/compiler_old.rb
|
137
150
|
- lib/papercraft/extension_proxy.rb
|
138
151
|
- lib/papercraft/extensions/soap.rb
|
139
152
|
- lib/papercraft/html.rb
|
@@ -153,7 +166,6 @@ metadata:
|
|
153
166
|
documentation_uri: https://www.rubydoc.info/gems/papercraft
|
154
167
|
homepage_uri: https://github.com/digital-fabric/papercraft
|
155
168
|
changelog_uri: https://github.com/digital-fabric/papercraft/blob/master/CHANGELOG.md
|
156
|
-
post_install_message:
|
157
169
|
rdoc_options:
|
158
170
|
- "--title"
|
159
171
|
- Papercraft
|
@@ -165,15 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
177
|
requirements:
|
166
178
|
- - ">="
|
167
179
|
- !ruby/object:Gem::Version
|
168
|
-
version: '2
|
180
|
+
version: '3.2'
|
169
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
182
|
requirements:
|
171
183
|
- - ">="
|
172
184
|
- !ruby/object:Gem::Version
|
173
185
|
version: '0'
|
174
186
|
requirements: []
|
175
|
-
rubygems_version: 3.
|
176
|
-
signing_key:
|
187
|
+
rubygems_version: 3.6.2
|
177
188
|
specification_version: 4
|
178
189
|
summary: 'Papercraft: component-based HTML templating for Ruby'
|
179
190
|
test_files: []
|