Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 4318

Show
Ignore:
Timestamp:
04/30/06 20:36:37 (2 years ago)
Author:
rick
Message:

Namespaced OrderedHash so the Rails implementation does not clash with any others. (fixes #4911) [Julian Tarkhanov]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/lib/active_record/calculations.rb

    r4297 r4318  
    218218          end 
    219219 
    220           calculated_data.inject(OrderedHash.new) do |all, row| 
     220          calculated_data.inject(ActiveSupport::OrderedHash.new) do |all, row| 
    221221            key   = associated ? key_records[row[group_alias].to_i] : type_cast_calculated_value(row[group_alias], group_column) 
    222222            value = row[aggregate_alias] 
  • trunk/activesupport/lib/active_support/ordered_options.rb

    r3646 r4318  
    1 class OrderedHash < Array #:nodoc: 
     1# OrderedHash is namespaced to prevent conflicts with other implementations 
     2class ActiveSupport::OrderedHash < Array #:nodoc: 
    23  def []=(key, value)     
    34    if pair = find_pair(key) 
     
    2526end 
    2627 
    27 class OrderedOptions < OrderedHash #:nodoc: 
     28class OrderedOptions < ActiveSupport::OrderedHash #:nodoc: 
    2829  def []=(key, value) 
    2930    super(key.to_sym, value) 
  • trunk/railties/CHANGELOG

    r4310 r4318  
    11*SVN* 
     2 
     3* Namespaced OrderedHash so the Rails implementation does not clash with any others. (fixes #4911) [Julian Tarkhanov] 
    24 
    35* Replace Ruby's deprecated append_features in favor of included. [Marcel Molina Jr.] 
  • trunk/railties/lib/initializer.rb

    r4316 r4318  
    449449 
    450450      for framework in default_frameworks 
    451         self.send("#{framework}=", OrderedOptions.new) 
     451        self.send("#{framework}=", Rails::OrderedOptions.new) 
    452452      end 
    453453    end 
     
    577577 
    578578# Needs to be duplicated from Active Support since its needed before Active 
    579 # Support is available. 
    580 class OrderedHash < Array #:nodoc: 
    581   def []=(key, value)     
     579# Support is available. Here both Options and Hash are namespaced to prevent 
     580# conflicts with other implementations AND with the classes residing in ActiveSupport. 
     581class Rails::OrderedOptions < Array #:nodoc: 
     582  def []=(key, value) 
     583    key = key.to_sym 
     584 
    582585    if pair = find_pair(key) 
    583586      pair.pop 
     
    587590    end 
    588591  end 
    589    
     592 
    590593  def [](key) 
    591     pair = find_pair(key
     594    pair = find_pair(key.to_sym
    592595    pair ? pair.last : nil 
    593   end 
    594  
    595   def keys 
    596     self.collect { |i| i.first } 
    597   end 
    598  
    599   private 
    600     def find_pair(key) 
    601       self.each { |i| return i if i.first == key } 
    602       return false 
    603     end 
    604 end 
    605  
    606 class OrderedOptions < OrderedHash #:nodoc: 
    607   def []=(key, value) 
    608     super(key.to_sym, value) 
    609   end 
    610    
    611   def [](key) 
    612     super(key.to_sym) 
    613596  end 
    614597 
     
    620603    end 
    621604  end 
     605 
     606  private 
     607    def find_pair(key) 
     608      self.each { |i| return i if i.first == key } 
     609      return false 
     610    end 
    622611end