Contains the logic to collect members from a CLR type
# File lib/caricature/clr/descriptor.rb, line 38 38: def build_event_collection(context, instance_member) 39: context[:events].inject(evts=[]) { |evc, ei| evc << ClrEventDescriptor.new(ei.name, instance_member) } 40: (instance_member ? @events = evts : @class_events = evts) 41: end
collects the instance members for a CLR type. makes sure it can handle indexers for properties etc.
# File lib/caricature/clr/descriptor.rb, line 11 11: def build_member_collections(context={}, instance_member=true) 12: 13: build_event_collection(context, instance_member) 14: 15: mem = [] 16: mem += build_method_collection(context, instance_member) 17: mem += build_property_collection(context, instance_member) 18: mem 19: end
# File lib/caricature/clr/descriptor.rb, line 31 31: def build_method_collection(context, instance_member) 32: context[:methods].inject([]) do |meths, mi| 33: meths << MemberDescriptor.new(mi.name.underscore, mi.return_type, instance_member) unless event?(mi.name, instance_member) 34: meths 35: end 36: end
# File lib/caricature/clr/descriptor.rb, line 21 21: def build_property_collection(context, instance_member) 22: context[:properties].inject([]) do |res, pi| 23: prop_name = property_name_from(pi) 24: res << MemberDescriptor.new(prop_name, pi.property_type, instance_member) 25: res << MemberDescriptor.new("set_Item", nil, instance_member) if prop_name == "get_Item" 26: res << MemberDescriptor.new("#{prop_name}=", nil, instance_member) if pi.can_write and prop_name != "get_Item" 27: res 28: end 29: end
# File lib/caricature/clr/descriptor.rb, line 69 69: def class_event_flags 70: non_public_flag | class_flags 71: end
the binding flags for class members of a CLR type
# File lib/caricature/clr/descriptor.rb, line 61 61: def class_flags 62: System::Reflection::BindingFlags.public | System::Reflection::BindingFlags.static 63: end
indicates if this member is an event
# File lib/caricature/clr/descriptor.rb, line 44 44: def event?(name, instance_member) 45: ((instance_member ? @events : @class_events)||[]).any? { |en| /^(add|remove)_#{en.event_name}/ =~ name } 46: end
# File lib/caricature/clr/descriptor.rb, line 65 65: def event_flags 66: non_public_flag | instance_flags 67: end
the binding flags for instance members of a CLR type
# File lib/caricature/clr/descriptor.rb, line 56 56: def instance_flags 57: System::Reflection::BindingFlags.public | System::Reflection::BindingFlags.instance 58: end
# File lib/caricature/clr/descriptor.rb, line 73 73: def non_public_flag 74: System::Reflection::BindingFlags.non_public 75: end
gets the property name from the PropertyInfo when the property is an indexer it will return +[]+
# File lib/caricature/clr/descriptor.rb, line 50 50: def property_name_from(property_info) 51: return property_info.name.underscore if property_info.get_index_parameters.empty? 52: "get_Item" 53: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.