class Regexp - syck-1.3.0 Documentation

# class Regexp

### Public Class Methods

yaml_new( klass, tag, val ) click to toggle source

    # File lib/syck/rubytypes.rb, line 264
    def Regexp.yaml_new( klass, tag, val )
        if String === val and val =~ /^\/(.*)\/([mixn]*)$/
            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' )
                mods |= Regexp::NOENCODING if val['mods'].include?( 'n' )
            end
            val.delete( 'mods' )
            r = Syck::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 Syck::TypeError, "Invalid Regular expression: " + val.inspect
        end
    end

### Public Instance Methods

to_yaml( opts = {} ) click to toggle source
Calls superclass method Object#to_yaml

    # File lib/syck/rubytypes.rb, line 288
    def to_yaml( opts = {} )
    return super unless YAML == Syck
            Syck::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 Syck::TypeError, "Invalid Regular expression: " + src
                end
                to_yaml_properties.each do |m|
                    map.add( m, instance_variable_get( m ) )
                end
            end
        end
    end
    end