yard-is-monkey 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/.yardopts +9 -0
  2. data/lib/yard-is-monkey.rb +68 -0
  3. metadata +80 -0
@@ -0,0 +1,9 @@
1
+ --no-cache
2
+ --private
3
+ --protected
4
+ --hide-void-return
5
+ --plugin yard-is-monkey
6
+ --title 'Ruby Gems by Ivan Shikhalev'
7
+ --query="/^@@/ !~ o.name && @api.text != 'ignore'"
8
+ lib/**/*.rb ./*.rb
9
+ - *.md
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+
3
+ require 'yard'
4
+
5
+ module Is
6
+
7
+ module Monkey
8
+
9
+ module YARD
10
+
11
+ VERSION = '0.2.1'
12
+
13
+ class PropertyHandler < ::YARD::Handlers::Ruby::AttributeHandler
14
+
15
+ handles method_call(:property)
16
+ namespace_only
17
+
18
+ def process
19
+ return if statement.type == :var_ref || statement.type == :vcall
20
+ params = statement.parameters(false).dup
21
+ cls = nil
22
+ nul = nil
23
+ grp = 'Properties'
24
+ while params[-1].type == :list
25
+ arg = params.pop
26
+ ccc = arg.source.scan(/(?::class\s*=>|class:)\s*([\w:]+)/)[0]
27
+ cls = ccc[0] if ccc
28
+ nnn = arg.source.scan(/(?::null\s*=>|null:)\s*([\w:]+)/)[0]
29
+ nul = nnn && (nnn != 'nil' && nnn != 'false') ? ', nil' : ''
30
+ end
31
+ validated_attribute_names(params).each do |name|
32
+ namespace.attributes[scope][name] ||= SymbolHash[:read => nil,
33
+ :write => nil]
34
+ { :read => name, :write => "#{name}=" }.each do |type, meth|
35
+ o = MethodObject.new namespace, meth, scope
36
+ case type
37
+ when :read
38
+ sgn = "def #{name} *values"
39
+ src = "#{sgn}\n @#{name} << *values if ! values.empty? " +
40
+ "# abstract pseudocode\n @#{name}\nend"
41
+ when :write
42
+ par = [['value']]
43
+ sgn = "def @{name}= value"
44
+ src = "#{sgn}\n @#{name} = value # abstract pseudocode\nend"
45
+ doc = "Set new value to \"#{name}\" property."
46
+ if cls
47
+ doc += "\n@param [#{cls}] value"
48
+ end
49
+ end
50
+ o.parameters = par if par
51
+ o.signature = sgn
52
+ o.source = src
53
+ register(o)
54
+ o.docstring = doc if o.docstring.blank?(false)
55
+ o.docstring += "\n@return [#{cls}#{nul}]" if cls
56
+ o.group = (scope == :class) ? "Class #{grp}" : "Instance #{grp}"
57
+ namespace.attributes[scope][name][type] = o
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+
68
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yard-is-monkey
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ivan Shikhalev
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: yard
16
+ requirement: !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: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: is-monkey
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: YARD plugin for use with is-monkey gem.
47
+ email: shikhalev@gmail.com
48
+ executables: []
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - lib/yard-is-monkey.rb
53
+ - .yardopts
54
+ homepage: https://github.com/shikhalev/gems/
55
+ licenses:
56
+ - GNU LGPL
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: 1.9.2
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 1.8.25
76
+ signing_key:
77
+ specification_version: 3
78
+ summary: YARD plugin for use with is-monkey gem
79
+ test_files: []
80
+ has_rdoc: