papercraft 2.15 → 2.17

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
2
  SHA256:
3
- metadata.gz: 97d2e54989eea3ae631687adb3e484779d48d38d5251705e9fab7f8dd0e0b964
4
- data.tar.gz: 02e161802820d2978e04033fa69a8d8850beeab7bc101a8020e7d4ba7262e204
3
+ metadata.gz: 63718ece62bc77005853c4b7d44c31c9d65c59d420ab3d4002859dcd5dbf4add
4
+ data.tar.gz: 104aca9ba3dcfe331f4973036e26c7341058790eea60a1a4a8409e73dd3825bd
5
5
  SHA512:
6
- metadata.gz: c293bb44d8e53aedb3b19fdc45ea61956ef97637ba387e78180bb854fc5c445502968a38739211ae951c3c00355a42259ee5b3a418994804723615c44be6430d
7
- data.tar.gz: 514a56dc9cb1920209b08fa07a93a631c68352539f27d41be8a39038a65cb48af48bfda598c5091f00c17c50cb12a820bc5e9f6c65d2740323b2baf4761271cc
6
+ metadata.gz: a34b14e12bfb23698ad1081763efc2183c45e1d90223d4076e18b1329086d2e3bed6f9cc15028a22c6dc9b86980e3c062618783d351f2081668dcdbe9e8f56d5
7
+ data.tar.gz: d1b81734455196ced0a6b7a75fb49e77c716feddfa8ad67da70256efe6516279650c13f108ede29131ab0958437e1a5f6810e222fd35f1993b4891ca4b00ca03
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 2.17 2025-10-05
2
+
3
+ - Update dependencies
4
+ - Add support for attributes in `html` tag
5
+ - Add `Papercraft.__clear__extensions__` method
6
+
7
+ # 2.16 2025-10-02
8
+
9
+ - Add support for namespaced components
10
+
1
11
  # 2.15 2025-10-01
2
12
 
3
13
  - Add `Papercraft.markdown_doc` method
@@ -149,13 +149,20 @@ module Papercraft
149
149
 
150
150
  # Represents a builtin call
151
151
  class BuiltinNode
152
- attr_reader :tag, :call_node, :location, :block
152
+ attr_reader :tag, :call_node, :location, :attributes, :block
153
153
 
154
154
  def initialize(call_node, translator)
155
155
  @call_node = call_node
156
156
  @tag = call_node.name
157
157
  @location = call_node.location
158
158
  @block = call_node.block && translator.visit(call_node.block)
159
+
160
+ args = call_node.arguments&.arguments
161
+ return if !args
162
+
163
+ if args.size == 1 && args.first.is_a?(Prism::KeywordHashNode)
164
+ @attributes = args.first
165
+ end
159
166
  end
160
167
 
161
168
  def accept(visitor)
@@ -63,8 +63,13 @@ module Papercraft
63
63
  end
64
64
 
65
65
  def match_const_tag(node)
66
- return if node.receiver
67
66
  return if node.name !~ /^[A-Z]/
67
+ case node.receiver
68
+ when nil, Prism::ConstantReadNode, Prism::ConstantPathNode
69
+ # ok
70
+ else
71
+ return
72
+ end
68
73
 
69
74
  ConstTagNode.new(node, self)
70
75
  end
@@ -204,11 +204,12 @@ module Papercraft
204
204
  def visit_const_tag_node(node)
205
205
  flush_html_parts!
206
206
  adjust_whitespace(node.location)
207
+ emit("; ")
207
208
  if node.call_node.receiver
208
- emit(node.call_node.receiver.location)
209
+ emit(format_code(node.call_node.receiver))
209
210
  emit('::')
210
211
  end
211
- emit("; #{node.call_node.name}.compiled_proc.(__buffer__")
212
+ emit("#{node.call_node.name}.compiled_proc.(__buffer__")
212
213
  if node.call_node.arguments
213
214
  emit(', ')
214
215
  visit(node.call_node.arguments)
@@ -311,7 +312,9 @@ module Papercraft
311
312
  when :tag
312
313
  args = node.call_node.arguments&.arguments
313
314
  when :html, :html5
314
- emit_html(node.location, '<!DOCTYPE html><html>')
315
+ emit_html(node.location, '<!DOCTYPE html>')
316
+ emit_html(node.location, format_html_tag_open(node.location, 'html', node.attributes))
317
+ # emit_html(node.location, '<!DOCTYPE html><html>')
315
318
  visit(node.block.body) if node.block
316
319
  emit_html(node.block.closing_loc, '</html>')
317
320
  when :markdown
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Papercraft
4
- VERSION = '2.15'
4
+ VERSION = '2.17'
5
5
  end
data/lib/papercraft.rb CHANGED
@@ -24,6 +24,14 @@ module Papercraft
24
24
  self
25
25
  end
26
26
 
27
+ # Clears all registered extensions.
28
+ #
29
+ # @return [self]
30
+ def __clear_extensions__
31
+ Extensions.clear
32
+ self
33
+ end
34
+
27
35
  # Formats the given string, converting underscores to dashes.
28
36
  #
29
37
  # @param tag [String, Symbol] input string
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papercraft
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.15'
4
+ version: '2.17'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -43,14 +43,14 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 4.5.1
46
+ version: 4.6.1
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 4.5.1
53
+ version: 4.6.1
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: kramdown-parser-gfm
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -71,28 +71,28 @@ dependencies:
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 5.25.4
74
+ version: 5.25.5
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 5.25.4
81
+ version: 5.25.5
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: benchmark-ips
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 2.7.2
88
+ version: 2.14.0
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 2.7.2
95
+ version: 2.14.0
96
96
  email: sharon@noteflakes.com
97
97
  executables: []
98
98
  extensions: []
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  requirements: []
138
- rubygems_version: 3.7.0.dev
138
+ rubygems_version: 3.7.2
139
139
  specification_version: 4
140
140
  summary: 'Papercraft: functional HTML templating for Ruby'
141
141
  test_files: []