Class: Struct

Class | Struct
In: | yaml/rubytypes.rb
Parent: | Object

### Methods

to_yaml yaml_new yaml_tag_class_name yaml_tag_read_class

### Public Class methods

yaml_new( klass, tag, val )

[Source]

    # File yaml/rubytypes.rb, line 52
        def self.yaml_new( klass, tag, val )
            if Hash === val
                struct_type = nil

                #
                # Use existing Struct if it exists
                #
                props = {}
                val.delete_if { |k,v| props[k] = v if k =~ /^@/ }
                begin
                    struct_name, struct_type = YAML.read_type_class( tag, Struct )
                rescue NameError
                end
                if not struct_type
                    struct_def = [ tag.split( ':', 4 ).last ]
                    struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) )
                end

                #
                # Set the Struct properties
                #
                st = YAML::object_maker( struct_type, {} )
                st.members.each do |m|
                    st.send( "#{m}=", val[m] )
                end
                props.each do |k,v|
                    st.instance_variable_set(k, v)
                end
                st
            else
                raise YAML::TypeError, "Invalid Ruby Struct: " + val.inspect
            end
        end

yaml_tag_class_name()

[Source]

    # File yaml/rubytypes.rb, line 50
        def self.yaml_tag_class_name; self.name.gsub( "Struct::", "" ); end

yaml_tag_read_class( name )

[Source]

    # File yaml/rubytypes.rb, line 51
        def self.yaml_tag_read_class( name ); "Struct::#{ name }"; end

### Public Instance methods

to_yaml( opts = {} )

[Source]

    # File yaml/rubytypes.rb, line 85
            def to_yaml( opts = {} )
                    YAML::quick_emit( object_id, opts ) do |out|
                            #
                            # Basic struct is passed as a YAML map
                            #
                out.map( taguri, to_yaml_style ) do |map|
                                    self.members.each do |m|
                        map.add( m, self[m] )
                    end
                                    self.to_yaml_properties.each do |m|
                        map.add( m, instance_variable_get( m ) )
                    end
                end
            end
            end

[Validate]