utopia-project 0.44.0 → 0.44.2
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
- checksums.yaml.gz.sig +0 -0
- data/lib/utopia/project/base.rb +9 -7
- data/lib/utopia/project/document.rb +38 -15
- data/lib/utopia/project/guide.rb +1 -1
- data/lib/utopia/project/renderer.rb +3 -9
- data/lib/utopia/project/version.rb +1 -1
- data/readme.md +4 -4
- data/releases.md +4 -0
- data.tar.gz.sig +0 -0
- metadata +15 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bb1b060b61a6a2d8217400a95a0902c6a5445a9a7aa19cd1336ef5271c6ad109
|
|
4
|
+
data.tar.gz: 0dddf9399507803260102a0bcf2b2a3d8218b3ff59ab3f8857b3937c7f72b74d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 839445ba2548a2c7784828ca9e198f3929cb19a628395ef06ecd78d4d88c3766adf478c42d47e0707e9407032e3ff9a6a60d5e512261af1507012128201232e3
|
|
7
|
+
data.tar.gz: 2c31c2a1c6991967ebe93429413fa3c6f4b28d77275da4890c353f86b43eabf504219732e10a0a680c0cb953d37a048e505eb84e8d3c0d229e7b71721232dd8b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/utopia/project/base.rb
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
require "utopia/path"
|
|
8
8
|
require "utopia/content/links"
|
|
9
9
|
|
|
10
|
-
require "
|
|
10
|
+
require "protocol/url/reference"
|
|
11
11
|
require "decode"
|
|
12
12
|
|
|
13
13
|
require "thread/local"
|
|
@@ -187,7 +187,7 @@ module Utopia
|
|
|
187
187
|
end
|
|
188
188
|
|
|
189
189
|
# Compute a link href to the given definition for use within the HTML output.
|
|
190
|
-
# @returns [
|
|
190
|
+
# @returns [Protocol::URL::Reference]
|
|
191
191
|
#
|
|
192
192
|
# @example Link to a definition
|
|
193
193
|
# base = Utopia::Project::Base.local
|
|
@@ -195,13 +195,15 @@ module Utopia
|
|
|
195
195
|
# base.link_for(definition).to_s # => "/reference/utopia/project/index#Utopia::Project::Base"
|
|
196
196
|
def link_for(definition)
|
|
197
197
|
path = definition.lexical_path.map{|entry| entry.to_s}
|
|
198
|
+
fragment = nil
|
|
198
199
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
name = path.pop
|
|
203
|
-
return XRB::Reference.new(@reference_path + path + "index", fragment: id_for(definition))
|
|
200
|
+
unless definition.container?
|
|
201
|
+
path.pop
|
|
202
|
+
fragment = id_for(definition)
|
|
204
203
|
end
|
|
204
|
+
|
|
205
|
+
path = (@reference_path + path + "index").to_url_path
|
|
206
|
+
return Protocol::URL::Reference.new(path, nil, fragment)
|
|
205
207
|
end
|
|
206
208
|
|
|
207
209
|
# Resolve inheritance information for the given definition.
|
|
@@ -147,7 +147,7 @@ module Utopia
|
|
|
147
147
|
|
|
148
148
|
# Build a link node around a child node.
|
|
149
149
|
# @parameter title [String | Nil] The link title.
|
|
150
|
-
# @parameter url [String |
|
|
150
|
+
# @parameter url [String | Protocol::URL::Reference] The link target.
|
|
151
151
|
# @parameter child [Markly::Node] The linked child node.
|
|
152
152
|
# @returns [Markly::Node] The link node.
|
|
153
153
|
def link_node(title, url, child)
|
|
@@ -174,30 +174,53 @@ module Utopia
|
|
|
174
174
|
|
|
175
175
|
private
|
|
176
176
|
|
|
177
|
-
#
|
|
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
|
|
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
|
-
|
|
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)
|
data/lib/utopia/project/guide.rb
CHANGED
|
@@ -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
|
|
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 &&
|
|
62
|
-
|
|
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
|
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.
|
|
4
|
+
version: 0.44.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -83,6 +83,20 @@ dependencies:
|
|
|
83
83
|
- - "~>"
|
|
84
84
|
- !ruby/object:Gem::Version
|
|
85
85
|
version: '0.17'
|
|
86
|
+
- !ruby/object:Gem::Dependency
|
|
87
|
+
name: protocol-url
|
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
|
89
|
+
requirements:
|
|
90
|
+
- - "~>"
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: '0.19'
|
|
93
|
+
type: :runtime
|
|
94
|
+
prerelease: false
|
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
96
|
+
requirements:
|
|
97
|
+
- - "~>"
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: '0.19'
|
|
86
100
|
- !ruby/object:Gem::Dependency
|
|
87
101
|
name: thread-local
|
|
88
102
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
|
Binary file
|