### Home Classes Methods

### In Files

- lib/ramaze/snippets/ramaze/dictionary.rb

### Parent

Object

### Methods

- ::[]
- ::alpha
- ::auto
- ::new
- ::new_by
- #<<
- #==
- #[]
- #[]=
- #clear
- #delete
- #delete_if
- #dup
- #each
- #each_key
- #each_pair
- #each_value
- #empty?
- #fetch
- #find
- #first
- #insert
- #inspect
- #invert
- #keys
- #last
- #length
- #merge
- #merge!
- #order
- #order_by
- #order_by_key
- #order_by_value
- #pop
- #push
- #reject
- #reject!
- #reorder
- #replace
- #select
- #shift
- #size
- #store
- #to_a
- #to_s
- #unshift
- #update
- #values

### Class/Module Index

Quicksearch

- Ramaze
- Ramaze::App
- Ramaze::AppGraph
- Ramaze::Bin
- Ramaze::Bin::Console
- Ramaze::Bin::Create
- Ramaze::Bin::Helper
- Ramaze::Bin::Restart
- Ramaze::Bin::Runner
- Ramaze::Bin::Start
- Ramaze::Bin::Status
- Ramaze::Bin::Stop
- Ramaze::Cache
- Ramaze::Cache::LRU
- Ramaze::Cache::LocalMemCache
- Ramaze::Cache::MemCache
- Ramaze::Cache::Redis
- Ramaze::Cache::Sequel
- Ramaze::Controller
- Ramaze::CoreExtensions
- Ramaze::CoreExtensions::Array
- Ramaze::CoreExtensions::Binding
- Ramaze::CoreExtensions::Kernel
- Ramaze::CoreExtensions::Numeric
- Ramaze::CoreExtensions::Object
- Ramaze::CoreExtensions::Proc
- Ramaze::CoreExtensions::String
- Ramaze::Current
- Ramaze::DefaultController
- Ramaze::Dictionary
- Ramaze::Fiber
- Ramaze::Files
- Ramaze::GemSetup
- Ramaze::Gestalt
- Ramaze::Helper
- Ramaze::Helper::Auth
- Ramaze::Helper::Bench
- Ramaze::Helper::BlueForm
- Ramaze::Helper::BlueForm::Form
- Ramaze::Helper::CSRF
- Ramaze::Helper::Cache
- Ramaze::Helper::Cache::SingletonMethods
- Ramaze::Helper::Disqus
- Ramaze::Helper::Email
- Ramaze::Helper::Erector
- Ramaze::Helper::Flash
- Ramaze::Helper::Formatting
- Ramaze::Helper::Gestalt
- Ramaze::Helper::Gravatar
- Ramaze::Helper::Identity
- Ramaze::Helper::Layout
- Ramaze::Helper::Layout::SingletonMethods
- Ramaze::Helper::Link
- Ramaze::Helper::Localize
- Ramaze::Helper::Localize::Dictionary
- Ramaze::Helper::Localize::Parser
- Ramaze::Helper::Markaby
- Ramaze::Helper::Maruku
- Ramaze::Helper::Paginate
- Ramaze::Helper::Paginate::Paginator
- Ramaze::Helper::Paginate::Paginator::ArrayPager
- Ramaze::Helper::Paginate::Paginator::DataMapperPager
- Ramaze::Helper::Remarkably
- Ramaze::Helper::RequestAccessor
- Ramaze::Helper::SendFile
- Ramaze::Helper::SimpleCaptcha
- Ramaze::Helper::Stack
- Ramaze::Helper::Thread
- Ramaze::Helper::Ultraviolet
- Ramaze::Helper::Upload
- Ramaze::Helper::Upload::ClassMethods
- Ramaze::Helper::Upload::UploadedFile
- Ramaze::Helper::UserHelper
- Ramaze::Helper::UserHelper::Wrapper
- Ramaze::Helper::XHTML
- Ramaze::LRUHash
- Ramaze::Logger
- Ramaze::Logger::Analogger
- Ramaze::Logger::Growl
- Ramaze::Logger::Informer
- Ramaze::Logger::Knotify
- Ramaze::Logger::LogHub
- Ramaze::Logger::Logger
- Ramaze::Logger::RotatingInformer
- Ramaze::Logger::Syslog
- Ramaze::Logger::Xosd
- Ramaze::Logging
- Ramaze::MiddlewareCompiler
- Ramaze::Plugin
- Ramaze::Reloader
- Ramaze::Reloader::Hooks
- Ramaze::Reloader::WatchInotify
- Ramaze::Reloader::WatchStat
- Ramaze::Request
- Ramaze::Response
- Ramaze::SpecLogger
- Ramaze::Struct
- Ramaze::View
- Ramaze::View::Erector
- Ramaze::View::Erubis
- Ramaze::View::Ezamar
- Ramaze::View::Gestalt
- Ramaze::View::Haml
- Ramaze::View::Liquid
- Ramaze::View::Liquid::Tag
- Ramaze::View::Lokar
- Ramaze::View::Mustache
- Ramaze::View::Mustache::RamazeContext
- Ramaze::View::Nagoro
- Ramaze::View::Remarkably
- Ramaze::View::Sass
- Ramaze::View::Slippers
- Ramaze::View::Tagz
- Ramaze::View::Tagz::Methods
- Ramaze::View::Tenjin
- Nagoro
- Nagoro::Pipe
- Nagoro::Pipe::RenderPartial
- Bacon
- Bacon::PrettyOutput
- Erector
- Erector::Widget
- Rack
- Rack::RouteExceptions
- Tenjin
- Tenjin::Template
- BlankSlate
- Controller
- Fiber
- FiberError
- MainController
- Object
- OrderedSet
- Thread

No matching classes.

# Ramaze::Dictionary

### Public Class Methods

[]( *args ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 82
    def []( *args )
      hsh = new
      if Hash === args[0]
        hsh.replace(args[0])
      elsif (args.size % 2) != 0
        raise ArgumentError, "odd number of elements for Hash"
      else
        while !args.empty?
          hsh[args.shift] = args.shift
        end
      end
      hsh
    end

alpha( *args, &block ) click to toggle source

Alternate to new which creates a dictionary sorted by key.

    d = Dictionary.alpha
    d["z"] = 1
    d["y"] = 2
    d["x"] = 3
    d  #=> {"x"=>3,"y"=>2,"z"=>2}

This is equivalent to:

    Dictionary.new.order_by { |key,value| key }

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 114
    def alpha( *args, &block )
      new( *args, &block ).order_by_key
    end

auto( *args ) click to toggle source

Alternate to new which auto-creates sub-dictionaries as needed.

    d = Dictionary.auto
    d["a"]["b"]["c"] = "abc"  #=> { "a"=>{"b"=>{"c"=>"abc"}}}

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 123
    def auto( *args )
      #AutoDictionary.new(*args)
      leet = lambda { |hsh, key| hsh[key] = new( &leet ) }
      new(*args, &leet)
    end

new( *args, &blk ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 130
    def initialize( *args, &blk )
      @order = []
      @order_by = nil
      @hash = Hash.new( *args, &blk )
    end

new_by( *args, &blk ) click to toggle source

Like new but the block sets the order.

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 98
    def new_by( *args, &blk )
      new(*args).order_by(&blk)
    end

### Public Instance Methods

<<(kv) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 321
    def <<(kv)
      push(*kv)
    end

==( hsh2 ) click to toggle source

def ==( hsh2 )

    return false if @order != hsh2.order
    super hsh2

end

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 202
    def ==( hsh2 )
      if hsh2.is_a?( Dictionary )
        @order == hsh2.order &&
          @hash  == hsh2.instance_variable_get("@hash")
      else
        false
      end
    end

[](k) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 211
    def [] k
      @hash[ k ]
    end

[]=(k, i=nil, v=nil) click to toggle source

Store operator.

    h[key] = value

Or with additional index.

    h[key,index] = value

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 227
    def []=(k, i=nil, v=nil)
      if v
        insert(i,k,v)
      else
        store(k,i)
      end
    end

clear() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 245
    def clear
      @order = []
      @hash.clear
    end

delete( key ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 250
    def delete( key )
      @order.delete( key )
      @hash.delete( key )
    end

delete_if() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 271
    def delete_if
      order.clone.each { |k| delete k if yield }
      self
    end

dup() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 356
    def dup
      self.class[*to_a.flatten]
    end

each() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 265
    def each
      order.each { |k| yield( k,@hash[k] ) }
      self
    end

Also aliased as: each_pair
each_key() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 255
    def each_key
      order.each { |k| yield( k ) }
      self
    end

each_pair() click to toggle source
Alias for: each
each_value() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 260
    def each_value
      order.each { |k| yield( @hash[k] ) }
      self
    end

empty?() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 395
    def empty?
      @hash.empty?
    end

fetch( k ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 215
    def fetch( k )
      @hash.fetch( k )
    end

find() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 377
    def find
      each{|k,v| return k, v if yield(k,v) }
      return nil
    end

first() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 382
    def first
      @hash[order.first]
    end

insert( i,k,v ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 235
    def insert( i,k,v )
      @order.insert( i,k )
      @hash.store( k,v )
    end

inspect() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 350
    def inspect
      ary = []
      each {|k,v| ary << k.inspect + "=>" + v.inspect}
      '{' + ary.join(", ") + '}'
    end

invert() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 286
    def invert
      hsh2 = self.class.new
      order.each { |k| hsh2[@hash[k]] = k }
      hsh2
    end

keys() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 282
    def keys
      order
    end

last() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 386
    def last
      @hash[order.last]
    end

length() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 390
    def length
      @order.length
    end

Also aliased as: size
merge( hsh2 ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 367
    def merge( hsh2 )
      self.dup.update(hsh2)
    end

merge!( hsh2 ) click to toggle source
Alias for: update
order() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 136
    def order
      reorder if @order_by
      @order
    end

order_by( &block ) click to toggle source

Keep dictionary sorted by a specific sort order.

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 143
    def order_by( &block )
      @order_by = block
      order
      self
    end

order_by_key() click to toggle source

Keep dictionary sorted by key.

    d = Dictionary.new.order_by_key
    d["z"] = 1
    d["y"] = 2
    d["x"] = 3
    d  #=> {"x"=>3,"y"=>2,"z"=>2}

This is equivalent to:

    Dictionary.new.order_by { |key,value| key }

The initializer Dictionary#alpha also provides this.

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 163
    def order_by_key
      @order_by = lambda { |k,v| k }
      order
      self
    end

order_by_value() click to toggle source

Keep dictionary sorted by value.

    d = Dictionary.new.order_by_value
    d["z"] = 1
    d["y"] = 2
    d["x"] = 3
    d  #=> {"x"=>3,"y"=>2,"z"=>2}

This is equivalent to:

    Dictionary.new.order_by { |key,value| value }

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 181
    def order_by_value
      @order_by = lambda { |k,v| v }
      order
      self
    end

pop() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 335
    def pop
      key = order.last
      key ? [key,delete(key)] : nil
    end

push( k,v ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 325
    def push( k,v )
      unless @hash.include?( k )
        @order.push( k )
        @hash.store( k,v )
        true
      else
        false
      end
    end

reject( &block ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 292
    def reject( &block )
      self.dup.delete_if(&block)
    end

reject!( &block ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 296
    def reject!( &block )
      hsh2 = reject(&block)
      self == hsh2 ? nil : hsh2
    end

reorder() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 189
    def reorder
      if @order_by
        assoc = @order.collect{ |k| [k,@hash[k]] }.sort_by( &@order_by )
        @order = assoc.collect{ |k,v| k }
      end
      @order
    end

replace( hsh2 ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 301
    def replace( hsh2 )
      @order = hsh2.order
      @hash = hsh2.hash
    end

select() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 371
    def select
      ary = []
      each { |k,v| ary << [k,v] if yield k,v }
      ary
    end

shift() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 306
    def shift
      key = order.first
      key ? [key,delete(key)] : super
    end

size() click to toggle source
Alias for: length
store( a,b ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 240
    def store( a,b )
      @order.push( a ) unless @hash.has_key?( a )
      @hash.store( a,b )
    end

to_a() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 340
    def to_a
      ary = []
      each { |k,v| ary << [k,v] }
      ary
    end

to_s() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 346
    def to_s
      self.to_a.to_s
    end

unshift( k,v ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 311
    def unshift( k,v )
      unless @hash.include?( k )
        @order.unshift( k )
        @hash.store( k,v )
        true
      else
        false
      end
    end

update( hsh2 ) click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 360
    def update( hsh2 )
      hsh2.each { |k,v| self[k] = v }
      reorder
      self
    end

Also aliased as: merge!
values() click to toggle source

    # File lib/ramaze/snippets/ramaze/dictionary.rb, line 276
    def values
      ary = []
      order.each { |k| ary.push @hash[k] }
      ary
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.