In Files

  • yaml/rubytypes.rb

Parent

Regexp

Public Class Methods

yaml_new( klass, tag, val ) click to toggle source
 
               # File yaml/rubytypes.rb, line 254
def Regexp.yaml_new( klass, tag, val )
    if String === val and val =~ /^\/(.*)\/([mix]*)$/
        val = { 'regexp' => $1, 'mods' => $2 }
    end
    if Hash === val
        mods = nil
        unless val['mods'].to_s.empty?
            mods = 0x00
            mods |= Regexp::EXTENDED if val['mods'].include?( 'x' )
            mods |= Regexp::IGNORECASE if val['mods'].include?( 'i' )
            mods |= Regexp::MULTILINE if val['mods'].include?( 'm' )
        end
        val.delete( 'mods' )
        r = YAML::object_maker( klass, {} )
        Regexp.instance_method(:initialize).
              bind(r).
              call( val.delete( 'regexp' ), mods )
        val.each { |k,v| r.instance_variable_set( k, v ) }
        r
    else
        raise YAML::TypeError, "Invalid Regular expression: " + val.inspect
    end
end
            

Public Instance Methods

to_yaml( opts = {} ) click to toggle source
 
               # File yaml/rubytypes.rb, line 277
def to_yaml( opts = {} )
        YAML::quick_emit( nil, opts ) do |out|
    if to_yaml_properties.empty?
        out.scalar( taguri, self.inspect, :plain )
    else
        out.map( taguri, to_yaml_style ) do |map|
            src = self.inspect
            if src =~ /\A\/(.*)\/([a-z]*)\Z/
                map.add( 'regexp', $1 )
                map.add( 'mods', $2 )
            else
                        raise YAML::TypeError, "Invalid Regular expression: " + src
            end
            to_yaml_properties.each do |m|
                map.add( m, instance_variable_get( m ) )
            end
        end
    end
end
end