yard 0.5.5 → 0.5.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- data/ChangeLog +131 -0
- data/README.md +16 -12
- data/Rakefile +2 -1
- data/docs/GettingStarted.md +1 -107
- data/docs/Tags.md +250 -53
- data/docs/WhatsNew.md +13 -0
- data/lib/rubygems_plugin.rb +18 -17
- data/lib/yard.rb +1 -1
- data/lib/yard/autoload.rb +4 -0
- data/lib/yard/cli/yardoc.rb +5 -4
- data/lib/yard/cli/yri.rb +18 -3
- data/lib/yard/code_objects/base.rb +5 -4
- data/lib/yard/code_objects/class_object.rb +1 -1
- data/lib/yard/code_objects/constant_object.rb +1 -1
- data/lib/yard/code_objects/method_object.rb +3 -2
- data/lib/yard/code_objects/namespace_object.rb +3 -3
- data/lib/yard/code_objects/proxy.rb +4 -0
- data/lib/yard/docstring.rb +3 -2
- data/lib/yard/handlers/base.rb +1 -1
- data/lib/yard/handlers/ruby/class_condition_handler.rb +5 -1
- data/lib/yard/handlers/ruby/class_handler.rb +41 -1
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +5 -1
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +44 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +128 -0
- data/lib/yard/parser/base.rb +55 -0
- data/lib/yard/parser/c_parser.rb +5 -1
- data/lib/yard/parser/ruby/ast_node.rb +4 -4
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +26 -0
- data/lib/yard/parser/ruby/legacy/statement_list.rb +0 -4
- data/lib/yard/parser/ruby/ruby_parser.rb +45 -2
- data/lib/yard/parser/source_parser.rb +69 -45
- data/lib/yard/serializers/file_system_serializer.rb +1 -1
- data/lib/yard/tags/default_factory.rb +1 -13
- data/lib/yard/tags/library.rb +3 -1
- data/lib/yard/templates/erb_cache.rb +5 -2
- data/lib/yard/templates/helpers/html_helper.rb +1 -0
- data/lib/yard/templates/template.rb +2 -1
- data/spec/cli/yardoc_spec.rb +6 -6
- data/spec/handlers/class_condition_handler_spec.rb +11 -0
- data/spec/handlers/class_handler_spec.rb +121 -0
- data/spec/handlers/examples/class_handler_001.rb.txt +19 -0
- data/spec/parser/base_spec.rb +25 -0
- data/spec/parser/source_parser_spec.rb +63 -0
- data/templates/default/layout/html/setup.rb +1 -1
- data/templates/default/tags/html/option.erb +1 -1
- metadata +21 -5
@@ -43,7 +43,7 @@ module YARD
|
|
43
43
|
objname += '_' + object.scope.to_s[0,1] if object.is_a?(CodeObjects::MethodObject)
|
44
44
|
fspath = [objname + (extension.empty? ? '' : ".#{extension}")]
|
45
45
|
if object.namespace && object.namespace.path != ""
|
46
|
-
fspath.unshift
|
46
|
+
fspath.unshift(*object.namespace.path.split(CodeObjects::NSEP))
|
47
47
|
end
|
48
48
|
|
49
49
|
# Don't change the filenames, it just makes it more complicated
|
@@ -85,19 +85,7 @@ module YARD
|
|
85
85
|
def extract_name_from_text(text)
|
86
86
|
text.strip.split(/\s+/, 2)
|
87
87
|
end
|
88
|
-
|
89
|
-
##
|
90
|
-
# Extracts the type signatures and optional name from the raw tag text
|
91
|
-
#
|
92
|
-
# @param [String] text the raw tag text
|
93
|
-
# @return [Array] an array holding the value as the first element and
|
94
|
-
# the array of types as the second element
|
95
|
-
def extract_types_and_name_from_text(text)
|
96
|
-
text = text.strip
|
97
|
-
types, range, name = *parse_types(text)
|
98
|
-
[name, types, (range ? text[(range.end+1)..-1].strip : text)]
|
99
|
-
end
|
100
|
-
|
88
|
+
|
101
89
|
def extract_title_and_desc_from_text(text)
|
102
90
|
title, desc = nil, nil
|
103
91
|
if text =~ /\A[ \t]\n/
|
data/lib/yard/tags/library.rb
CHANGED
@@ -44,7 +44,6 @@ module YARD
|
|
44
44
|
class Library
|
45
45
|
class << self
|
46
46
|
attr_reader :labels
|
47
|
-
attr_accessor :default_factory
|
48
47
|
|
49
48
|
def instance
|
50
49
|
@instance ||= new
|
@@ -150,6 +149,9 @@ module YARD
|
|
150
149
|
define_tag "Overloads", :overload, OverloadTag
|
151
150
|
define_tag "Private", :private
|
152
151
|
define_tag "Abstract", :abstract
|
152
|
+
define_tag "Attribute", :attr, :with_types_and_name
|
153
|
+
define_tag "Attribute Getter", :attr_reader, :with_types_and_name
|
154
|
+
define_tag "Attribute Setter", :attr_writer, :with_types_and_name
|
153
155
|
end
|
154
156
|
end
|
155
157
|
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
module YARD
|
2
2
|
module Templates
|
3
3
|
module ErbCache
|
4
|
-
def self.method_for(filename)
|
4
|
+
def self.method_for(filename, &block)
|
5
5
|
@methods ||= {}
|
6
6
|
return @methods[filename] if @methods[filename]
|
7
7
|
@methods[filename] = name = "_erb_cache_#{@methods.size}"
|
8
|
-
|
8
|
+
erb = yield.src
|
9
|
+
encoding = erb[/\A(#coding:.*\r?\n)/, 1] || ''
|
10
|
+
module_eval "#{encoding}def #{name}; #{erb}; end", filename
|
11
|
+
|
9
12
|
name
|
10
13
|
end
|
11
14
|
|
@@ -3,7 +3,8 @@ require 'erb'
|
|
3
3
|
module YARD
|
4
4
|
module Templates
|
5
5
|
module Template
|
6
|
-
attr_accessor :class, :
|
6
|
+
attr_accessor :class, :section
|
7
|
+
attr_reader :options, :subsections
|
7
8
|
|
8
9
|
class << self
|
9
10
|
# @return [Array<Module>] a list of modules to be automatically included
|
data/spec/cli/yardoc_spec.rb
CHANGED
@@ -31,7 +31,7 @@ describe YARD::CLI::Yardoc do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should search for and use yardopts file specified by #options_file" do
|
34
|
-
|
34
|
+
File.should_receive(:read_binary).with("test").and_return("-o \n\nMYPATH\nFILE1 FILE2")
|
35
35
|
@yardoc.stub!(:support_rdoc_document_file!).and_return([])
|
36
36
|
@yardoc.options_file = "test"
|
37
37
|
@yardoc.run
|
@@ -41,15 +41,15 @@ describe YARD::CLI::Yardoc do
|
|
41
41
|
|
42
42
|
it "should use String#shell_split to split .yardopts tokens" do
|
43
43
|
optsdata = "foo bar"
|
44
|
-
optsdata.should_receive(:shell_split)
|
45
|
-
|
44
|
+
optsdata.should_receive(:shell_split)
|
45
|
+
File.should_receive(:read_binary).with("test").and_return(optsdata)
|
46
46
|
@yardoc.stub!(:support_rdoc_document_file!).and_return([])
|
47
47
|
@yardoc.options_file = "test"
|
48
48
|
@yardoc.run
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should allow --title to have multiple spaces in .yardopts" do
|
52
|
-
|
52
|
+
File.should_receive(:read_binary).with("test").and_return("--title \"Foo Bar\"")
|
53
53
|
@yardoc.stub!(:support_rdoc_document_file!).and_return([])
|
54
54
|
@yardoc.options_file = "test"
|
55
55
|
@yardoc.run
|
@@ -57,7 +57,7 @@ describe YARD::CLI::Yardoc do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should allow opts specified in command line to override yardopts file" do
|
60
|
-
|
60
|
+
File.should_receive(:read_binary).with(".yardopts").and_return("-o NOTMYPATH")
|
61
61
|
@yardoc.stub!(:support_rdoc_document_file!).and_return([])
|
62
62
|
@yardoc.run("-o", "MYPATH", "FILE")
|
63
63
|
@yardoc.options[:serializer].options[:basepath].should == :MYPATH
|
@@ -65,7 +65,7 @@ describe YARD::CLI::Yardoc do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should load the RDoc .document file if found" do
|
68
|
-
|
68
|
+
File.should_receive(:read_binary).with(".yardopts").and_return("-o NOTMYPATH")
|
69
69
|
@yardoc.stub!(:support_rdoc_document_file!).and_return(["FILE2", "FILE3"])
|
70
70
|
@yardoc.run("-o", "MYPATH", "FILE1")
|
71
71
|
@yardoc.options[:serializer].options[:basepath].should == :MYPATH
|
@@ -43,4 +43,15 @@ describe "YARD::Handlers::Ruby::#{RUBY18 ? "Legacy::" : ""}ClassConditionHandler
|
|
43
43
|
it "should only parse else block if condition is literal integer == 0" do
|
44
44
|
verify_method :n
|
45
45
|
end
|
46
|
+
|
47
|
+
it "should not fail on complex conditions" do
|
48
|
+
lambda { YARD.parse_string("if defined?(A) && defined?(B); puts 'hi' end") }.should_not raise_error
|
49
|
+
lambda do
|
50
|
+
YARD.parse_string(<<-eof)
|
51
|
+
(<<-TEST) unless defined?(ABCD_MODEL_TEST)
|
52
|
+
'String'
|
53
|
+
TEST
|
54
|
+
eof
|
55
|
+
end.should_not raise_error
|
56
|
+
end
|
46
57
|
end
|
@@ -109,4 +109,125 @@ describe "YARD::Handlers::Ruby::#{RUBY18 ? "Legacy::" : ""}ClassHandler" do
|
|
109
109
|
it "should not overwrite docstring with an empty one" do
|
110
110
|
Registry.at(:Zebra).docstring.should == "Docstring 2"
|
111
111
|
end
|
112
|
+
|
113
|
+
it "should turn 'class Const < Struct.new(:sym)' into class Const with attr :sym" do
|
114
|
+
obj = Registry.at("Point")
|
115
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
116
|
+
attrs = obj.attributes[:instance]
|
117
|
+
[:x, :y, :z].each do |key|
|
118
|
+
attrs.should have_key(key)
|
119
|
+
attrs[key][:read].should_not be_nil
|
120
|
+
attrs[key][:write].should_not be_nil
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should turn 'class Const < Struct.new('Name', :sym)' into class Const with attr :sym" do
|
125
|
+
obj = Registry.at("AnotherPoint")
|
126
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
127
|
+
attrs = obj.attributes[:instance]
|
128
|
+
[:a, :b, :c].each do |key|
|
129
|
+
attrs.should have_key(key)
|
130
|
+
attrs[key][:read].should_not be_nil
|
131
|
+
attrs[key][:write].should_not be_nil
|
132
|
+
end
|
133
|
+
|
134
|
+
Registry.at("XPoint").should be_nil
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should create a Struct::Name class when class Const < Struct.new('Name', :sym) is found" do
|
138
|
+
obj = Registry.at("Struct::XPoint")
|
139
|
+
obj.should_not be_nil
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should attach attribtues to the generated Struct::Name class when Struct.new('Name') is used" do
|
143
|
+
obj = Registry.at("Struct::XPoint")
|
144
|
+
attrs = obj.attributes[:instance]
|
145
|
+
[:a, :b, :c].each do |key|
|
146
|
+
attrs.should have_key(key)
|
147
|
+
attrs[key][:read].should_not be_nil
|
148
|
+
attrs[key][:write].should_not be_nil
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should use @attr to set attribute descriptions on Struct subclasses" do
|
153
|
+
obj = Registry.at("DoccedStruct#input")
|
154
|
+
obj.docstring.should == "the input stream"
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should use @attr to set attribute types on Struct subclasses" do
|
158
|
+
obj = Registry.at("DoccedStruct#someproc")
|
159
|
+
obj.should_not be_nil
|
160
|
+
obj.tag(:return).should_not be_nil
|
161
|
+
obj.tag(:return).types.should == ["Proc", "#call"]
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should default types unspecified by @attr to Object on Struct subclasses" do
|
165
|
+
obj = Registry.at("DoccedStruct#mode")
|
166
|
+
obj.should_not be_nil
|
167
|
+
obj.tag(:return).should_not be_nil
|
168
|
+
obj.tag(:return).types.should == ["Object"]
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should create parameters for writers of Struct subclass's attributes" do
|
172
|
+
obj = Registry.at("DoccedStruct#input=")
|
173
|
+
obj.tags(:param).size.should == 1
|
174
|
+
obj.tag(:param).types.should == ["IO"]
|
175
|
+
end
|
176
|
+
|
177
|
+
it "defines both readers and writers when @attr is used on Structs" do
|
178
|
+
obj = Registry.at("SemiDoccedStruct")
|
179
|
+
attrs = obj.attributes[:instance]
|
180
|
+
attrs[:first][:read].should_not be_nil
|
181
|
+
attrs[:first][:write].should_not be_nil
|
182
|
+
end
|
183
|
+
|
184
|
+
it "defines only a reader when only @attr_reader is used on Structs" do
|
185
|
+
obj = Registry.at("SemiDoccedStruct")
|
186
|
+
attrs = obj.attributes[:instance]
|
187
|
+
attrs[:second][:read].should_not be_nil
|
188
|
+
attrs[:second][:write].should be_nil
|
189
|
+
end
|
190
|
+
|
191
|
+
it "defines only a writer when only @attr_writer is used on Structs" do
|
192
|
+
obj = Registry.at("SemiDoccedStruct")
|
193
|
+
attrs = obj.attributes[:instance]
|
194
|
+
attrs[:third][:read].should be_nil
|
195
|
+
attrs[:third][:write].should_not be_nil
|
196
|
+
end
|
197
|
+
|
198
|
+
it "defines a reader with correct return types when @attr_reader is used on Structs" do
|
199
|
+
obj = Registry.at("SemiDoccedStruct#second")
|
200
|
+
obj.tag(:return).types.should == ["Fixnum"]
|
201
|
+
end
|
202
|
+
|
203
|
+
it "defines a writer with correct parameter types when @attr_writer is used on Structs" do
|
204
|
+
obj = Registry.at("SemiDoccedStruct#third=")
|
205
|
+
obj.tag(:param).types.should == ["Array"]
|
206
|
+
end
|
207
|
+
|
208
|
+
it "defines a reader and a writer when both @attr_reader and @attr_writer are used" do
|
209
|
+
obj = Registry.at("SemiDoccedStruct")
|
210
|
+
attrs = obj.attributes[:instance]
|
211
|
+
attrs[:fourth][:read].should_not be_nil
|
212
|
+
attrs[:fourth][:write].should_not be_nil
|
213
|
+
end
|
214
|
+
|
215
|
+
it "uses @attr_reader for the getter when both @attr_reader and @attr_writer are given" do
|
216
|
+
obj = Registry.at("SemiDoccedStruct#fourth")
|
217
|
+
obj.tag(:return).types.should == ["#read"]
|
218
|
+
end
|
219
|
+
|
220
|
+
it "uses @attr_writer for the setter when both @attr_reader and @attr_writer are given" do
|
221
|
+
obj = Registry.at("SemiDoccedStruct#fourth=")
|
222
|
+
obj.tag(:param).types.should == ["IO"]
|
223
|
+
end
|
224
|
+
|
225
|
+
it "extracts text from @attr_reader" do
|
226
|
+
Registry.at("SemiDoccedStruct#fourth").docstring.should == "returns a proc that reads"
|
227
|
+
end
|
228
|
+
|
229
|
+
it "extracts text from @attr_writer" do
|
230
|
+
Registry.at("SemiDoccedStruct#fourth=").docstring.should == "sets the proc that writes stuff"
|
231
|
+
end
|
232
|
+
|
112
233
|
end
|
@@ -83,3 +83,22 @@ end
|
|
83
83
|
class Zebra
|
84
84
|
end
|
85
85
|
|
86
|
+
class Point < Struct.new(:x, :y, :z)
|
87
|
+
end
|
88
|
+
|
89
|
+
class AnotherPoint < Struct.new('XPoint', :a, :b, :c, :description)
|
90
|
+
end
|
91
|
+
|
92
|
+
# @attr [IO] input the input stream
|
93
|
+
# @attr mode the mode to read
|
94
|
+
# @attr [Proc, #call] someproc the proc to run
|
95
|
+
class DoccedStruct < Struct.new(:input, :mode, :someproc)
|
96
|
+
end
|
97
|
+
|
98
|
+
# @attr [String] first the first entry
|
99
|
+
# @attr_reader [Fixnum] second this only has a reader
|
100
|
+
# @attr_writer [Array] third this only has a writer
|
101
|
+
# @attr_reader [#read] fourth returns a proc that reads
|
102
|
+
# @attr_writer [IO] fourth sets the proc that writes stuff
|
103
|
+
class SemiDoccedStruct < Struct.new(:first, :second, :third, :fourth)
|
104
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe YARD::Parser::Base do
|
4
|
+
describe '#initialize' do
|
5
|
+
before do
|
6
|
+
class MyParser < Parser::Base; def initialize(a, b) end end
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should take 2 arguments" do
|
10
|
+
lambda { Parser::Base.new }.should raise_error(ArgumentError, /wrong number of arguments/)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should raise NotImplementedError on #initialize" do
|
14
|
+
lambda { Parser::Base.new('a', 'b') }.should raise_error(NotImplementedError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should raise NotImplementedError on #parse" do
|
18
|
+
lambda { MyParser.new('a', 'b').parse }.should raise_error(NotImplementedError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should raise NotImplementedError on #tokenize" do
|
22
|
+
lambda { MyParser.new('a', 'b').tokenize }.should raise_error(NotImplementedError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,10 +1,62 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
2
|
|
3
|
+
shared_examples_for "parser type registration" do
|
4
|
+
before do
|
5
|
+
class MyParser < Parser::Base; end
|
6
|
+
end
|
7
|
+
|
8
|
+
after do
|
9
|
+
Parser::SourceParser.parser_types.delete(:my_parser)
|
10
|
+
Parser::SourceParser.parser_type_extensions.delete(:my_parser)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
3
14
|
describe YARD::Parser::SourceParser do
|
4
15
|
before do
|
5
16
|
Registry.clear
|
6
17
|
end
|
7
18
|
|
19
|
+
describe '.register_parser_type' do
|
20
|
+
it_should_behave_like "parser type registration"
|
21
|
+
|
22
|
+
it "should register a subclass of Parser::Base" do
|
23
|
+
parser = mock(:parser)
|
24
|
+
parser.should_receive(:parse)
|
25
|
+
MyParser.should_receive(:new).with('content', '(stdin)').and_return(parser)
|
26
|
+
Parser::SourceParser.register_parser_type(:my_parser, MyParser, 'myparser')
|
27
|
+
Parser::SourceParser.parse_string('content', :my_parser)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should require class to be a subclass of Parser::Base" do
|
31
|
+
lambda { Parser::SourceParser.register_parser_type(:my_parser, String) }.should raise_error(ArgumentError)
|
32
|
+
lambda { Parser::SourceParser.register_parser_type(:my_parser, Parser::Base) }.should raise_error(ArgumentError)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.parser_type_for_extension' do
|
37
|
+
it_should_behave_like "parser type registration"
|
38
|
+
|
39
|
+
it "should find an extension in a registered array of extensions" do
|
40
|
+
Parser::SourceParser.register_parser_type(:my_parser, MyParser, ['a', 'b', 'd'])
|
41
|
+
Parser::SourceParser.parser_type_for_extension('a').should == :my_parser
|
42
|
+
Parser::SourceParser.parser_type_for_extension('b').should == :my_parser
|
43
|
+
Parser::SourceParser.parser_type_for_extension('d').should == :my_parser
|
44
|
+
Parser::SourceParser.parser_type_for_extension('c').should_not == :my_parser
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should find an extension in a Regexp" do
|
48
|
+
Parser::SourceParser.register_parser_type(:my_parser, MyParser, /abc$/)
|
49
|
+
Parser::SourceParser.parser_type_for_extension('dabc').should == :my_parser
|
50
|
+
Parser::SourceParser.parser_type_for_extension('dabcd').should_not == :my_parser
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should find an extension in a String" do
|
54
|
+
Parser::SourceParser.register_parser_type(:my_parser, MyParser, "abc")
|
55
|
+
Parser::SourceParser.parser_type_for_extension('abc').should == :my_parser
|
56
|
+
Parser::SourceParser.parser_type_for_extension('abcd').should_not == :my_parser
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
8
60
|
describe '#parse_string' do
|
9
61
|
it "should parse basic Ruby code" do
|
10
62
|
YARD.parse_string(<<-eof)
|
@@ -58,6 +110,17 @@ describe YARD::Parser::SourceParser do
|
|
58
110
|
Registry.at('Hello2#x').docstring.should == "ANOTHER PASS"
|
59
111
|
end
|
60
112
|
|
113
|
+
it "should take preceeding comments only if they exist" do
|
114
|
+
YARD.parse_string <<-eof
|
115
|
+
# PASS
|
116
|
+
module Hello # FAIL
|
117
|
+
HELLO
|
118
|
+
end
|
119
|
+
eof
|
120
|
+
|
121
|
+
Registry.at(:Hello).docstring.should == "PASS"
|
122
|
+
end
|
123
|
+
|
61
124
|
it "should handle =begin/=end style comments" do
|
62
125
|
YARD.parse_string "=begin\nfoo\nbar\n=end\nclass Foo; end\n"
|
63
126
|
Registry.at(:Foo).docstring.should == "foo\nbar"
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<ul class="option">
|
7
7
|
<% for tag in tags %>
|
8
8
|
<li>
|
9
|
-
<span class="type"><%= format_types
|
9
|
+
<span class="type"><%= format_types(tag.pair.types || ['Object']) %></span>
|
10
10
|
<span class="name"><%= tag.pair.name %></span>
|
11
11
|
<span class="default">
|
12
12
|
<% if tag.pair.defaults %>
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
- 6
|
10
|
+
version: 0.5.6
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Loren Segal
|
@@ -9,7 +15,7 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-06-12 00:00:00 -04:00
|
13
19
|
default_executable:
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -96,12 +102,15 @@ files:
|
|
96
102
|
- lib/yard/handlers/ruby/mixin_handler.rb
|
97
103
|
- lib/yard/handlers/ruby/module_handler.rb
|
98
104
|
- lib/yard/handlers/ruby/process_handler.rb
|
105
|
+
- lib/yard/handlers/ruby/struct_handler_methods.rb
|
99
106
|
- lib/yard/handlers/ruby/visibility_handler.rb
|
100
107
|
- lib/yard/handlers/ruby/yield_handler.rb
|
101
108
|
- lib/yard/logging.rb
|
109
|
+
- lib/yard/parser/base.rb
|
102
110
|
- lib/yard/parser/c_parser.rb
|
103
111
|
- lib/yard/parser/ruby/ast_node.rb
|
104
112
|
- lib/yard/parser/ruby/legacy/ruby_lex.rb
|
113
|
+
- lib/yard/parser/ruby/legacy/ruby_parser.rb
|
105
114
|
- lib/yard/parser/ruby/legacy/statement.rb
|
106
115
|
- lib/yard/parser/ruby/legacy/statement_list.rb
|
107
116
|
- lib/yard/parser/ruby/legacy/token_list.rb
|
@@ -193,6 +202,7 @@ files:
|
|
193
202
|
- spec/handlers/spec_helper.rb
|
194
203
|
- spec/handlers/visibility_handler_spec.rb
|
195
204
|
- spec/handlers/yield_handler_spec.rb
|
205
|
+
- spec/parser/base_spec.rb
|
196
206
|
- spec/parser/c_parser_spec.rb
|
197
207
|
- spec/parser/examples/array.c.txt
|
198
208
|
- spec/parser/examples/example1.rb.txt
|
@@ -378,21 +388,27 @@ rdoc_options: []
|
|
378
388
|
require_paths:
|
379
389
|
- lib
|
380
390
|
required_ruby_version: !ruby/object:Gem::Requirement
|
391
|
+
none: false
|
381
392
|
requirements:
|
382
393
|
- - ">="
|
383
394
|
- !ruby/object:Gem::Version
|
395
|
+
hash: 3
|
396
|
+
segments:
|
397
|
+
- 0
|
384
398
|
version: "0"
|
385
|
-
version:
|
386
399
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
400
|
+
none: false
|
387
401
|
requirements:
|
388
402
|
- - ">="
|
389
403
|
- !ruby/object:Gem::Version
|
404
|
+
hash: 3
|
405
|
+
segments:
|
406
|
+
- 0
|
390
407
|
version: "0"
|
391
|
-
version:
|
392
408
|
requirements: []
|
393
409
|
|
394
410
|
rubyforge_project: yard
|
395
|
-
rubygems_version: 1.3.
|
411
|
+
rubygems_version: 1.3.7
|
396
412
|
signing_key:
|
397
413
|
specification_version: 3
|
398
414
|
summary: Documentation tool for consistent and usable documentation in Ruby.
|