shomen 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,94 @@
1
+ == RDoc Method Interface Overloading
2
+
3
+ RDoc supports the `:call-seq:` directive for defining "virtual"
4
+ method interfaces. Given a file +lib/example.rb+ containing a class
5
+ with a documented method using the directive:
6
+
7
+ class ExampleClass
8
+ # Example method using call-seq directive.
9
+ #
10
+ # :call-seq:
11
+ # my_method(flazm, saszm) -> nil
12
+ # my_method(bunny) { |ears| ... } -> true or false
13
+ #
14
+ def my_method(a1,a2=nil,&b)
15
+ end
16
+ end
17
+
18
+ Running the script through shomen command line interface the signatures list
19
+ should have only three entries.
20
+
21
+ example = @shomen['ExampleClass#my_method']
22
+
23
+ example['signatures'].size #=> 3
24
+
25
+ === Literal Interface
26
+
27
+ Lets get a closer look at the first signature.
28
+
29
+ signature = example['signatures'].first
30
+
31
+ The first signature should match the literal definition.
32
+
33
+ signature['signature'] #=> 'my_method(a1,a2=nil,&b)'
34
+
35
+ And the arguments should be detailed as expected.
36
+
37
+ signature['arguments'][0]['name'] #=> 'a1'
38
+ signature['arguments'][0]['default'] #=> nil
39
+
40
+ signature['arguments'][1]['name'] #=> 'a2'
41
+ signature['arguments'][1]['default'] #=> 'nil'
42
+
43
+ As should the block argument.
44
+
45
+ signature['block']['name'] #=> '&b'
46
+
47
+ === Virtual Interface
48
+
49
+ The second and third signatures should conform to those given in
50
+ under the `:call-seq:` directive.
51
+
52
+ Lets get a closer look at the first of these.
53
+
54
+ signature = example['signatures'][1]
55
+
56
+ The signature should match the provided image.
57
+
58
+ signature['signature'] #=> 'my_method(flazm, saszm)'
59
+
60
+ And the arguments should be detailed as expected.
61
+
62
+ signature['arguments'][0]['name'] #=> 'flazm'
63
+ signature['arguments'][0]['default'] #=> nil
64
+
65
+ signature['arguments'][1]['name'] #=> 'saszm'
66
+ signature['arguments'][1]['default'] #=> nil
67
+
68
+ This virtual signature does not specify a block so the block argument
69
+ should return `nil`.
70
+
71
+ signature['block'] #=> nil
72
+
73
+ Now lets' look at the second virtual signature.
74
+
75
+ signature = example['signatures'][2]
76
+
77
+ The signature should match the provided image.
78
+
79
+ signature['signature'] #=> 'my_method(bunny)'
80
+
81
+ And the arguments should be detailed as expected.
82
+
83
+ signature['arguments'][0]['name'] #=> 'bunny'
84
+ signature['arguments'][0]['default'] #=> nil
85
+
86
+ This virtual signature does specify a block, but not as an argument, but rather
87
+ as a representation the call arguments.
88
+
89
+ signature['block']['image'] #=> '{ |ears| ... }'
90
+
91
+ This last signature also give a returns description.
92
+
93
+ signature['returns'] #=> 'true or false'
94
+
@@ -0,0 +1,93 @@
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 call-seq directive.
9
+ #
10
+ # @overload my_method(flazm, saszm) -> nil
11
+ # @overload my_method(bunny) { |ears| ... } -> true or false
12
+ #
13
+ def my_method(a1,a2=nil,&b)
14
+ end
15
+ end
16
+
17
+ Running the script through shomen command line interface the signatures list
18
+ should have three entries, the literal interface and the two virtual interfaces.
19
+
20
+ example = @shomen['ExampleClass#my_method']
21
+
22
+ example['signatures'].size #=> 3
23
+
24
+ === Literal Interface
25
+
26
+ Lets get a closer look at the first signature.
27
+
28
+ signature = example['signatures'].first
29
+
30
+ The first signature should match the literal definition.
31
+
32
+ signature['signature'] #=> 'my_method(a1,a2=nil,&b)'
33
+
34
+ And the arguments should be detailed as expected.
35
+
36
+ signature['arguments'][0]['name'] #=> 'a1'
37
+ signature['arguments'][0]['default'] #=> nil
38
+
39
+ signature['arguments'][1]['name'] #=> 'a2'
40
+ signature['arguments'][1]['default'] #=> 'nil'
41
+
42
+ As should the block argument.
43
+
44
+ signature['block']['name'] #=> '&b'
45
+
46
+ === Virtual Interface
47
+
48
+ The second and third signatures should conform to those given in
49
+ under the `:call-seq:` directive.
50
+
51
+ Lets get a closer look at the first of these.
52
+
53
+ signature = example['signatures'][1]
54
+
55
+ The signature should match the provided image.
56
+
57
+ signature['signature'] #=> 'my_method(flazm, saszm)'
58
+
59
+ And the arguments should be detailed as expected.
60
+
61
+ signature['arguments'][0]['name'] #=> 'flazm'
62
+ signature['arguments'][0]['default'] #=> nil
63
+
64
+ signature['arguments'][1]['name'] #=> 'saszm'
65
+ signature['arguments'][1]['default'] #=> nil
66
+
67
+ This virtual signature does not specify a block so the block argument
68
+ should return `nil`.
69
+
70
+ signature['block'] #=> nil
71
+
72
+ Now lets' look at the second virtual signature.
73
+
74
+ signature = example['signatures'][2]
75
+
76
+ The signature should match the provided image.
77
+
78
+ signature['signature'] #=> 'my_method(bunny)'
79
+
80
+ And the arguments should be detailed as expected.
81
+
82
+ signature['arguments'][0]['name'] #=> 'bunny'
83
+ signature['arguments'][0]['default'] #=> nil
84
+
85
+ This virtual signature does specify a block, but not as an argument, but rather
86
+ as a representation the call arguments.
87
+
88
+ signature['block']['image'] #=> '{ |ears| ... }'
89
+
90
+ This last signature also give a returns description.
91
+
92
+ signature['returns'] #=> 'true or false'
93
+
@@ -0,0 +1,26 @@
1
+ require 'shomen/cli'
2
+ require 'stringio'
3
+
4
+ parser = ENV['parser'] || 'rdoc'
5
+
6
+ #Before :all do
7
+ if not File.exist?('.ruby')
8
+ dotruby = "---\nname: example\n"
9
+ File.open('.ruby', 'w'){ |f| f << dotruby }
10
+ end
11
+ #end
12
+
13
+ When 'Given a file +(((.*?)))+' do |file, text|
14
+ @file = file
15
+ FileUtils.mkdir_p(File.dirname(file))
16
+ File.open(file, 'w'){ |f| f << text }
17
+ end
18
+
19
+ When 'Running the script through shomen' do
20
+ output = ''
21
+ $stdout = StringIO.new(output,'w+')
22
+ Shomen.cli(parser, '--format', 'yaml', @file)
23
+ $stdout.close
24
+ @shomen = YAML.load(output)
25
+ end
26
+
@@ -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,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shomen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Thomas Sawyer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rdoc
16
+ requirement: &16179380 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *16179380
25
+ - !ruby/object:Gem::Dependency
26
+ name: detroit
27
+ requirement: &16178720 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *16178720
36
+ - !ruby/object:Gem::Dependency
37
+ name: reap
38
+ requirement: &16178040 !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: *16178040
47
+ description: Shomen defines a standard API documentaiton format for object-oriented
48
+ software (Ruby programs in particular) which can be used by documentation interfaces,
49
+ e.g. Hypervisor, to render API documentation
50
+ email:
51
+ - transfire@gmail.com
52
+ executables:
53
+ - shomen
54
+ extensions: []
55
+ extra_rdoc_files:
56
+ - HISTORY.rdoc
57
+ - README.rdoc
58
+ - NOTES.rdoc
59
+ files:
60
+ - .ruby
61
+ - .yardopts
62
+ - bin/shomen
63
+ - lib/shomen/cli/abstract.rb
64
+ - lib/shomen/cli/rdoc.rb
65
+ - lib/shomen/cli/tomdoc.rb
66
+ - lib/shomen/cli/yard.rb
67
+ - lib/shomen/cli.rb
68
+ - lib/shomen/core_ext/hash.rb
69
+ - lib/shomen/metadata.rb
70
+ - lib/shomen/model/abstract.rb
71
+ - lib/shomen/model/attribute.rb
72
+ - lib/shomen/model/class.rb
73
+ - lib/shomen/model/constant.rb
74
+ - lib/shomen/model/document.rb
75
+ - lib/shomen/model/interface.rb
76
+ - lib/shomen/model/method.rb
77
+ - lib/shomen/model/module.rb
78
+ - lib/shomen/model/script.rb
79
+ - lib/shomen/model.rb
80
+ - lib/shomen/rdoc/extensions.rb
81
+ - lib/shomen/rdoc.rb
82
+ - lib/shomen/server.rb
83
+ - lib/shomen/tomdoc.rb
84
+ - lib/shomen/yard.rb
85
+ - lib/shomen.yml
86
+ - spec/01_metadata.rdoc
87
+ - spec/02_class.rdoc
88
+ - spec/03_module.rdoc
89
+ - spec/04_constant.rdoc
90
+ - spec/05_method.rdoc
91
+ - spec/08_rdoc/01_interface_overloading.rdoc
92
+ - spec/09_yard/01_interface_overloading.rdoc
93
+ - spec/applique/shomen.rb
94
+ - spec/fixture/lib/example.rb
95
+ - HISTORY.rdoc
96
+ - README.rdoc
97
+ - NOTES.rdoc
98
+ homepage: http://rubyworks.github.com/shomen
99
+ licenses: []
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 1.8.5
119
+ signing_key:
120
+ specification_version: 3
121
+ summary: Standardized Object-Oriented Documentation Model
122
+ test_files: []