class String
Public Class Methods
yaml_new( klass, tag, val )
click to toggle source
# File lib/syck/rubytypes.rb, line 154 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 Syck::TypeError, "Invalid String: " + val.inspect end end
Public Instance Methods
is_binary_data?()
click to toggle source
# File lib/syck/rubytypes.rb, line 151 def is_binary_data? self.count("\x00-\x7F", "^ -~\t\r\n").fdiv(self.size) > 0.3 || self.index("\x00") unless self.empty? end
is_complex_yaml?()
click to toggle source
# File lib/syck/rubytypes.rb, line 148 def is_complex_yaml? to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/ end
to_yaml( opts = {} )
click to toggle source
Calls superclass method
Object#to_yaml
# File lib/syck/rubytypes.rb, line 169 def to_yaml( opts = {} ) return super unless YAML == Syck Syck::quick_emit( is_complex_yaml? ? self : 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