class YARD::Handlers::Ruby::Legacy::ClassHandler
(see Ruby::ClassHandler)
Private Instance Methods
create_struct_superclass(superclass, superclass_def)
click to toggle source
# File lib/yard/handlers/ruby/legacy/class_handler.rb, line 74 def create_struct_superclass(superclass, superclass_def) return if superclass == "Struct" the_super = register ClassObject.new(P("Struct"), superclass[8..-1]) do |o| o.superclass = "Struct" end parse_struct_subclass(the_super, superclass_def) the_super end
extract_parameters(superstring)
click to toggle source
Extracts the parameter list from the Struct.new declaration and returns it formatted as a list of member names. Expects the user will have used symbols to define the struct member names
@param [String] superstring the string declaring the superclass @return [Array<String>] a list of member names
# File lib/yard/handlers/ruby/legacy/class_handler.rb, line 69 def extract_parameters(superstring) paramstring = superstring.match(/\A(O?Struct)\.new\((.*?)\)/)[2] paramstring.split(",").select {|x| x.strip[0, 1] == ":" }.map {|x| x.strip[1..-1] } # the 1..-1 chops the leading : end
parse_struct_subclass(klass, superclass_def)
click to toggle source
# File lib/yard/handlers/ruby/legacy/class_handler.rb, line 95 def parse_struct_subclass(klass, superclass_def) # Bounce if there's no parens return unless superclass_def =~ /O?Struct\.new\((.*?)\)/ members = extract_parameters(superclass_def) create_attributes(klass, members) end
parse_superclass(superclass)
click to toggle source
# File lib/yard/handlers/ruby/legacy/class_handler.rb, line 102 def parse_superclass(superclass) case superclass when /\A(#{NAMESPACEMATCH})(?:\s|\Z)/, /\A(Struct|OStruct)\.new/, /\ADelegateClass\((.+?)\)\s*\Z/, /\A(#{NAMESPACEMATCH})\(/ $1 when "self" namespace.path end end
struct_superclass_name(superclass)
click to toggle source
# File lib/yard/handlers/ruby/legacy/class_handler.rb, line 83 def struct_superclass_name(superclass) match = superclass.match(/\A(Struct)\.new\((.*?)\)/) if match paramstring = match[2].split(",") first = paramstring.first.strip if first[0, 1] =~ /['"]/ && first[-1, 1] =~ /['"]/ && first !~ /\#\{/ return "Struct::#{first[1..-2]}" end end "Struct" end