rails2.3.2
module ActiveSupport
# Hash is ordered in Ruby 1.9!
if RUBY_VERSION >= '1.9'
OrderedHash = ::Hash
else
class OrderedHash < Hash #:nodoc:
def initialize(*args, &block)
super
@keys = []
end
def initialize_copy(other)
super
# make a deep copy of keys
@keys = other.keys
end
def []=(key, value)
@keys << key if !has_key?(key)
super
end
def delete(key)
if has_key? key
index = @keys.index(key)
@keys.delete_at index
end
super
end
def delete_if
super
sync_keys!
self
end
def reject!
super
sync_keys!
self
end
def reject(&block)
dup.reject!(&block)
end
def keys
@keys.dup
end
def values
@keys.collect { |key| self[key] }
end
def to_hash
self
end
def each_key
@keys.each { |key| yield key }
end
def each_value
@keys.each { |key| yield self[key]}
end
def each
@keys.each {|key| yield [key, self[key]]}
end
alias_method :each_pair, :each
def clear
super
@keys.clear
self
end
def shift
k = @keys.first
v = delete(k)
[k, v]
end
def merge!(other_hash)
other_hash.each {|k,v| self[k] = v }
self
end
def merge(other_hash)
dup.merge!(other_hash)
end
def inspect
"#<OrderedHash #{super}>"
end
private
def sync_keys!
@keys.delete_if {|k| !has_key?(k)}
end
end
end
end
module ActiveSupport #:nodoc:
class OrderedOptions < OrderedHash #:nodoc:
def []=(key, value)
super(key.to_sym, value)
end
def [](key)
super(key.to_sym)
end
def method_missing(name, *args)
if name.to_s =~ /(.*)=$/
self[$1.to_sym] = args.first
else
self[name]
end
end
end
end
分享到:
相关推荐
ruby on rails 教程源码,配合原书使用
一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码
rails-exporter-源码.rar
Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0) 3.0,3.1,3.2,4.0
Ruby on Rails源代码
Rails / ActiveSupport偏转器到JavaScript的端口(与node.js和浏览器兼容)。 安装 npm install inflect 文献资料 用法 inflect.pluralize('user'); // users inflect.singularize('users'); // user inflect....
2-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏...
本书源码 博文链接:https://msnvip.iteye.com/blog/139752
ruby on rails社区网站开发源码
《深入浅出Rails(影印版)》内容简介:通过此书,你将学习:希望你的网络应用超越平庸进入Web 2.0时代?《深入浅出Rails》将使你的编程和生产力达到最大值。你将学习一切Rails scaffolding的基本原理,以创建自定义的...
基于ruby on rails开发示例源码
基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip ...
influxdb-rails-源码.rar
threejs-rails-源码.rar
typeahead-addresspicker-rails-源码.rar
shopping_card_rails-源码.rar
ember-cli-rails-源码.rar
NULL 博文链接:https://luoping0425.iteye.com/blog/424476
Rails.Recipes.Rails.3.Edition.和源码
rails-timezone-js提供了使用ActiveSupport中的在ActiveSupport时区名称之间进行转换的功能。 该库可以在node.js和浏览器中使用。 用法 该库提供两个功能: from(timezone) :从ActiveSupport时区名称转换 to(tz)...