utopia-project 0.44.0 → 0.44.1

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: 7f02594d75aca403abee0bf56e3e2ec4e398a81df172f6c62cf73cdccba11bc5
4
- data.tar.gz: bc73b831e8e44df2de6759154a24d91d0d228e062e5c790d5956788ebddc5177
3
+ metadata.gz: aeb8c91bedd9b713aac858b1d21a2475e46339d263619e37c5ee5e55a96f9823
4
+ data.tar.gz: 42dd69b94451317ffebd0c44e7316accba3e2e7563c911c6e47ec3ff8b61f83d
5
5
  SHA512:
6
- metadata.gz: 3dd75a8af1c68d0b7d4b64856f569d13468e6b3296303bcad6b02f3595709821c88de4387212aad33a629caa2854b8f5e6ebfdebfe1e0b7a17975ba44f846d68
7
- data.tar.gz: 0e731e759758f27e1d64a721a9e5aa9eb275e76bf7e01e3e4fe027d2baad520c3b3f249a28bd049fb392278e47a3f646322d54488648136fdba389adc4f0b5c0
6
+ metadata.gz: c661665e07add1839f6f49abe463e74fdc433e2184bbf802d8fbd4dcfe09c339d637625ce5ba0f63333860ee97d22414026c3bb70ab16ccdffdae8c3a3a4dcb3
7
+ data.tar.gz: 429aedacf04be623ca7869fde98f40cc702743da7b53fa2f51bb81c1b387b39dea7d8b475a916a76c0a9fc5cce1c51d8db0a80e2a151f62ab06c304ad7e73a45
checksums.yaml.gz.sig CHANGED
Binary file
@@ -174,30 +174,53 @@ module Utopia
174
174
 
175
175
  private
176
176
 
177
- # Replace source code references in the given text with HTML anchors.
177
+ # Resolve a source code reference to HTML.
178
178
  # @parameter content [String] The source code reference.
179
179
  # @parameter language [String | Nil] The explicit source language.
180
- # @returns [Markly::Node] The resolved link or code node.
180
+ # @returns [Markly::Node] The inline HTML node.
181
181
  def reference_node(content, language: nil)
182
+ reference, definition = resolve_reference(content, language: language)
183
+
184
+ if definition
185
+ content = definition.qualified_form
186
+ language = reference.language.name
187
+ elsif reference
188
+ content = reference.identifier
189
+ language = reference.language.name
190
+ end
191
+
192
+ attributes = {}
193
+ attributes[:class] = "language-#{language}" if language
194
+
195
+ markup = XRB::Builder.fragment do |builder|
196
+ builder.inline("code", attributes) do
197
+ if definition
198
+ builder.inline("a", href: @base.link_for(definition), title: reference.identifier) do
199
+ builder.text(content)
200
+ end
201
+ else
202
+ builder.text(content)
203
+ end
204
+ end
205
+ end
206
+
207
+ return inline_html_node(markup.to_s)
208
+ end
209
+
210
+ # Resolve source code reference metadata and its indexed definition.
211
+ # @parameter content [String] The source code reference.
212
+ # @parameter language [String | Nil] The explicit source language.
213
+ # @returns [Array] The parsed reference and resolved definition.
214
+ def resolve_reference(content, language: nil)
182
215
  reference = if language
183
216
  @index.languages.reference_for(language, content)
184
217
  else
185
218
  @index.languages.parse_reference(content, default_language: @default_language)
186
219
  end
187
220
 
188
- if reference
189
- definition = @index.lookup(reference, relative_to: @definition)
190
- end
221
+ definition = @index.lookup(reference, relative_to: @definition) if reference
191
222
 
192
- if definition
193
- link_node(reference.identifier, @base.link_for(definition),
194
- code_node(definition.qualified_form, reference.language.name)
195
- )
196
- elsif reference
197
- code_node(reference.identifier, reference.language.name)
198
- else
199
- code_node(content, language)
200
- end
223
+ return reference, definition
201
224
  end
202
225
 
203
226
  def resolve(root)
@@ -11,10 +11,9 @@ module Utopia
11
11
  # Renders project Markdown with support for Mermaid code blocks.
12
12
  class Renderer < Markly::Renderer::HTML
13
13
  # Initialize the project renderer.
14
- # @parameter inline_code_resolver [Proc | Nil] Resolves language-prefixed inline code into a replacement node.
14
+ # @parameter inline_code_resolver [Proc | Nil] Resolves language-prefixed inline code into an inline HTML node.
15
15
  def initialize(inline_code_resolver: nil, **options)
16
16
  @inline_code_resolver = inline_code_resolver
17
- @resolving_inline_code = false
18
17
 
19
18
  super(**options)
20
19
  end
@@ -58,13 +57,8 @@ module Utopia
58
57
  # Render inline code, resolving language-prefixed references when possible.
59
58
  # @parameter node [Markly::Node] The inline code node.
60
59
  def code(node)
61
- if @inline_code_resolver && !@resolving_inline_code && (language = node.code_language)
62
- begin
63
- @resolving_inline_code = true
64
- out(@inline_code_resolver.call(node.string_content, language: language))
65
- ensure
66
- @resolving_inline_code = false
67
- end
60
+ if @inline_code_resolver && (language = node.code_language)
61
+ out(@inline_code_resolver.call(node.string_content, language: language))
68
62
  else
69
63
  super
70
64
  end
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Utopia
7
7
  module Project
8
- VERSION = "0.44.0"
8
+ VERSION = "0.44.1"
9
9
  end
10
10
  end
data/readme.md CHANGED
@@ -33,6 +33,10 @@ Please see the [project documentation](https://socketry.github.io/utopia-project
33
33
 
34
34
  Please see the [project releases](https://socketry.github.io/utopia-project/releases/index) for all releases.
35
35
 
36
+ ### v0.44.1
37
+
38
+ - Render resolved inline code references with links inside their code elements so hover and keyboard focus affect the complete reference.
39
+
36
40
  ### v0.44.0
37
41
 
38
42
  - Add support for language-prefixed inline code references such as ruby:`Object.new`.
@@ -72,10 +76,6 @@ Please see the [project releases](https://socketry.github.io/utopia-project/rele
72
76
 
73
77
  - Fixed handling of segmented code guides when rendered into a `readme.md` file.
74
78
 
75
- ### v0.33.0
76
-
77
- - Fix presentation of release notes on releases page.
78
-
79
79
  ## See Also
80
80
 
81
81
  - [Utopia](https://github.com/socketry/utopia) — The website framework which powers this web application.
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changes
2
2
 
3
+ ## v0.44.1
4
+
5
+ - Render resolved inline code references with links inside their code elements so hover and keyboard focus affect the complete reference.
6
+
3
7
  ## v0.44.0
4
8
 
5
9
  - Add support for language-prefixed inline code references such as ruby:`Object.new`.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utopia-project
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.44.0
4
+ version: 0.44.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
metadata.gz.sig CHANGED
Binary file