yard-rustdoc 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/yard-rustdoc/parser.rb +13 -4
- data/lib/yard-rustdoc/statements.rb +8 -2
- data/lib/yard-rustdoc/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78e74a92126b3580032529eaa4f17361eb6d4dd885b1dcb42ce1ccae71afa130
|
4
|
+
data.tar.gz: c978d783880150a402baf41aca076ca0a736c988b32e6283ac953ca0b86c0377
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50e53c9f30f82fd56bfa040176b127ac72cb5015463a5d738a01a73814fba8ba984862b3ac0b81968063654d0031237a390878073edd50a1978505df911f30b8
|
7
|
+
data.tar.gz: 53743f0a93ada894d5532d7d86d57cd88a6e68446f8c065582012cae96c02431f995c4146049c36e893b4912691ce9d5635bf89ab7d5c2d46ec2f8e469028e0b
|
data/README.md
CHANGED
@@ -58,7 +58,7 @@ The `@rename` tag renames the class to `Foo::Baz`.
|
|
58
58
|
|
59
59
|
```rust
|
60
60
|
/// @yard
|
61
|
-
/// @
|
61
|
+
/// @rename Foo::Baz
|
62
62
|
pub struct InnerName { }
|
63
63
|
```
|
64
64
|
|
@@ -68,7 +68,7 @@ Defines `Foo::Bar.new` -- class method because the first argument isn't `self`.
|
|
68
68
|
impl Bar {
|
69
69
|
/// @yard
|
70
70
|
/// @return [Foo::Bar]
|
71
|
-
fn
|
71
|
+
fn new() -> Self {}
|
72
72
|
}
|
73
73
|
```
|
74
74
|
|
@@ -109,7 +109,7 @@ impl Bar {
|
|
109
109
|
|
110
110
|
#### Tips
|
111
111
|
|
112
|
-
YARD's syntax differs from what Rustdoc expects. Linters you
|
112
|
+
YARD's syntax differs from what Rustdoc expects. Linters you might want to disable:
|
113
113
|
|
114
114
|
```rust
|
115
115
|
#![allow(rustdoc::broken_intra_doc_links)]
|
data/lib/yard-rustdoc/parser.rb
CHANGED
@@ -30,11 +30,17 @@ module YARD::Parser::Rustdoc
|
|
30
30
|
|
31
31
|
@rustdoc_json.each do |id, entry|
|
32
32
|
next unless relevant_entry?(entry)
|
33
|
-
next unless TOP_LEVEL_KINDS.include?(entry["kind"])
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
# "inner" is a Rust enum serialized with serde, resulting in a
|
35
|
+
# { "variant": { ...variant fields... } } structure.
|
36
|
+
# See https://github.com/rust-lang/rust/blob/f79a912d9edc3ad4db910c0e93672ed5c65133fa/src/rustdoc-json-types/lib.rs#L104
|
37
|
+
kind, inner = entry["inner"].first
|
38
|
+
|
39
|
+
next unless TOP_LEVEL_KINDS.include?(kind)
|
40
|
+
|
41
|
+
methods = inner
|
42
|
+
.fetch("impls")
|
43
|
+
.flat_map { |impl_id| @rustdoc_json.dig(impl_id, "inner", "impl", "items") }
|
38
44
|
.filter_map do |method_id|
|
39
45
|
method_entry = @rustdoc_json.fetch(method_id)
|
40
46
|
next unless relevant_entry?(method_entry)
|
@@ -45,6 +51,9 @@ module YARD::Parser::Rustdoc
|
|
45
51
|
@entries << Statements::Struct.new(entry, methods)
|
46
52
|
end
|
47
53
|
|
54
|
+
# Ensure Foo comes before Foo::Bar
|
55
|
+
@entries.sort! { |a, b| a.name <=> b.name }
|
56
|
+
|
48
57
|
self
|
49
58
|
end
|
50
59
|
|
@@ -101,9 +101,15 @@ module YARD::Parser::Rustdoc
|
|
101
101
|
@name || @rustdoc.fetch("name")
|
102
102
|
end
|
103
103
|
|
104
|
+
# Infers the scope (instance vs class) based on the usage of "self" or
|
105
|
+
# "rb_self" as an arg name.
|
104
106
|
def scope
|
105
|
-
|
106
|
-
|
107
|
+
arg_names = @rustdoc
|
108
|
+
.dig("inner", "function", "decl", "inputs")
|
109
|
+
.map(&:first)
|
110
|
+
.slice(0, 2) # Magnus may inject a Ruby handle as arg0, hence we check 2 args
|
111
|
+
|
112
|
+
if arg_names.include?("self") || arg_names.include?("rb_self")
|
107
113
|
:instance
|
108
114
|
else
|
109
115
|
:class
|
data/lib/yard-rustdoc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard-rustdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Bourassa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
requirements: []
|
118
|
-
rubygems_version: 3.3
|
118
|
+
rubygems_version: 3.5.3
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: Generate YARD documentation for Magnus-based Rust gems.
|