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.
@@ -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.4'
5
5
  end
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.2'
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: 2023-08-21 00:00:00.000000000 Z
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.4.0
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.4.0
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.3
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.3
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: '5.19'
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: '5.19'
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.7'
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.4.1
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: []