yard-api 0.1.8 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/config/yard_api.yml +15 -1
- data/lib/yard-api/options.rb +2 -0
- data/lib/yard-api/tags/argument_tag.rb +20 -1
- data/lib/yard-api/version.rb +1 -1
- data/spec/tags/argument_spec.rb +41 -1
- data/templates/api/fulldoc/html/js/highlight.zip +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f894b7c9e0efdee454a068de0105e061b713784
|
4
|
+
data.tar.gz: a5eb169d8372bcea684866395a2a4ecddda65385
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 297b3d21420a0a60052d77f4d2748ed252e32298e78b3e87d2b7f13f6229efe389483b52bc4f309399b87eb5b816befe0f91c7be4fa479aa81f383890b453479
|
7
|
+
data.tar.gz: fea346e1cee3d55253920f2fba306f797a5a86c41e74418e42958ace2d96dd2269499808df1f345080716f002ee4afd8816c93686cec1b9235e1d1459e9d7cc0
|
data/README.md
CHANGED
@@ -8,6 +8,22 @@ TODO
|
|
8
8
|
|
9
9
|
TODO
|
10
10
|
|
11
|
+
### Compatibility options
|
12
|
+
|
13
|
+
#### `@argument` tags with names specified before types
|
14
|
+
|
15
|
+
For tags that have a type and a name such as the YARD `@attr` tag, or the yard-api `@argument` tag, the "correct" syntax is to specify the types *before* the name. For example:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
# @argument [String] name
|
19
|
+
# This is compliant with YARD syntax.
|
20
|
+
#
|
21
|
+
# @argument name [String]
|
22
|
+
# This is not compliant with YARD syntax.
|
23
|
+
```
|
24
|
+
|
25
|
+
If your project already uses the (incorrect) second syntax and you would like to keep things that way, then you can use the compatibility option `leading_argument_name_fix` to have yard-api correctify this and understand both flavors.
|
26
|
+
|
11
27
|
## Configuration
|
12
28
|
|
13
29
|
`yard-api` will look for a file in `config/yard_api.yml` in the Rails root for customizations. Configuration fields not specified in that file will be filled with the default values found in [config/yard_api.yml](https://github.com/amireh/yard-api/blob/master/config/yard_api.yml).
|
@@ -20,6 +36,10 @@ Read that file to view all the available options.
|
|
20
36
|
|
21
37
|
## Changelog
|
22
38
|
|
39
|
+
**0.1.7**
|
40
|
+
|
41
|
+
- new compatibility option `leading_argument_name_fix`
|
42
|
+
|
23
43
|
**15/9/2014**
|
24
44
|
|
25
45
|
- `@argument` tags can now be formatted in a table by setting the `tabular_arguments` option to true
|
data/config/yard_api.yml
CHANGED
@@ -83,4 +83,18 @@ sidebar_width: 240
|
|
83
83
|
content_width: "fluid"
|
84
84
|
|
85
85
|
# Whitespace between the Sidebar and the content, in pixels.
|
86
|
-
spacer: 20
|
86
|
+
spacer: 20
|
87
|
+
|
88
|
+
# Compatibility option.
|
89
|
+
#
|
90
|
+
# If your project (mis)uses the @argument tag to specify the name before the
|
91
|
+
# types, e.g `@argument name [String]`, then turn this on and yard-api will
|
92
|
+
# make these docstrings compliant with YARD's @attr tag (or any tag with a name
|
93
|
+
# and a type, really) which is what @argument uses as its back-end tag.
|
94
|
+
#
|
95
|
+
# The "right" thing to do is to use the correct YARD syntax:
|
96
|
+
#
|
97
|
+
# @argument [Type specifier] name_specifier
|
98
|
+
#
|
99
|
+
# But that may not be viable in very large, existing projects.
|
100
|
+
leading_argument_name_fix: false
|
data/lib/yard-api/options.rb
CHANGED
@@ -4,6 +4,7 @@ module YARD::APIPlugin::Tags
|
|
4
4
|
class ArgumentTag < YARD::Tags::Tag
|
5
5
|
attr_reader :accepted_values, :is_required
|
6
6
|
|
7
|
+
RE_NAME = /^([\S]+)/
|
7
8
|
RE_ARRAY_LITERAL = /\[[^\]]+\]/
|
8
9
|
RE_ARRAY_TYPE = /^#{RE_ARRAY_LITERAL}$/
|
9
10
|
RE_ACCEPTED_VALUES_PREFIXES = /
|
@@ -16,8 +17,26 @@ module YARD::APIPlugin::Tags
|
|
16
17
|
/mx
|
17
18
|
|
18
19
|
def initialize(name, buf)
|
20
|
+
name = nil
|
21
|
+
|
22
|
+
# If the name specifier is written before the types and contains brackets,
|
23
|
+
# YARD will not properly parse the attributes (it doesn't even say that it
|
24
|
+
# supports this syntax so), something like this:
|
25
|
+
#
|
26
|
+
# @argument shirt[size] [String]
|
27
|
+
#
|
28
|
+
# We convert the name to use underscores instead and YARD does its magic!
|
29
|
+
# Once the tag is parsed, we'll use the original name.
|
30
|
+
#
|
31
|
+
# @since 0.1.7
|
32
|
+
if buf[0] != '[' && YARD::APIPlugin.options.leading_argument_name_fix
|
33
|
+
arg_name = buf.match(RE_NAME).captures.first
|
34
|
+
buf.sub!(arg_name, arg_name.gsub(/\W/, '_'))
|
35
|
+
name = arg_name
|
36
|
+
end
|
37
|
+
|
19
38
|
YARD::Tags::Library.instance.tag_create(:attr, buf).tap do |tag|
|
20
|
-
super(:argument, tag.text, tag.types, tag.name)
|
39
|
+
super(:argument, tag.text, tag.types, name || tag.name)
|
21
40
|
|
22
41
|
@is_required = parse_is_required(@types)
|
23
42
|
@accepted_values = parse_accepted_values(@types, @text)
|
data/lib/yard-api/version.rb
CHANGED
data/spec/tags/argument_spec.rb
CHANGED
@@ -16,6 +16,7 @@ describe YARD::APIPlugin::Tags::ArgumentTag do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should work like an @attr tag' do
|
19
|
+
ENV['DO'] = '1'
|
19
20
|
populate <<-'eof'
|
20
21
|
# @argument [String] name
|
21
22
|
# Your full name.
|
@@ -30,6 +31,46 @@ describe YARD::APIPlugin::Tags::ArgumentTag do
|
|
30
31
|
expect(tag.types).to eq ['String']
|
31
32
|
end
|
32
33
|
|
34
|
+
describe 'option: leading_argument_name_fix' do
|
35
|
+
it 'should work with type and name specifiers swapped "@argument name [String]"' do
|
36
|
+
set_option(:leading_argument_name_fix, true)
|
37
|
+
|
38
|
+
populate <<-'eof'
|
39
|
+
# @argument name [String]
|
40
|
+
# Your full name.
|
41
|
+
#
|
42
|
+
# @argument shirt_size [String, ["S", "M", "L"]]
|
43
|
+
# Size of the shirt you wear.
|
44
|
+
#
|
45
|
+
# @argument shirt[size] [String, ["S", "M", "L"]]
|
46
|
+
# Size of the shirt you wear.
|
47
|
+
#
|
48
|
+
def signup
|
49
|
+
end
|
50
|
+
eof
|
51
|
+
|
52
|
+
find_tag(:signup, :argument, 0).tap do |tag|
|
53
|
+
expect(tag.name).to eq 'name'
|
54
|
+
expect(tag.text).to eq 'Your full name.'
|
55
|
+
expect(tag.types).to eq ['String']
|
56
|
+
end
|
57
|
+
|
58
|
+
find_tag(:signup, :argument, 1).tap do |tag|
|
59
|
+
expect(tag.name).to eq 'shirt_size'
|
60
|
+
expect(tag.text).to eq 'Size of the shirt you wear.'
|
61
|
+
expect(tag.types).to eq ['String']
|
62
|
+
expect(tag.accepted_values).to eq %w[ S M L ]
|
63
|
+
end
|
64
|
+
|
65
|
+
find_tag(:signup, :argument, 2).tap do |tag|
|
66
|
+
expect(tag.name).to eq 'shirt[size]'
|
67
|
+
expect(tag.text).to eq 'Size of the shirt you wear.'
|
68
|
+
expect(tag.types).to eq ['String']
|
69
|
+
expect(tag.accepted_values).to eq %w[ S M L ]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
33
74
|
describe '#is_required' do
|
34
75
|
it 'should default to whatever Options.strict_arguments is set to' do
|
35
76
|
set_option(:strict_arguments, false)
|
@@ -124,6 +165,5 @@ describe YARD::APIPlugin::Tags::ArgumentTag do
|
|
124
165
|
|
125
166
|
expect(find_tag(:order_shirt, :argument).accepted_values).to eq(%w[S M L XL])
|
126
167
|
end
|
127
|
-
|
128
168
|
end
|
129
169
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmad Amireh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- templates/api/docstring/html/text.erb
|
98
98
|
- templates/api/fulldoc/html/css/common.css
|
99
99
|
- templates/api/fulldoc/html/css/highlight.css
|
100
|
+
- templates/api/fulldoc/html/js/highlight.zip
|
100
101
|
- templates/api/fulldoc/html/js/highlight/CHANGES.md
|
101
102
|
- templates/api/fulldoc/html/js/highlight/LICENSE
|
102
103
|
- templates/api/fulldoc/html/js/highlight/README.md
|