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

### Methods

is_binary_data? is_complex_yaml? to_yaml yaml_new

### Public Class methods

yaml_new( klass, tag, val )

[Source]

    # File yaml/rubytypes.rb, line 148
        def String.yaml_new( klass, tag, val )
            val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"
            val = { 'str' => val } if String === val
            if Hash === val
                s = klass.allocate
                # Thank you, NaHi
                String.instance_method(:initialize).
                      bind(s).
                      call( val.delete( 'str' ) )
                val.each { |k,v| s.instance_variable_set( k, v ) }
                s
            else
                raise YAML::TypeError, "Invalid String: " + val.inspect
            end
        end

### Public Instance methods

is_binary_data?()

[Source]

    # File yaml/rubytypes.rb, line 145
        def is_binary_data?
            ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
        end

is_complex_yaml?()

[Source]

    # File yaml/rubytypes.rb, line 142
        def is_complex_yaml?
            to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
        end

to_yaml( opts = {} )

[Source]

    # File yaml/rubytypes.rb, line 163
            def to_yaml( opts = {} )
                    YAML::quick_emit( is_complex_yaml? ? object_id : nil, opts ) do |out|
                if is_binary_data?
                    out.scalar( "tag:yaml.org,2002:binary", [self].pack("m"), :literal )
                elsif to_yaml_properties.empty?
                    out.scalar( taguri, self, self =~ /^:/ ? :quote2 : to_yaml_style )
                else
                    out.map( taguri, to_yaml_style ) do |map|
                        map.add( 'str', "#{self}" )
                        to_yaml_properties.each do |m|
                            map.add( m, instance_variable_get( m ) )
                        end
                    end
                end
            end
            end

[Validate]