shomen-yard 0.1.0

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.
@@ -0,0 +1,97 @@
1
+ == YARD Method Signature Overloading
2
+
3
+ YARD supports the `@overload` tag for defining "virtual" method interfaces.
4
+ Given a file +lib/example.rb+ containing a class with a documented method
5
+ using the overload tag:
6
+
7
+ class ExampleClass
8
+ # Example method using overload directive.
9
+ #
10
+ # @overload my_method(flazm, saszm)
11
+ # @param [String] flazm
12
+ # @param [String] saszm
13
+ #
14
+ # @overload my_method(bunny){ |ears| ... } -> true or false
15
+ # @param [String] bunny
16
+ #
17
+ def my_method(a1,a2=nil,&b)
18
+ end
19
+ end
20
+
21
+ Running the script through shomen via yard the signatures list should have
22
+ three entries, the literal interface and the two virtual interfaces.
23
+
24
+ example = @shomen['ExampleClass#my_method']
25
+ example['interfaces'].size #=> 3
26
+
27
+ === Literal Interface
28
+
29
+ Lets get a closer look at the last signature, which is alway the literal
30
+ interface.
31
+
32
+ signature = example['interfaces'].last
33
+
34
+ The first signature should match the literal definition.
35
+
36
+ signature['signature'] #=> 'my_method(a1,a2=nil,&b)'
37
+
38
+ And the arguments should be detailed as expected.
39
+
40
+ signature['arguments'][0]['name'] #=> 'a1'
41
+ signature['arguments'][0]['default'] #=> nil
42
+
43
+ signature['arguments'][1]['name'] #=> 'a2'
44
+ signature['arguments'][1]['default'] #=> 'nil'
45
+
46
+ As should the block argument.
47
+
48
+ signature['block']['name'] #=> '&b'
49
+
50
+ === Virtual Interface
51
+
52
+ The second and third signatures should conform to those given in
53
+ under the `:call-seq:` directive.
54
+
55
+ Lets get a closer look at the first of these.
56
+
57
+ signature = example['interfaces'][0]
58
+
59
+ The signature should match the provided image.
60
+
61
+ signature['signature'] #=> 'my_method(flazm, saszm)'
62
+
63
+ And the arguments should be detailed as expected.
64
+
65
+ signature['arguments'][0]['name'] #=> 'flazm'
66
+ signature['arguments'][0]['default'] #=> nil
67
+
68
+ signature['arguments'][1]['name'] #=> 'saszm'
69
+ signature['arguments'][1]['default'] #=> nil
70
+
71
+ This virtual signature does not specify a block so the block argument
72
+ should return `nil`.
73
+
74
+ signature['block'] #=> nil
75
+
76
+ Now lets' look at the second virtual signature.
77
+
78
+ signature = example['interfaces'][1]
79
+
80
+ The signature should match the provided image.
81
+
82
+ signature['signature'] #=> 'my_method(bunny)'
83
+
84
+ And the arguments should be detailed as expected.
85
+
86
+ signature['arguments'][0]['name'] #=> 'bunny'
87
+ signature['arguments'][0]['default'] #=> nil
88
+
89
+ This virtual signature does specify a block, but not as an argument, but rather
90
+ as a representation the call arguments.
91
+
92
+ signature['block']['image'] #=> '{ |ears| ... }'
93
+
94
+ This signature also give a returns description.
95
+
96
+ signature['returns'] #=> 'true or false'
97
+
@@ -0,0 +1 @@
1
+ require 'ae'
@@ -0,0 +1,24 @@
1
+ require 'shomen-yard'
2
+ require 'stringio'
3
+
4
+ #Before :all do
5
+ if not File.exist?('.ruby')
6
+ dotruby = "---\nname: example\n"
7
+ File.open('.ruby', 'w'){ |f| f << dotruby }
8
+ end
9
+ #end
10
+
11
+ When 'Given a file +(((.*?)))+' do |file, text|
12
+ @file = file
13
+ FileUtils.mkdir_p(File.dirname(file))
14
+ File.open(file, 'w'){ |f| f << text }
15
+ end
16
+
17
+ When 'Running the script through shomen' do
18
+ output = ''
19
+ $stdout = StringIO.new(output,'w+')
20
+ Shomen::Yard::Command.run('--yaml', @file)
21
+ $stdout.close
22
+ @shomen = YAML.load(output)
23
+ end
24
+
@@ -0,0 +1,52 @@
1
+ # This is an example toplevel class method.
2
+ def self.example_toplevel_method_class_method
3
+ end
4
+
5
+ # This is an example toplevel instance method.
6
+ def example_toplevel_method
7
+ end
8
+
9
+ # This is an example module.
10
+ module ExampleModule
11
+
12
+ # This is an example constant in a module.
13
+ EXAMPLE_CONSTANT = "example constant in a module"
14
+
15
+ # This is an example class method in a module.
16
+ def self.example_class_method
17
+ end
18
+
19
+ # This is an example instance method in a module.
20
+ def example_method
21
+ end
22
+
23
+ end
24
+
25
+ # This is an example class.
26
+ class ExampleClass
27
+
28
+ # This is an example constant in a class.
29
+ EXAMPLE_CONSTANT = "example constant in a class"
30
+
31
+ # This is an example class method in a class.
32
+ def self.example_class_method
33
+ end
34
+
35
+ # This is an example attribute.
36
+ attr :example_attribute
37
+
38
+ # This is an example attribute reader.
39
+ attr_reader :example_attribute_reader
40
+
41
+ # This is an example attribute writer.
42
+ attr_writer :example_attribute_writer
43
+
44
+ # This is an example attribute accessor.
45
+ attr_accessor :example_attribute_accessor
46
+
47
+ # This is an example instance method in a class.
48
+ def example_method
49
+ end
50
+
51
+ end
52
+
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shomen-yard
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - trans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: yard
16
+ requirement: &17741400 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *17741400
25
+ - !ruby/object:Gem::Dependency
26
+ name: shomen-model
27
+ requirement: &17740140 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *17740140
36
+ - !ruby/object:Gem::Dependency
37
+ name: detroit
38
+ requirement: &17738980 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *17738980
47
+ description: ! 'Shomen YARD is a utiliity for generating Shomen documentation file
48
+
49
+ using YARD as a backend parser.'
50
+ email:
51
+ - transfire@gmail.com
52
+ executables:
53
+ - shomen-yard
54
+ extensions: []
55
+ extra_rdoc_files:
56
+ - LICENSE.txt
57
+ - HISTORY.md
58
+ - README.md
59
+ files:
60
+ - .ruby
61
+ - .yardopts
62
+ - bin/shomen-yard
63
+ - lib/shomen-yard/command.rb
64
+ - lib/shomen-yard/generator.rb
65
+ - lib/shomen-yard.rb
66
+ - spec/01_metadata.rdoc
67
+ - spec/02_class.rdoc
68
+ - spec/03_module.rdoc
69
+ - spec/04_constant.rdoc
70
+ - spec/05_method.rdoc
71
+ - spec/10_interface_overloading.rdoc
72
+ - spec/applique/ae.rb
73
+ - spec/applique/shomen.rb
74
+ - spec/fixture/lib/example.rb
75
+ - LICENSE.txt
76
+ - HISTORY.md
77
+ - README.md
78
+ homepage: http://rubyworks.github.com/shomen-yard
79
+ licenses: []
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 1.8.11
99
+ signing_key:
100
+ specification_version: 3
101
+ summary: Shomen via YARD command line utility
102
+ test_files: []