Class: Wukong::DocHelpers::FieldHandler
- Inherits:
-
YARD::Handlers::Ruby::ClassHandler
- Object
- YARD::Handlers::Ruby::ClassHandler
- Wukong::DocHelpers::FieldHandler
- Defined in:
- lib/wukong/doc_helpers/field_handler.rb
Overview
Instance Method Summary collapse
- #field_default ⇒ Object
- #field_doc ⇒ Object
- #field_name ⇒ Object
- #field_options ⇒ Object
- #field_type ⇒ Object
- #getter ⇒ Object
- #getter_docstring ⇒ Object
- #process ⇒ Object
- #setter ⇒ Object
- #setter_docstring ⇒ Object
Instance Method Details
#field_default ⇒ Object
84 85 86 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 84 def field_default [:default] end |
#field_doc ⇒ Object
80 81 82 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 80 def field_doc [:doc] end |
#field_name ⇒ Object
47 48 49 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 47 def field_name statement.parameters.first.jump(:tstring_content, :ident).source end |
#field_options ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 55 def return @field_options if @field_options @field_options = {} = statement.parameters[2] if keys_and_values = .jump(:assoc) until keys_and_values.empty? obj = keys_and_values.shift if obj.type == :symbol_literal key = obj.source.to_s.gsub(/^:/,'').to_sym value_obj = keys_and_values.shift if value_obj value = case key when :doc then value_obj.source.to_s.gsub(/^"/,'').gsub(/"$/,'') else value_obj.source end @field_options[key] = value end end end end @field_options end |
#field_type ⇒ Object
51 52 53 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 51 def field_type statement.parameters[1].jump(:string_content, :ident).source end |
#getter ⇒ Object
21 22 23 24 25 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 21 def getter @getter ||= YARD::CodeObjects::MethodObject.new(namespace, field_name, :instance).tap do |method| method.docstring = getter_docstring end end |
#getter_docstring ⇒ Object
33 34 35 36 37 38 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 33 def getter_docstring doc = "@return [#{field_type}]" doc += " #{field_doc}" if field_doc doc += " [Default: #{field_default}]" if field_default doc end |
#process ⇒ Object
15 16 17 18 19 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 15 def process register(getter) register(setter) namespace.attributes[:instance][field_name] = { :read => getter, :write => setter } end |
#setter ⇒ Object
27 28 29 30 31 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 27 def setter @setter ||= YARD::CodeObjects::MethodObject.new(namespace, field_name + '=', :instance).tap do |method| method.docstring = setter_docstring end end |
#setter_docstring ⇒ Object
40 41 42 43 44 45 |
# File 'lib/wukong/doc_helpers/field_handler.rb', line 40 def setter_docstring doc = "@return [#{field_type}]" doc += " #{field_doc}" if field_doc doc += " [Default: #{field_default}]" if field_default doc end |