diff --git a/config/mongrel_cluster.yml b/config/mongrel_cluster.yml
index 954be24af..d6c477b9a 100644
--- a/config/mongrel_cluster.yml
+++ b/config/mongrel_cluster.yml
@@ -1,5 +1,5 @@
----
-log_file: log/mongrel.log
-port: 8000
-pid_file: tmp/mongrel.pid
+---
+log_file: log/mongrel.log
+port: 8000
+pid_file: tmp/mongrel.pid
servers: 8
\ No newline at end of file
diff --git a/public/opensearch/osm.xml b/public/opensearch/osm.xml
index a060ce7ee..754d78e5d 100644
--- a/public/opensearch/osm.xml
+++ b/public/opensearch/osm.xml
@@ -1,17 +1,17 @@
-
-
- OpenStreetMap
- OpenStreetMap Search
- Search for a place in OpenStreetMap, the Wiki World Map
- UTF-8
- UTF-8
- data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%06%00%00%00%1F%F3%FFa%00%00%00%19tEXtSoftware%00www.inkscape.org%9B%EE%3C%1A%00%00%01'IDATx%9C%9D%93%B1q%C30%0CE%1F%5Dd%80l%90I%C4*%A7%22%95%CF%85J%97%AE%B2%82%3DC%CE%03%A0%B3%9B%B8f%95%A3%17H%93%05%5C%A7%C8%0A%3F%05E%8A%92l%E7.%D0%E9N%02%81%07%E0Cr%FCaf%A6%FC%BC%5E%AF%DD%F4%3C%3Bt%C5%87%99)%84P%0E%DA%B6%BD%0AI%00%A1%A8%A8%1E%263S%D7u%C9'F%FE%9B%80%0C%C9%C9%22%BD'%B0%0A%AC%86%2CJ%DB%0E%22%11%8F%2F%D4%B3%22%8D%F34%CE%13u%06R%0C%40%D7u%AA%01%C5r%40%0Dq%88%C6%F9i%E8%7C%8CX%5D%A9M%95%D6%A3%A2Ti%C3Xx%CA%9C%F5mf3h%11%B6%07%B8%0APh%97%DD%1E%9E%5E%08!%D0%B6m%F1%87%108%1E%8EY5%007%03%5Cv%7B%00%3E%BF%3E%F8~x%1E%CD%B89l%00%F0I%0FWw%00%20%DB%AEJr%B6%E5%FB%09%80%C6y%CE%7D%91%1AP%B6p%2B%D9%BB%06%18V%3A%B5E%9F%AC%5B%95%AFY%3F%EE%20%A2mW%AA%93%DFN%3F%A0%E1%9B%F0u%E5%BC%BC%89%88%BC.%1F%D5'%DF%FD%C1%EE%F8%FFg%BFp%96%DF%E2%DCw%25%2B%00%00%00%00IEND%AEB%60%82
-
-
-
-
- Jonathan Bennett
- false
- Data © OpenStreetMap contributors, Some Rights Reserved. CC by-sa 2.0. Geolocation provided by npemap.org.uk, geocoder.us, geocoder.ca and geonames.org.
-
+
+
+ OpenStreetMap
+ OpenStreetMap Search
+ Search for a place in OpenStreetMap, the Wiki World Map
+ UTF-8
+ UTF-8
+ data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%06%00%00%00%1F%F3%FFa%00%00%00%19tEXtSoftware%00www.inkscape.org%9B%EE%3C%1A%00%00%01'IDATx%9C%9D%93%B1q%C30%0CE%1F%5Dd%80l%90I%C4*%A7%22%95%CF%85J%97%AE%B2%82%3DC%CE%03%A0%B3%9B%B8f%95%A3%17H%93%05%5C%A7%C8%0A%3F%05E%8A%92l%E7.%D0%E9N%02%81%07%E0Cr%FCaf%A6%FC%BC%5E%AF%DD%F4%3C%3Bt%C5%87%99)%84P%0E%DA%B6%BD%0AI%00%A1%A8%A8%1E%263S%D7u%C9'F%FE%9B%80%0C%C9%C9%22%BD'%B0%0A%AC%86%2CJ%DB%0E%22%11%8F%2F%D4%B3%22%8D%F34%CE%13u%06R%0C%40%D7u%AA%01%C5r%40%0Dq%88%C6%F9i%E8%7C%8CX%5D%A9M%95%D6%A3%A2Ti%C3Xx%CA%9C%F5mf3h%11%B6%07%B8%0APh%97%DD%1E%9E%5E%08!%D0%B6m%F1%87%108%1E%8EY5%007%03%5Cv%7B%00%3E%BF%3E%F8~x%1E%CD%B89l%00%F0I%0FWw%00%20%DB%AEJr%B6%E5%FB%09%80%C6y%CE%7D%91%1AP%B6p%2B%D9%BB%06%18V%3A%B5E%9F%AC%5B%95%AFY%3F%EE%20%A2mW%AA%93%DFN%3F%A0%E1%9B%F0u%E5%BC%BC%89%88%BC.%1F%D5'%DF%FD%C1%EE%F8%FFg%BFp%96%DF%E2%DCw%25%2B%00%00%00%00IEND%AEB%60%82
+
+
+
+
+ Jonathan Bennett
+ false
+ Data © OpenStreetMap contributors, Some Rights Reserved. CC by-sa 2.0. Geolocation provided by npemap.org.uk, geocoder.us, geocoder.ca and geonames.org.
+
diff --git a/vendor/gems/composite_primary_keys-2.2.2/README.txt b/vendor/gems/composite_primary_keys-2.2.2/README.txt
index 11daeb922..b0d8c12d6 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/README.txt
+++ b/vendor/gems/composite_primary_keys-2.2.2/README.txt
@@ -1,41 +1,41 @@
-= Composite Primary Keys for ActiveRecords
-
-== Summary
-
-ActiveRecords/Rails famously doesn't support composite primary keys.
-This RubyGem extends the activerecord gem to provide CPK support.
-
-== Installation
-
- gem install composite_primary_keys
-
-== Usage
-
- require 'composite_primary_keys'
- class ProductVariation
- set_primary_keys :product_id, :variation_seq
- end
-
- pv = ProductVariation.find(345, 12)
-
-It even supports composite foreign keys for associations.
-
-See http://compositekeys.rubyforge.org for more.
-
-== Running Tests
-
-See test/README.tests.txt
-
-== Url
-
-http://compositekeys.rubyforge.org
-
-== Questions, Discussion and Contributions
-
-http://groups.google.com/compositekeys
-
-== Author
-
-Written by Dr Nic Williams, drnicwilliams@gmail
-Contributions by many!
-
+= Composite Primary Keys for ActiveRecords
+
+== Summary
+
+ActiveRecords/Rails famously doesn't support composite primary keys.
+This RubyGem extends the activerecord gem to provide CPK support.
+
+== Installation
+
+ gem install composite_primary_keys
+
+== Usage
+
+ require 'composite_primary_keys'
+ class ProductVariation
+ set_primary_keys :product_id, :variation_seq
+ end
+
+ pv = ProductVariation.find(345, 12)
+
+It even supports composite foreign keys for associations.
+
+See http://compositekeys.rubyforge.org for more.
+
+== Running Tests
+
+See test/README.tests.txt
+
+== Url
+
+http://compositekeys.rubyforge.org
+
+== Questions, Discussion and Contributions
+
+http://groups.google.com/compositekeys
+
+== Author
+
+Written by Dr Nic Williams, drnicwilliams@gmail
+Contributions by many!
+
diff --git a/vendor/gems/composite_primary_keys-2.2.2/Rakefile b/vendor/gems/composite_primary_keys-2.2.2/Rakefile
index fe0b8fd78..e5bebdb97 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/Rakefile
+++ b/vendor/gems/composite_primary_keys-2.2.2/Rakefile
@@ -1,65 +1,65 @@
-require 'rubygems'
-require 'rake'
-require 'rake/clean'
-require 'rake/testtask'
-require 'rake/rdoctask'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-require 'rake/contrib/rubyforgepublisher'
-require 'fileutils'
-require 'hoe'
-include FileUtils
-require File.join(File.dirname(__FILE__), 'lib', 'composite_primary_keys', 'version')
-
-AUTHOR = "Dr Nic Williams"
-EMAIL = "drnicwilliams@gmail.com"
-DESCRIPTION = "Composite key support for ActiveRecords"
-GEM_NAME = "composite_primary_keys" # what ppl will type to install your gem
-if File.exists?("~/.rubyforge/user-config.yml")
- # TODO this should prob go in a local/ file
- config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
- RUBYFORGE_USERNAME = config["username"]
-end
-RUBYFORGE_PROJECT = "compositekeys"
-HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
-
-REV = nil #File.read(".svn/entries")[/committed-rev="(\d+)"/, 1] rescue nil
-VERS = ENV['VERSION'] || (CompositePrimaryKeys::VERSION::STRING + (REV ? ".#{REV}" : ""))
-CLEAN.include ['**/.*.sw?', '*.gem', '.config','debug.log','*.db','logfile','log/**/*','**/.DS_Store', '.project']
-RDOC_OPTS = ['--quiet', '--title', "newgem documentation",
- "--opname", "index.html",
- "--line-numbers",
- "--main", "README",
- "--inline-source"]
-
-class Hoe
- def extra_deps
- @extra_deps.reject { |x| Array(x).first == 'hoe' }
- end
-end
-
-# Generate all the Rake tasks
-# Run 'rake -T' to see list of generated tasks (from gem root directory)
-hoe = Hoe.new(GEM_NAME, VERS) do |p|
- p.author = AUTHOR
- p.description = DESCRIPTION
- p.email = EMAIL
- p.summary = DESCRIPTION
- p.url = HOMEPATH
- p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
- p.test_globs = ["test/**/test*.rb"]
- p.clean_globs |= CLEAN #An array of file patterns to delete on clean.
-
- # == Optional
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
- p.extra_deps = [['activerecord', '>= 2.2.0']] #An array of rubygem dependencies.
- #p.spec_extras - A hash of extra values to set in the gemspec.
-end
-
-CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\n\n")
-PATH = RUBYFORGE_PROJECT
-hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
-
-PROJECT_ROOT = File.expand_path(".")
-
-require 'loader'
+require 'rubygems'
+require 'rake'
+require 'rake/clean'
+require 'rake/testtask'
+require 'rake/rdoctask'
+require 'rake/packagetask'
+require 'rake/gempackagetask'
+require 'rake/contrib/rubyforgepublisher'
+require 'fileutils'
+require 'hoe'
+include FileUtils
+require File.join(File.dirname(__FILE__), 'lib', 'composite_primary_keys', 'version')
+
+AUTHOR = "Dr Nic Williams"
+EMAIL = "drnicwilliams@gmail.com"
+DESCRIPTION = "Composite key support for ActiveRecords"
+GEM_NAME = "composite_primary_keys" # what ppl will type to install your gem
+if File.exists?("~/.rubyforge/user-config.yml")
+ # TODO this should prob go in a local/ file
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
+ RUBYFORGE_USERNAME = config["username"]
+end
+RUBYFORGE_PROJECT = "compositekeys"
+HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
+
+REV = nil #File.read(".svn/entries")[/committed-rev="(\d+)"/, 1] rescue nil
+VERS = ENV['VERSION'] || (CompositePrimaryKeys::VERSION::STRING + (REV ? ".#{REV}" : ""))
+CLEAN.include ['**/.*.sw?', '*.gem', '.config','debug.log','*.db','logfile','log/**/*','**/.DS_Store', '.project']
+RDOC_OPTS = ['--quiet', '--title', "newgem documentation",
+ "--opname", "index.html",
+ "--line-numbers",
+ "--main", "README",
+ "--inline-source"]
+
+class Hoe
+ def extra_deps
+ @extra_deps.reject { |x| Array(x).first == 'hoe' }
+ end
+end
+
+# Generate all the Rake tasks
+# Run 'rake -T' to see list of generated tasks (from gem root directory)
+hoe = Hoe.new(GEM_NAME, VERS) do |p|
+ p.author = AUTHOR
+ p.description = DESCRIPTION
+ p.email = EMAIL
+ p.summary = DESCRIPTION
+ p.url = HOMEPATH
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
+ p.test_globs = ["test/**/test*.rb"]
+ p.clean_globs |= CLEAN #An array of file patterns to delete on clean.
+
+ # == Optional
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
+ p.extra_deps = [['activerecord', '>= 2.2.0']] #An array of rubygem dependencies.
+ #p.spec_extras - A hash of extra values to set in the gemspec.
+end
+
+CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\n\n")
+PATH = RUBYFORGE_PROJECT
+hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
+
+PROJECT_ROOT = File.expand_path(".")
+
+require 'loader'
diff --git a/vendor/gems/composite_primary_keys-2.2.2/install.rb b/vendor/gems/composite_primary_keys-2.2.2/install.rb
index 5be89cf10..7d021ce1d 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/install.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/install.rb
@@ -1,30 +1,30 @@
-require 'rbconfig'
-require 'find'
-require 'ftools'
-
-include Config
-
-# this was adapted from rdoc's install.rb by ways of Log4r
-
-$sitedir = CONFIG["sitelibdir"]
-unless $sitedir
- version = CONFIG["MAJOR"] + "." + CONFIG["MINOR"]
- $libdir = File.join(CONFIG["libdir"], "ruby", version)
- $sitedir = $:.find {|x| x =~ /site_ruby/ }
- if !$sitedir
- $sitedir = File.join($libdir, "site_ruby")
- elsif $sitedir !~ Regexp.quote(version)
- $sitedir = File.join($sitedir, version)
- end
-end
-
-# the acual gruntwork
-Dir.chdir("lib")
-
-Find.find("composite_primary_keys", "composite_primary_keys.rb") { |f|
- if f[-3..-1] == ".rb"
- File::install(f, File.join($sitedir, *f.split(/\//)), 0644, true)
- else
- File::makedirs(File.join($sitedir, *f.split(/\//)))
- end
-}
+require 'rbconfig'
+require 'find'
+require 'ftools'
+
+include Config
+
+# this was adapted from rdoc's install.rb by ways of Log4r
+
+$sitedir = CONFIG["sitelibdir"]
+unless $sitedir
+ version = CONFIG["MAJOR"] + "." + CONFIG["MINOR"]
+ $libdir = File.join(CONFIG["libdir"], "ruby", version)
+ $sitedir = $:.find {|x| x =~ /site_ruby/ }
+ if !$sitedir
+ $sitedir = File.join($libdir, "site_ruby")
+ elsif $sitedir !~ Regexp.quote(version)
+ $sitedir = File.join($sitedir, version)
+ end
+end
+
+# the acual gruntwork
+Dir.chdir("lib")
+
+Find.find("composite_primary_keys", "composite_primary_keys.rb") { |f|
+ if f[-3..-1] == ".rb"
+ File::install(f, File.join($sitedir, *f.split(/\//)), 0644, true)
+ else
+ File::makedirs(File.join($sitedir, *f.split(/\//)))
+ end
+}
diff --git a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys.rb b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys.rb
index 99b61407e..64f7e14b3 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys.rb
@@ -1,55 +1,55 @@
-#--
-# Copyright (c) 2006 Nic Williams
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#++
-
-$:.unshift(File.dirname(__FILE__)) unless
- $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
-
-unless defined?(ActiveRecord)
- begin
- require 'active_record'
- rescue LoadError
- require 'rubygems'
- require_gem 'activerecord'
- end
-end
-
-require 'composite_primary_keys/fixtures'
-require 'composite_primary_keys/composite_arrays'
-require 'composite_primary_keys/associations'
-require 'composite_primary_keys/association_preload'
-require 'composite_primary_keys/reflection'
-require 'composite_primary_keys/base'
-require 'composite_primary_keys/calculations'
-require 'composite_primary_keys/migration'
-require 'composite_primary_keys/attribute_methods'
-
-ActiveRecord::Base.class_eval do
- include CompositePrimaryKeys::ActiveRecord::Base
-end
-
-Dir[File.dirname(__FILE__) + '/composite_primary_keys/connection_adapters/*.rb'].each do |adapter|
- begin
- require adapter.gsub('.rb','')
- rescue MissingSourceFile
- end
-end
+#--
+# Copyright (c) 2006 Nic Williams
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#++
+
+$:.unshift(File.dirname(__FILE__)) unless
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
+
+unless defined?(ActiveRecord)
+ begin
+ require 'active_record'
+ rescue LoadError
+ require 'rubygems'
+ require_gem 'activerecord'
+ end
+end
+
+require 'composite_primary_keys/fixtures'
+require 'composite_primary_keys/composite_arrays'
+require 'composite_primary_keys/associations'
+require 'composite_primary_keys/association_preload'
+require 'composite_primary_keys/reflection'
+require 'composite_primary_keys/base'
+require 'composite_primary_keys/calculations'
+require 'composite_primary_keys/migration'
+require 'composite_primary_keys/attribute_methods'
+
+ActiveRecord::Base.class_eval do
+ include CompositePrimaryKeys::ActiveRecord::Base
+end
+
+Dir[File.dirname(__FILE__) + '/composite_primary_keys/connection_adapters/*.rb'].each do |adapter|
+ begin
+ require adapter.gsub('.rb','')
+ rescue MissingSourceFile
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/base.rb b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/base.rb
index a4c7ff93a..4558f97a3 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/base.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/base.rb
@@ -1,341 +1,341 @@
-module CompositePrimaryKeys
- module ActiveRecord #:nodoc:
- class CompositeKeyError < StandardError #:nodoc:
- end
-
- module Base #:nodoc:
-
- INVALID_FOR_COMPOSITE_KEYS = 'Not appropriate for composite primary keys'
- NOT_IMPLEMENTED_YET = 'Not implemented for composite primary keys yet'
-
- def self.append_features(base)
- super
- base.send(:include, InstanceMethods)
- base.extend(ClassMethods)
- end
-
- module ClassMethods
- def set_primary_keys(*keys)
- keys = keys.first if keys.first.is_a?(Array)
- keys = keys.map { |k| k.to_sym }
- cattr_accessor :primary_keys
- self.primary_keys = keys.to_composite_keys
-
- class_eval <<-EOV
- extend CompositeClassMethods
- include CompositeInstanceMethods
-
- include CompositePrimaryKeys::ActiveRecord::Associations
- include CompositePrimaryKeys::ActiveRecord::AssociationPreload
- include CompositePrimaryKeys::ActiveRecord::Calculations
- include CompositePrimaryKeys::ActiveRecord::AttributeMethods
- EOV
- end
-
- def composite?
- false
- end
- end
-
- module InstanceMethods
- def composite?; self.class.composite?; end
- end
-
- module CompositeInstanceMethods
-
- # A model instance's primary keys is always available as model.ids
- # whether you name it the default 'id' or set it to something else.
- def id
- attr_names = self.class.primary_keys
- CompositeIds.new(attr_names.map { |attr_name| read_attribute(attr_name) })
- end
- alias_method :ids, :id
-
- def to_param
- id.to_s
- end
-
- def id_before_type_cast #:nodoc:
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::NOT_IMPLEMENTED_YET
- end
-
- def quoted_id #:nodoc:
- [self.class.primary_keys, ids].
- transpose.
- map {|attr_name,id| quote_value(id, column_for_attribute(attr_name))}.
- to_composite_ids
- end
-
- # Sets the primary ID.
- def id=(ids)
- ids = ids.split(ID_SEP) if ids.is_a?(String)
- ids.flatten!
- unless ids.is_a?(Array) and ids.length == self.class.primary_keys.length
- raise "#{self.class}.id= requires #{self.class.primary_keys.length} ids"
- end
- [primary_keys, ids].transpose.each {|key, an_id| write_attribute(key , an_id)}
- id
- end
-
- # Returns a clone of the record that hasn't been assigned an id yet and
- # is treated as a new record. Note that this is a "shallow" clone:
- # it copies the object's attributes only, not its associations.
- # The extent of a "deep" clone is application-specific and is therefore
- # left to the application to implement according to its need.
- def clone
- attrs = self.attributes_before_type_cast
- self.class.primary_keys.each {|key| attrs.delete(key.to_s)}
- self.class.new do |record|
- record.send :instance_variable_set, '@attributes', attrs
- end
- end
-
-
- private
- # The xx_without_callbacks methods are overwritten as that is the end of the alias chain
-
- # Creates a new record with values matching those of the instance attributes.
- def create_without_callbacks
- unless self.id
- raise CompositeKeyError, "Composite keys do not generated ids from sequences, you must provide id values"
- end
- attributes_minus_pks = attributes_with_quotes(false)
- quoted_pk_columns = self.class.primary_key.map { |col| connection.quote_column_name(col) }
- cols = quoted_column_names(attributes_minus_pks) << quoted_pk_columns
- vals = attributes_minus_pks.values << quoted_id
- connection.insert(
- "INSERT INTO #{self.class.quoted_table_name} " +
- "(#{cols.join(', ')}) " +
- "VALUES (#{vals.join(', ')})",
- "#{self.class.name} Create",
- self.class.primary_key,
- self.id
- )
- @new_record = false
- return true
- end
-
- # Updates the associated record with values matching those of the instance attributes.
- def update_without_callbacks
- where_clause_terms = [self.class.primary_key, quoted_id].transpose.map do |pair|
- "(#{connection.quote_column_name(pair[0])} = #{pair[1]})"
- end
- where_clause = where_clause_terms.join(" AND ")
- connection.update(
- "UPDATE #{self.class.quoted_table_name} " +
- "SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false))} " +
- "WHERE #{where_clause}",
- "#{self.class.name} Update"
- )
- return true
- end
-
- # Deletes the record in the database and freezes this instance to reflect that no changes should
- # be made (since they can't be persisted).
- def destroy_without_callbacks
- where_clause_terms = [self.class.primary_key, quoted_id].transpose.map do |pair|
- "(#{connection.quote_column_name(pair[0])} = #{pair[1]})"
- end
- where_clause = where_clause_terms.join(" AND ")
- unless new_record?
- connection.delete(
- "DELETE FROM #{self.class.quoted_table_name} " +
- "WHERE #{where_clause}",
- "#{self.class.name} Destroy"
- )
- end
- freeze
- end
- end
-
- module CompositeClassMethods
- def primary_key; primary_keys; end
- def primary_key=(keys); primary_keys = keys; end
-
- def composite?
- true
- end
-
- #ids_to_s([[1,2],[7,3]]) -> "(1,2),(7,3)"
- #ids_to_s([[1,2],[7,3]], ',', ';') -> "1,2;7,3"
- def ids_to_s(many_ids, id_sep = CompositePrimaryKeys::ID_SEP, list_sep = ',', left_bracket = '(', right_bracket = ')')
- many_ids.map {|ids| "#{left_bracket}#{ids}#{right_bracket}"}.join(list_sep)
- end
-
- # Creates WHERE condition from list of composited ids
- # User.update_all({:role => 'admin'}, :conditions => composite_where_clause([[1, 2], [2, 2]])) #=> UPDATE admins SET admin.role='admin' WHERE (admin.type=1 AND admin.type2=2) OR (admin.type=2 AND admin.type2=2)
- # User.find(:all, :conditions => composite_where_clause([[1, 2], [2, 2]])) #=> SELECT * FROM admins WHERE (admin.type=1 AND admin.type2=2) OR (admin.type=2 AND admin.type2=2)
- def composite_where_clause(ids)
- if ids.is_a?(String)
- ids = [[ids]]
- elsif not ids.first.is_a?(Array) # if single comp key passed, turn into an array of 1
- ids = [ids.to_composite_ids]
- end
-
- ids.map do |id_set|
- [primary_keys, id_set].transpose.map do |key, id|
- "#{table_name}.#{key.to_s}=#{sanitize(id)}"
- end.join(" AND ")
- end.join(") OR (")
- end
-
- # Returns true if the given +ids+ represents the primary keys of a record in the database, false otherwise.
- # Example:
- # Person.exists?(5,7)
- def exists?(ids)
- if ids.is_a?(Array) && ids.first.is_a?(String)
- count(:conditions => ids) > 0
- else
- obj = find(ids) rescue false
- !obj.nil? and obj.is_a?(self)
- end
- end
-
- # Deletes the record with the given +ids+ without instantiating an object first, e.g. delete(1,2)
- # If an array of ids is provided (e.g. delete([1,2], [3,4]), all of them
- # are deleted.
- def delete(*ids)
- unless ids.is_a?(Array); raise "*ids must be an Array"; end
- ids = [ids.to_composite_ids] if not ids.first.is_a?(Array)
- where_clause = ids.map do |id_set|
- [primary_keys, id_set].transpose.map do |key, id|
- "#{quoted_table_name}.#{connection.quote_column_name(key.to_s)}=#{sanitize(id)}"
- end.join(" AND ")
- end.join(") OR (")
- delete_all([ "(#{where_clause})" ])
- end
-
- # Destroys the record with the given +ids+ by instantiating the object and calling #destroy (all the callbacks are the triggered).
- # If an array of ids is provided, all of them are destroyed.
- def destroy(*ids)
- unless ids.is_a?(Array); raise "*ids must be an Array"; end
- if ids.first.is_a?(Array)
- ids = ids.map{|compids| compids.to_composite_ids}
- else
- ids = ids.to_composite_ids
- end
- ids.first.is_a?(CompositeIds) ? ids.each { |id_set| find(id_set).destroy } : find(ids).destroy
- end
-
- # Returns an array of column objects for the table associated with this class.
- # Each column that matches to one of the primary keys has its
- # primary attribute set to true
- def columns
- unless @columns
- @columns = connection.columns(table_name, "#{name} Columns")
- @columns.each {|column| column.primary = primary_keys.include?(column.name.to_sym)}
- end
- @columns
- end
-
- ## DEACTIVATED METHODS ##
- public
- # Lazy-set the sequence name to the connection's default. This method
- # is only ever called once since set_sequence_name overrides it.
- def sequence_name #:nodoc:
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
- end
-
- def reset_sequence_name #:nodoc:
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
- end
-
- def set_primary_key(value = nil, &block)
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
- end
-
- private
- def find_one(id, options)
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
- end
-
- def find_some(ids, options)
- raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
- end
-
- def find_from_ids(ids, options)
- ids = ids.first if ids.last == nil
- conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions]
- # if ids is just a flat list, then its size must = primary_key.length (one id per primary key, in order)
- # if ids is list of lists, then each inner list must follow rule above
- if ids.first.is_a? String
- # find '2,1' -> ids = ['2,1']
- # find '2,1;7,3' -> ids = ['2,1;7,3']
- ids = ids.first.split(ID_SET_SEP).map {|id_set| id_set.split(ID_SEP).to_composite_ids}
- # find '2,1;7,3' -> ids = [['2','1'],['7','3']], inner [] are CompositeIds
- end
- ids = [ids.to_composite_ids] if not ids.first.kind_of?(Array)
- ids.each do |id_set|
- unless id_set.is_a?(Array)
- raise "Ids must be in an Array, instead received: #{id_set.inspect}"
- end
- unless id_set.length == primary_keys.length
- raise "#{id_set.inspect}: Incorrect number of primary keys for #{class_name}: #{primary_keys.inspect}"
- end
- end
-
- # Let keys = [:a, :b]
- # If ids = [[10, 50], [11, 51]], then :conditions =>
- # "(#{quoted_table_name}.a, #{quoted_table_name}.b) IN ((10, 50), (11, 51))"
-
- conditions = ids.map do |id_set|
- [primary_keys, id_set].transpose.map do |key, id|
- col = columns_hash[key.to_s]
- val = quote_value(id, col)
- "#{quoted_table_name}.#{connection.quote_column_name(key.to_s)}=#{val}"
- end.join(" AND ")
- end.join(") OR (")
-
- options.update :conditions => "(#{conditions})"
-
- result = find_every(options)
-
- if result.size == ids.size
- ids.size == 1 ? result[0] : result
- else
- raise ::ActiveRecord::RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids.inspect})#{conditions}"
- end
- end
- end
- end
- end
-end
-
-
-module ActiveRecord
- ID_SEP = ','
- ID_SET_SEP = ';'
-
- class Base
- # Allows +attr_name+ to be the list of primary_keys, and returns the id
- # of the object
- # e.g. @object[@object.class.primary_key] => [1,1]
- def [](attr_name)
- if attr_name.is_a?(String) and attr_name != attr_name.split(ID_SEP).first
- attr_name = attr_name.split(ID_SEP)
- end
- attr_name.is_a?(Array) ?
- attr_name.map {|name| read_attribute(name)} :
- read_attribute(attr_name)
- end
-
- # Updates the attribute identified by attr_name with the specified +value+.
- # (Alias for the protected write_attribute method).
- def []=(attr_name, value)
- if attr_name.is_a?(String) and attr_name != attr_name.split(ID_SEP).first
- attr_name = attr_name.split(ID_SEP)
- end
-
- if attr_name.is_a? Array
- value = value.split(ID_SEP) if value.is_a? String
- unless value.length == attr_name.length
- raise "Number of attr_names and values do not match"
- end
- #breakpoint
- [attr_name, value].transpose.map {|name,val| write_attribute(name.to_s, val)}
- else
- write_attribute(attr_name, value)
- end
- end
- end
-end
+module CompositePrimaryKeys
+ module ActiveRecord #:nodoc:
+ class CompositeKeyError < StandardError #:nodoc:
+ end
+
+ module Base #:nodoc:
+
+ INVALID_FOR_COMPOSITE_KEYS = 'Not appropriate for composite primary keys'
+ NOT_IMPLEMENTED_YET = 'Not implemented for composite primary keys yet'
+
+ def self.append_features(base)
+ super
+ base.send(:include, InstanceMethods)
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+ def set_primary_keys(*keys)
+ keys = keys.first if keys.first.is_a?(Array)
+ keys = keys.map { |k| k.to_sym }
+ cattr_accessor :primary_keys
+ self.primary_keys = keys.to_composite_keys
+
+ class_eval <<-EOV
+ extend CompositeClassMethods
+ include CompositeInstanceMethods
+
+ include CompositePrimaryKeys::ActiveRecord::Associations
+ include CompositePrimaryKeys::ActiveRecord::AssociationPreload
+ include CompositePrimaryKeys::ActiveRecord::Calculations
+ include CompositePrimaryKeys::ActiveRecord::AttributeMethods
+ EOV
+ end
+
+ def composite?
+ false
+ end
+ end
+
+ module InstanceMethods
+ def composite?; self.class.composite?; end
+ end
+
+ module CompositeInstanceMethods
+
+ # A model instance's primary keys is always available as model.ids
+ # whether you name it the default 'id' or set it to something else.
+ def id
+ attr_names = self.class.primary_keys
+ CompositeIds.new(attr_names.map { |attr_name| read_attribute(attr_name) })
+ end
+ alias_method :ids, :id
+
+ def to_param
+ id.to_s
+ end
+
+ def id_before_type_cast #:nodoc:
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::NOT_IMPLEMENTED_YET
+ end
+
+ def quoted_id #:nodoc:
+ [self.class.primary_keys, ids].
+ transpose.
+ map {|attr_name,id| quote_value(id, column_for_attribute(attr_name))}.
+ to_composite_ids
+ end
+
+ # Sets the primary ID.
+ def id=(ids)
+ ids = ids.split(ID_SEP) if ids.is_a?(String)
+ ids.flatten!
+ unless ids.is_a?(Array) and ids.length == self.class.primary_keys.length
+ raise "#{self.class}.id= requires #{self.class.primary_keys.length} ids"
+ end
+ [primary_keys, ids].transpose.each {|key, an_id| write_attribute(key , an_id)}
+ id
+ end
+
+ # Returns a clone of the record that hasn't been assigned an id yet and
+ # is treated as a new record. Note that this is a "shallow" clone:
+ # it copies the object's attributes only, not its associations.
+ # The extent of a "deep" clone is application-specific and is therefore
+ # left to the application to implement according to its need.
+ def clone
+ attrs = self.attributes_before_type_cast
+ self.class.primary_keys.each {|key| attrs.delete(key.to_s)}
+ self.class.new do |record|
+ record.send :instance_variable_set, '@attributes', attrs
+ end
+ end
+
+
+ private
+ # The xx_without_callbacks methods are overwritten as that is the end of the alias chain
+
+ # Creates a new record with values matching those of the instance attributes.
+ def create_without_callbacks
+ unless self.id
+ raise CompositeKeyError, "Composite keys do not generated ids from sequences, you must provide id values"
+ end
+ attributes_minus_pks = attributes_with_quotes(false)
+ quoted_pk_columns = self.class.primary_key.map { |col| connection.quote_column_name(col) }
+ cols = quoted_column_names(attributes_minus_pks) << quoted_pk_columns
+ vals = attributes_minus_pks.values << quoted_id
+ connection.insert(
+ "INSERT INTO #{self.class.quoted_table_name} " +
+ "(#{cols.join(', ')}) " +
+ "VALUES (#{vals.join(', ')})",
+ "#{self.class.name} Create",
+ self.class.primary_key,
+ self.id
+ )
+ @new_record = false
+ return true
+ end
+
+ # Updates the associated record with values matching those of the instance attributes.
+ def update_without_callbacks
+ where_clause_terms = [self.class.primary_key, quoted_id].transpose.map do |pair|
+ "(#{connection.quote_column_name(pair[0])} = #{pair[1]})"
+ end
+ where_clause = where_clause_terms.join(" AND ")
+ connection.update(
+ "UPDATE #{self.class.quoted_table_name} " +
+ "SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false))} " +
+ "WHERE #{where_clause}",
+ "#{self.class.name} Update"
+ )
+ return true
+ end
+
+ # Deletes the record in the database and freezes this instance to reflect that no changes should
+ # be made (since they can't be persisted).
+ def destroy_without_callbacks
+ where_clause_terms = [self.class.primary_key, quoted_id].transpose.map do |pair|
+ "(#{connection.quote_column_name(pair[0])} = #{pair[1]})"
+ end
+ where_clause = where_clause_terms.join(" AND ")
+ unless new_record?
+ connection.delete(
+ "DELETE FROM #{self.class.quoted_table_name} " +
+ "WHERE #{where_clause}",
+ "#{self.class.name} Destroy"
+ )
+ end
+ freeze
+ end
+ end
+
+ module CompositeClassMethods
+ def primary_key; primary_keys; end
+ def primary_key=(keys); primary_keys = keys; end
+
+ def composite?
+ true
+ end
+
+ #ids_to_s([[1,2],[7,3]]) -> "(1,2),(7,3)"
+ #ids_to_s([[1,2],[7,3]], ',', ';') -> "1,2;7,3"
+ def ids_to_s(many_ids, id_sep = CompositePrimaryKeys::ID_SEP, list_sep = ',', left_bracket = '(', right_bracket = ')')
+ many_ids.map {|ids| "#{left_bracket}#{ids}#{right_bracket}"}.join(list_sep)
+ end
+
+ # Creates WHERE condition from list of composited ids
+ # User.update_all({:role => 'admin'}, :conditions => composite_where_clause([[1, 2], [2, 2]])) #=> UPDATE admins SET admin.role='admin' WHERE (admin.type=1 AND admin.type2=2) OR (admin.type=2 AND admin.type2=2)
+ # User.find(:all, :conditions => composite_where_clause([[1, 2], [2, 2]])) #=> SELECT * FROM admins WHERE (admin.type=1 AND admin.type2=2) OR (admin.type=2 AND admin.type2=2)
+ def composite_where_clause(ids)
+ if ids.is_a?(String)
+ ids = [[ids]]
+ elsif not ids.first.is_a?(Array) # if single comp key passed, turn into an array of 1
+ ids = [ids.to_composite_ids]
+ end
+
+ ids.map do |id_set|
+ [primary_keys, id_set].transpose.map do |key, id|
+ "#{table_name}.#{key.to_s}=#{sanitize(id)}"
+ end.join(" AND ")
+ end.join(") OR (")
+ end
+
+ # Returns true if the given +ids+ represents the primary keys of a record in the database, false otherwise.
+ # Example:
+ # Person.exists?(5,7)
+ def exists?(ids)
+ if ids.is_a?(Array) && ids.first.is_a?(String)
+ count(:conditions => ids) > 0
+ else
+ obj = find(ids) rescue false
+ !obj.nil? and obj.is_a?(self)
+ end
+ end
+
+ # Deletes the record with the given +ids+ without instantiating an object first, e.g. delete(1,2)
+ # If an array of ids is provided (e.g. delete([1,2], [3,4]), all of them
+ # are deleted.
+ def delete(*ids)
+ unless ids.is_a?(Array); raise "*ids must be an Array"; end
+ ids = [ids.to_composite_ids] if not ids.first.is_a?(Array)
+ where_clause = ids.map do |id_set|
+ [primary_keys, id_set].transpose.map do |key, id|
+ "#{quoted_table_name}.#{connection.quote_column_name(key.to_s)}=#{sanitize(id)}"
+ end.join(" AND ")
+ end.join(") OR (")
+ delete_all([ "(#{where_clause})" ])
+ end
+
+ # Destroys the record with the given +ids+ by instantiating the object and calling #destroy (all the callbacks are the triggered).
+ # If an array of ids is provided, all of them are destroyed.
+ def destroy(*ids)
+ unless ids.is_a?(Array); raise "*ids must be an Array"; end
+ if ids.first.is_a?(Array)
+ ids = ids.map{|compids| compids.to_composite_ids}
+ else
+ ids = ids.to_composite_ids
+ end
+ ids.first.is_a?(CompositeIds) ? ids.each { |id_set| find(id_set).destroy } : find(ids).destroy
+ end
+
+ # Returns an array of column objects for the table associated with this class.
+ # Each column that matches to one of the primary keys has its
+ # primary attribute set to true
+ def columns
+ unless @columns
+ @columns = connection.columns(table_name, "#{name} Columns")
+ @columns.each {|column| column.primary = primary_keys.include?(column.name.to_sym)}
+ end
+ @columns
+ end
+
+ ## DEACTIVATED METHODS ##
+ public
+ # Lazy-set the sequence name to the connection's default. This method
+ # is only ever called once since set_sequence_name overrides it.
+ def sequence_name #:nodoc:
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
+ end
+
+ def reset_sequence_name #:nodoc:
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
+ end
+
+ def set_primary_key(value = nil, &block)
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
+ end
+
+ private
+ def find_one(id, options)
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
+ end
+
+ def find_some(ids, options)
+ raise CompositeKeyError, CompositePrimaryKeys::ActiveRecord::Base::INVALID_FOR_COMPOSITE_KEYS
+ end
+
+ def find_from_ids(ids, options)
+ ids = ids.first if ids.last == nil
+ conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions]
+ # if ids is just a flat list, then its size must = primary_key.length (one id per primary key, in order)
+ # if ids is list of lists, then each inner list must follow rule above
+ if ids.first.is_a? String
+ # find '2,1' -> ids = ['2,1']
+ # find '2,1;7,3' -> ids = ['2,1;7,3']
+ ids = ids.first.split(ID_SET_SEP).map {|id_set| id_set.split(ID_SEP).to_composite_ids}
+ # find '2,1;7,3' -> ids = [['2','1'],['7','3']], inner [] are CompositeIds
+ end
+ ids = [ids.to_composite_ids] if not ids.first.kind_of?(Array)
+ ids.each do |id_set|
+ unless id_set.is_a?(Array)
+ raise "Ids must be in an Array, instead received: #{id_set.inspect}"
+ end
+ unless id_set.length == primary_keys.length
+ raise "#{id_set.inspect}: Incorrect number of primary keys for #{class_name}: #{primary_keys.inspect}"
+ end
+ end
+
+ # Let keys = [:a, :b]
+ # If ids = [[10, 50], [11, 51]], then :conditions =>
+ # "(#{quoted_table_name}.a, #{quoted_table_name}.b) IN ((10, 50), (11, 51))"
+
+ conditions = ids.map do |id_set|
+ [primary_keys, id_set].transpose.map do |key, id|
+ col = columns_hash[key.to_s]
+ val = quote_value(id, col)
+ "#{quoted_table_name}.#{connection.quote_column_name(key.to_s)}=#{val}"
+ end.join(" AND ")
+ end.join(") OR (")
+
+ options.update :conditions => "(#{conditions})"
+
+ result = find_every(options)
+
+ if result.size == ids.size
+ ids.size == 1 ? result[0] : result
+ else
+ raise ::ActiveRecord::RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids.inspect})#{conditions}"
+ end
+ end
+ end
+ end
+ end
+end
+
+
+module ActiveRecord
+ ID_SEP = ','
+ ID_SET_SEP = ';'
+
+ class Base
+ # Allows +attr_name+ to be the list of primary_keys, and returns the id
+ # of the object
+ # e.g. @object[@object.class.primary_key] => [1,1]
+ def [](attr_name)
+ if attr_name.is_a?(String) and attr_name != attr_name.split(ID_SEP).first
+ attr_name = attr_name.split(ID_SEP)
+ end
+ attr_name.is_a?(Array) ?
+ attr_name.map {|name| read_attribute(name)} :
+ read_attribute(attr_name)
+ end
+
+ # Updates the attribute identified by attr_name with the specified +value+.
+ # (Alias for the protected write_attribute method).
+ def []=(attr_name, value)
+ if attr_name.is_a?(String) and attr_name != attr_name.split(ID_SEP).first
+ attr_name = attr_name.split(ID_SEP)
+ end
+
+ if attr_name.is_a? Array
+ value = value.split(ID_SEP) if value.is_a? String
+ unless value.length == attr_name.length
+ raise "Number of attr_names and values do not match"
+ end
+ #breakpoint
+ [attr_name, value].transpose.map {|name,val| write_attribute(name.to_s, val)}
+ else
+ write_attribute(attr_name, value)
+ end
+ end
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/composite_arrays.rb b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/composite_arrays.rb
index 030c416f3..dab39142b 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/composite_arrays.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/composite_arrays.rb
@@ -1,30 +1,30 @@
-module CompositePrimaryKeys
- ID_SEP = ','
- ID_SET_SEP = ';'
-
- module ArrayExtension
- def to_composite_keys
- CompositeKeys.new(self)
- end
-
- def to_composite_ids
- CompositeIds.new(self)
- end
- end
-
- class CompositeArray < Array
- def to_s
- join(ID_SEP)
- end
- end
-
- class CompositeKeys < CompositeArray
-
- end
-
- class CompositeIds < CompositeArray
-
- end
-end
-
-Array.send(:include, CompositePrimaryKeys::ArrayExtension)
+module CompositePrimaryKeys
+ ID_SEP = ','
+ ID_SET_SEP = ';'
+
+ module ArrayExtension
+ def to_composite_keys
+ CompositeKeys.new(self)
+ end
+
+ def to_composite_ids
+ CompositeIds.new(self)
+ end
+ end
+
+ class CompositeArray < Array
+ def to_s
+ join(ID_SEP)
+ end
+ end
+
+ class CompositeKeys < CompositeArray
+
+ end
+
+ class CompositeIds < CompositeArray
+
+ end
+end
+
+Array.send(:include, CompositePrimaryKeys::ArrayExtension)
diff --git a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/reflection.rb b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/reflection.rb
index 309baf118..2d82d9c8a 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/reflection.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/reflection.rb
@@ -1,19 +1,19 @@
-module ActiveRecord
- module Reflection
- class AssociationReflection
- def primary_key_name
- return @primary_key_name if @primary_key_name
- case
- when macro == :belongs_to
- @primary_key_name = options[:foreign_key] || class_name.foreign_key
- when options[:as]
- @primary_key_name = options[:foreign_key] || "#{options[:as]}_id"
- else
- @primary_key_name = options[:foreign_key] || active_record.name.foreign_key
- end
- @primary_key_name = @primary_key_name.to_composite_keys.to_s if @primary_key_name.is_a? Array
- @primary_key_name
- end
- end
- end
+module ActiveRecord
+ module Reflection
+ class AssociationReflection
+ def primary_key_name
+ return @primary_key_name if @primary_key_name
+ case
+ when macro == :belongs_to
+ @primary_key_name = options[:foreign_key] || class_name.foreign_key
+ when options[:as]
+ @primary_key_name = options[:foreign_key] || "#{options[:as]}_id"
+ else
+ @primary_key_name = options[:foreign_key] || active_record.name.foreign_key
+ end
+ @primary_key_name = @primary_key_name.to_composite_keys.to_s if @primary_key_name.is_a? Array
+ @primary_key_name
+ end
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/version.rb b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/version.rb
index 0b83ba692..49a11be2a 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/version.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/lib/composite_primary_keys/version.rb
@@ -1,8 +1,8 @@
-module CompositePrimaryKeys
- module VERSION #:nodoc:
- MAJOR = 2
- MINOR = 2
- TINY = 2
- STRING = [MAJOR, MINOR, TINY].join('.')
- end
-end
+module CompositePrimaryKeys
+ module VERSION #:nodoc:
+ MAJOR = 2
+ MINOR = 2
+ TINY = 2
+ STRING = [MAJOR, MINOR, TINY].join('.')
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/article.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/article.rb
index 7233f8126..7fae392bd 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/article.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/article.rb
@@ -1,5 +1,5 @@
-class Article < ActiveRecord::Base
- has_many :readings
- has_many :users, :through => :readings
-end
-
+class Article < ActiveRecord::Base
+ has_many :readings
+ has_many :users, :through => :readings
+end
+
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/articles.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/articles.yml
index e51060463..f4cb4778a 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/articles.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/articles.yml
@@ -1,6 +1,6 @@
-first:
- id: 1
- name: Article One
-second:
- id: 2
+first:
+ id: 1
+ name: Article One
+second:
+ id: 2
name: Article Two
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product.rb
index 5466dcabe..e780fd2f4 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product.rb
@@ -1,7 +1,7 @@
-class Product < ActiveRecord::Base
- set_primary_keys :id # redundant
- has_many :product_tariffs, :foreign_key => :product_id
- has_one :product_tariff, :foreign_key => :product_id
-
- has_many :tariffs, :through => :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
-end
+class Product < ActiveRecord::Base
+ set_primary_keys :id # redundant
+ has_many :product_tariffs, :foreign_key => :product_id
+ has_one :product_tariff, :foreign_key => :product_id
+
+ has_many :tariffs, :through => :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariff.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariff.rb
index cbabee7c5..d5c9befbb 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariff.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariff.rb
@@ -1,5 +1,5 @@
-class ProductTariff < ActiveRecord::Base
- set_primary_keys :product_id, :tariff_id, :tariff_start_date
- belongs_to :product, :foreign_key => :product_id
- belongs_to :tariff, :foreign_key => [:tariff_id, :tariff_start_date]
-end
+class ProductTariff < ActiveRecord::Base
+ set_primary_keys :product_id, :tariff_id, :tariff_start_date
+ belongs_to :product, :foreign_key => :product_id
+ belongs_to :tariff, :foreign_key => [:tariff_id, :tariff_start_date]
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariffs.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariffs.yml
index 27a464fb3..72be1e7ad 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariffs.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/product_tariffs.yml
@@ -1,12 +1,12 @@
-first_flat:
- product_id: 1
- tariff_id: 1
- tariff_start_date: <%= Date.today.to_s(:db) %>
-first_free:
- product_id: 1
- tariff_id: 2
- tariff_start_date: <%= Date.today.to_s(:db) %>
-second_free:
- product_id: 2
- tariff_id: 2
- tariff_start_date: <%= Date.today.to_s(:db) %>
+first_flat:
+ product_id: 1
+ tariff_id: 1
+ tariff_start_date: <%= Date.today.to_s(:db) %>
+first_free:
+ product_id: 1
+ tariff_id: 2
+ tariff_start_date: <%= Date.today.to_s(:db) %>
+second_free:
+ product_id: 2
+ tariff_id: 2
+ tariff_start_date: <%= Date.today.to_s(:db) %>
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/products.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/products.yml
index 3c38a5ba0..c436c296b 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/products.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/products.yml
@@ -1,6 +1,6 @@
-first_product:
- id: 1
- name: Product One
-second_product:
- id: 2
+first_product:
+ id: 1
+ name: Product One
+second_product:
+ id: 2
name: Product Two
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reading.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reading.rb
index 2e8197062..014d8b810 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reading.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reading.rb
@@ -1,4 +1,4 @@
-class Reading < ActiveRecord::Base
- belongs_to :article
- belongs_to :user
-end
+class Reading < ActiveRecord::Base
+ belongs_to :article
+ belongs_to :user
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/readings.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/readings.yml
index e3afaa9cd..36e9ac300 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/readings.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/readings.yml
@@ -1,10 +1,10 @@
-santiago_first:
- id: 1
- user_id: 1
- article_id: 1
- rating: 4
-santiago_second:
- id: 2
- user_id: 1
- article_id: 2
+santiago_first:
+ id: 1
+ user_id: 1
+ article_id: 1
+ rating: 4
+santiago_second:
+ id: 2
+ user_id: 1
+ article_id: 2
rating: 5
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_code.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_code.rb
index 594d8d8be..e20fb0644 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_code.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_code.rb
@@ -1,7 +1,7 @@
-class ReferenceCode < ActiveRecord::Base
- set_primary_keys :reference_type_id, :reference_code
-
- belongs_to :reference_type, :foreign_key => "reference_type_id"
-
- validates_presence_of :reference_code, :code_label, :abbreviation
-end
+class ReferenceCode < ActiveRecord::Base
+ set_primary_keys :reference_type_id, :reference_code
+
+ belongs_to :reference_type, :foreign_key => "reference_type_id"
+
+ validates_presence_of :reference_code, :code_label, :abbreviation
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_codes.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_codes.yml
index 397938199..f4d88bc86 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_codes.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_codes.yml
@@ -1,28 +1,28 @@
-name_prefix_mr:
- reference_type_id: 1
- reference_code: 1
- code_label: MR
- abbreviation: Mr
-name_prefix_mrs:
- reference_type_id: 1
- reference_code: 2
- code_label: MRS
- abbreviation: Mrs
-name_prefix_ms:
- reference_type_id: 1
- reference_code: 3
- code_label: MS
- abbreviation: Ms
-
-gender_male:
- reference_type_id: 2
- reference_code: 1
- code_label: MALE
- abbreviation: Male
-gender_female:
- reference_type_id: 2
- reference_code: 2
- code_label: FEMALE
- abbreviation: Female
-
+name_prefix_mr:
+ reference_type_id: 1
+ reference_code: 1
+ code_label: MR
+ abbreviation: Mr
+name_prefix_mrs:
+ reference_type_id: 1
+ reference_code: 2
+ code_label: MRS
+ abbreviation: Mrs
+name_prefix_ms:
+ reference_type_id: 1
+ reference_code: 3
+ code_label: MS
+ abbreviation: Ms
+
+gender_male:
+ reference_type_id: 2
+ reference_code: 1
+ code_label: MALE
+ abbreviation: Male
+gender_female:
+ reference_type_id: 2
+ reference_code: 2
+ code_label: FEMALE
+ abbreviation: Female
+
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_type.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_type.rb
index 5b2b12b4e..c09bd2f20 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_type.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_type.rb
@@ -1,7 +1,7 @@
-class ReferenceType < ActiveRecord::Base
- set_primary_key :reference_type_id
- has_many :reference_codes, :foreign_key => "reference_type_id"
-
- validates_presence_of :type_label, :abbreviation
- validates_uniqueness_of :type_label
-end
+class ReferenceType < ActiveRecord::Base
+ set_primary_key :reference_type_id
+ has_many :reference_codes, :foreign_key => "reference_type_id"
+
+ validates_presence_of :type_label, :abbreviation
+ validates_uniqueness_of :type_label
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_types.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_types.yml
index 0520ba9f9..9c5e3d347 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_types.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/reference_types.yml
@@ -1,9 +1,9 @@
-name_prefix:
- reference_type_id: 1
- type_label: NAME_PREFIX
- abbreviation: Name Prefix
-
-gender:
- reference_type_id: 2
- type_label: GENDER
- abbreviation: Gender
+name_prefix:
+ reference_type_id: 1
+ type_label: NAME_PREFIX
+ abbreviation: Name Prefix
+
+gender:
+ reference_type_id: 2
+ type_label: GENDER
+ abbreviation: Gender
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburb.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburb.rb
index 93045350e..f2eb181c3 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburb.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburb.rb
@@ -1,6 +1,6 @@
-class Suburb < ActiveRecord::Base
- set_primary_keys :city_id, :suburb_id
- has_many :streets, :foreign_key => [:city_id, :suburb_id]
- has_many :first_streets, :foreign_key => [:city_id, :suburb_id],
- :class_name => 'Street', :conditions => "streets.name = 'First Street'"
+class Suburb < ActiveRecord::Base
+ set_primary_keys :city_id, :suburb_id
+ has_many :streets, :foreign_key => [:city_id, :suburb_id]
+ has_many :first_streets, :foreign_key => [:city_id, :suburb_id],
+ :class_name => 'Street', :conditions => "streets.name = 'First Street'"
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburbs.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburbs.yml
index efae0c0a2..d230fbae4 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburbs.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/suburbs.yml
@@ -1,9 +1,9 @@
-first:
- city_id: 1
- suburb_id: 1
- name: First Suburb
-second:
- city_id: 2
- suburb_id: 1
- name: Second Suburb
+first:
+ city_id: 1
+ suburb_id: 1
+ name: First Suburb
+second:
+ city_id: 2
+ suburb_id: 1
+ name: Second Suburb
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariff.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariff.rb
index d5cb07da1..3feba4434 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariff.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariff.rb
@@ -1,6 +1,6 @@
-class Tariff < ActiveRecord::Base
- set_primary_keys [:tariff_id, :start_date]
- has_many :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
- has_one :product_tariff, :foreign_key => [:tariff_id, :tariff_start_date]
- has_many :products, :through => :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
-end
+class Tariff < ActiveRecord::Base
+ set_primary_keys [:tariff_id, :start_date]
+ has_many :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
+ has_one :product_tariff, :foreign_key => [:tariff_id, :tariff_start_date]
+ has_many :products, :through => :product_tariffs, :foreign_key => [:tariff_id, :tariff_start_date]
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariffs.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariffs.yml
index 7346fc510..997ebb8f1 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariffs.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/tariffs.yml
@@ -1,13 +1,13 @@
-flat:
- tariff_id: 1
- start_date: <%= Date.today.to_s(:db) %>
- amount: 50
-free:
- tariff_id: 2
- start_date: <%= Date.today.to_s(:db) %>
- amount: 0
-flat_future:
- tariff_id: 1
- start_date: <%= Date.today.next.to_s(:db) %>
- amount: 100
+flat:
+ tariff_id: 1
+ start_date: <%= Date.today.to_s(:db) %>
+ amount: 50
+free:
+ tariff_id: 2
+ start_date: <%= Date.today.to_s(:db) %>
+ amount: 0
+flat_future:
+ tariff_id: 1
+ start_date: <%= Date.today.next.to_s(:db) %>
+ amount: 100
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/user.rb b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/user.rb
index a8487c49f..674481835 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/user.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/user.rb
@@ -1,10 +1,10 @@
-class User < ActiveRecord::Base
- has_many :readings
- has_many :articles, :through => :readings
- has_many :comments, :as => :person
- has_many :hacks, :through => :comments, :source => :hack
-
- def find_custom_articles
- articles.find(:all, :conditions => ["name = ?", "Article One"])
- end
-end
+class User < ActiveRecord::Base
+ has_many :readings
+ has_many :articles, :through => :readings
+ has_many :comments, :as => :person
+ has_many :hacks, :through => :comments, :source => :hack
+
+ def find_custom_articles
+ articles.find(:all, :conditions => ["name = ?", "Article One"])
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/users.yml b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/users.yml
index d33a38a4a..858c47cab 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/users.yml
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/fixtures/users.yml
@@ -1,6 +1,6 @@
-santiago:
- id: 1
- name: Santiago
-drnic:
- id: 2
+santiago:
+ id: 1
+ name: Santiago
+drnic:
+ id: 2
name: Dr Nic
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb b/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb
index b37bbbbf1..856fc5fea 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/hash_tricks.rb
@@ -1,34 +1,34 @@
-# From:
-# http://www.bigbold.com/snippets/posts/show/2178
-# http://blog.caboo.se/articles/2006/06/11/stupid-hash-tricks
-#
-# An example utilisation of these methods in a controller is:
-# def some_action
-# # some script kiddie also passed in :bee, which we don't want tampered with _here_.
-# @model = Model.create(params.pass(:foo, :bar))
-# end
-class Hash
-
- # lets through the keys in the argument
- # >> {:one => 1, :two => 2, :three => 3}.pass(:one)
- # => {:one=>1}
- def pass(*keys)
- keys = keys.first if keys.first.is_a?(Array)
- tmp = self.clone
- tmp.delete_if {|k,v| ! keys.include?(k.to_sym) }
- tmp.delete_if {|k,v| ! keys.include?(k.to_s) }
- tmp
- end
-
- # blocks the keys in the arguments
- # >> {:one => 1, :two => 2, :three => 3}.block(:one)
- # => {:two=>2, :three=>3}
- def block(*keys)
- keys = keys.first if keys.first.is_a?(Array)
- tmp = self.clone
- tmp.delete_if {|k,v| keys.include?(k.to_sym) }
- tmp.delete_if {|k,v| keys.include?(k.to_s) }
- tmp
- end
-
-end
+# From:
+# http://www.bigbold.com/snippets/posts/show/2178
+# http://blog.caboo.se/articles/2006/06/11/stupid-hash-tricks
+#
+# An example utilisation of these methods in a controller is:
+# def some_action
+# # some script kiddie also passed in :bee, which we don't want tampered with _here_.
+# @model = Model.create(params.pass(:foo, :bar))
+# end
+class Hash
+
+ # lets through the keys in the argument
+ # >> {:one => 1, :two => 2, :three => 3}.pass(:one)
+ # => {:one=>1}
+ def pass(*keys)
+ keys = keys.first if keys.first.is_a?(Array)
+ tmp = self.clone
+ tmp.delete_if {|k,v| ! keys.include?(k.to_sym) }
+ tmp.delete_if {|k,v| ! keys.include?(k.to_s) }
+ tmp
+ end
+
+ # blocks the keys in the arguments
+ # >> {:one => 1, :two => 2, :three => 3}.block(:one)
+ # => {:two=>2, :three=>3}
+ def block(*keys)
+ keys = keys.first if keys.first.is_a?(Array)
+ tmp = self.clone
+ tmp.delete_if {|k,v| keys.include?(k.to_sym) }
+ tmp.delete_if {|k,v| keys.include?(k.to_s) }
+ tmp
+ end
+
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_associations.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_associations.rb
index 78302f86c..4c69ce57b 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_associations.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_associations.rb
@@ -1,160 +1,160 @@
-require 'abstract_unit'
-require 'fixtures/article'
-require 'fixtures/product'
-require 'fixtures/tariff'
-require 'fixtures/product_tariff'
-require 'fixtures/suburb'
-require 'fixtures/street'
-require 'fixtures/restaurant'
-require 'fixtures/dorm'
-require 'fixtures/room'
-require 'fixtures/room_attribute'
-require 'fixtures/room_attribute_assignment'
-require 'fixtures/student'
-require 'fixtures/room_assignment'
-require 'fixtures/user'
-require 'fixtures/reading'
-
-class TestAssociations < Test::Unit::TestCase
- fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
- :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings
-
- def test_has_many_through_with_conditions_when_through_association_is_not_composite
- user = User.find(:first)
- assert_equal 1, user.articles.find(:all, :conditions => ["articles.name = ?", "Article One"]).size
- end
-
- def test_has_many_through_with_conditions_when_through_association_is_composite
- room = Room.find(:first)
- assert_equal 0, room.room_attributes.find(:all, :conditions => ["room_attributes.name != ?", "keg"]).size
- end
-
- def test_has_many_through_on_custom_finder_when_through_association_is_composite_finder_when_through_association_is_not_composite
- user = User.find(:first)
- assert_equal 1, user.find_custom_articles.size
- end
-
- def test_has_many_through_on_custom_finder_when_through_association_is_composite
- room = Room.find(:first)
- assert_equal 0, room.find_custom_room_attributes.size
- end
-
- def test_count
- assert_equal 2, Product.count(:include => :product_tariffs)
- assert_equal 3, Tariff.count(:include => :product_tariffs)
- assert_equal 2, Tariff.count(:group => :start_date).size
- end
-
- def test_products
- assert_not_nil products(:first_product).product_tariffs
- assert_equal 2, products(:first_product).product_tariffs.length
- assert_not_nil products(:first_product).tariffs
- assert_equal 2, products(:first_product).tariffs.length
- assert_not_nil products(:first_product).product_tariff
- end
-
- def test_product_tariffs
- assert_not_nil product_tariffs(:first_flat).product
- assert_not_nil product_tariffs(:first_flat).tariff
- assert_equal Product, product_tariffs(:first_flat).product.class
- assert_equal Tariff, product_tariffs(:first_flat).tariff.class
- end
-
- def test_tariffs
- assert_not_nil tariffs(:flat).product_tariffs
- assert_equal 1, tariffs(:flat).product_tariffs.length
- assert_not_nil tariffs(:flat).products
- assert_equal 1, tariffs(:flat).products.length
- assert_not_nil tariffs(:flat).product_tariff
- end
-
- # Its not generating the instances of associated classes from the rows
- def test_find_includes_products
- assert @products = Product.find(:all, :include => :product_tariffs)
- assert_equal 2, @products.length
- assert_not_nil @products.first.instance_variable_get('@product_tariffs'), '@product_tariffs not set; should be array'
- assert_equal 3, @products.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
- "Incorrect number of product_tariffs returned"
- end
-
- def test_find_includes_tariffs
- assert @tariffs = Tariff.find(:all, :include => :product_tariffs)
- assert_equal 3, @tariffs.length
- assert_not_nil @tariffs.first.instance_variable_get('@product_tariffs'), '@product_tariffs not set; should be array'
- assert_equal 3, @tariffs.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
- "Incorrect number of product_tariffs returnedturned"
- end
-
- def test_find_includes_product
- assert @product_tariffs = ProductTariff.find(:all, :include => :product)
- assert_equal 3, @product_tariffs.length
- assert_not_nil @product_tariffs.first.instance_variable_get('@product'), '@product not set'
- end
-
- def test_find_includes_comp_belongs_to_tariff
- assert @product_tariffs = ProductTariff.find(:all, :include => :tariff)
- assert_equal 3, @product_tariffs.length
- assert_not_nil @product_tariffs.first.instance_variable_get('@tariff'), '@tariff not set'
- end
-
- def test_find_includes_extended
- assert @products = Product.find(:all, :include => {:product_tariffs => :tariff})
- assert_equal 3, @products.inject(0) {|sum, product| sum + product.instance_variable_get('@product_tariffs').length},
- "Incorrect number of product_tariffs returned"
-
- assert @tariffs = Tariff.find(:all, :include => {:product_tariffs => :product})
- assert_equal 3, @tariffs.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
- "Incorrect number of product_tariffs returned"
- end
-
- def test_join_where_clause
- @product = Product.find(:first, :include => :product_tariffs)
- where_clause = @product.product_tariffs.composite_where_clause(
- ['foo','bar'], [1,2]
- )
- assert_equal('(foo=1 AND bar=2)', where_clause)
- end
-
- def test_has_many_through
- @products = Product.find(:all, :include => :tariffs)
- assert_equal 3, @products.inject(0) {|sum, product| sum + product.instance_variable_get('@tariffs').length},
- "Incorrect number of tariffs returned"
- end
-
- def test_has_many_through_when_not_pre_loaded
- student = Student.find(:first)
- rooms = student.rooms
- assert_equal 1, rooms.size
- assert_equal 1, rooms.first.dorm_id
- assert_equal 1, rooms.first.room_id
- end
-
- def test_has_many_through_when_through_association_is_composite
- dorm = Dorm.find(:first)
- assert_equal 1, dorm.rooms.length
- assert_equal 1, dorm.rooms.first.room_attributes.length
- assert_equal 'keg', dorm.rooms.first.room_attributes.first.name
- end
-
- def test_associations_with_conditions
- @suburb = Suburb.find([2, 1])
- assert_equal 2, @suburb.streets.size
-
- @suburb = Suburb.find([2, 1])
- assert_equal 1, @suburb.first_streets.size
-
- @suburb = Suburb.find([2, 1], :include => :streets)
- assert_equal 2, @suburb.streets.size
-
- @suburb = Suburb.find([2, 1], :include => :first_streets)
- assert_equal 1, @suburb.first_streets.size
- end
-
- def test_has_and_belongs_to_many
- @restaurant = Restaurant.find([1,1])
- assert_equal 2, @restaurant.suburbs.size
-
- @restaurant = Restaurant.find([1,1], :include => :suburbs)
- assert_equal 2, @restaurant.suburbs.size
- end
-end
+require 'abstract_unit'
+require 'fixtures/article'
+require 'fixtures/product'
+require 'fixtures/tariff'
+require 'fixtures/product_tariff'
+require 'fixtures/suburb'
+require 'fixtures/street'
+require 'fixtures/restaurant'
+require 'fixtures/dorm'
+require 'fixtures/room'
+require 'fixtures/room_attribute'
+require 'fixtures/room_attribute_assignment'
+require 'fixtures/student'
+require 'fixtures/room_assignment'
+require 'fixtures/user'
+require 'fixtures/reading'
+
+class TestAssociations < Test::Unit::TestCase
+ fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
+ :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings
+
+ def test_has_many_through_with_conditions_when_through_association_is_not_composite
+ user = User.find(:first)
+ assert_equal 1, user.articles.find(:all, :conditions => ["articles.name = ?", "Article One"]).size
+ end
+
+ def test_has_many_through_with_conditions_when_through_association_is_composite
+ room = Room.find(:first)
+ assert_equal 0, room.room_attributes.find(:all, :conditions => ["room_attributes.name != ?", "keg"]).size
+ end
+
+ def test_has_many_through_on_custom_finder_when_through_association_is_composite_finder_when_through_association_is_not_composite
+ user = User.find(:first)
+ assert_equal 1, user.find_custom_articles.size
+ end
+
+ def test_has_many_through_on_custom_finder_when_through_association_is_composite
+ room = Room.find(:first)
+ assert_equal 0, room.find_custom_room_attributes.size
+ end
+
+ def test_count
+ assert_equal 2, Product.count(:include => :product_tariffs)
+ assert_equal 3, Tariff.count(:include => :product_tariffs)
+ assert_equal 2, Tariff.count(:group => :start_date).size
+ end
+
+ def test_products
+ assert_not_nil products(:first_product).product_tariffs
+ assert_equal 2, products(:first_product).product_tariffs.length
+ assert_not_nil products(:first_product).tariffs
+ assert_equal 2, products(:first_product).tariffs.length
+ assert_not_nil products(:first_product).product_tariff
+ end
+
+ def test_product_tariffs
+ assert_not_nil product_tariffs(:first_flat).product
+ assert_not_nil product_tariffs(:first_flat).tariff
+ assert_equal Product, product_tariffs(:first_flat).product.class
+ assert_equal Tariff, product_tariffs(:first_flat).tariff.class
+ end
+
+ def test_tariffs
+ assert_not_nil tariffs(:flat).product_tariffs
+ assert_equal 1, tariffs(:flat).product_tariffs.length
+ assert_not_nil tariffs(:flat).products
+ assert_equal 1, tariffs(:flat).products.length
+ assert_not_nil tariffs(:flat).product_tariff
+ end
+
+ # Its not generating the instances of associated classes from the rows
+ def test_find_includes_products
+ assert @products = Product.find(:all, :include => :product_tariffs)
+ assert_equal 2, @products.length
+ assert_not_nil @products.first.instance_variable_get('@product_tariffs'), '@product_tariffs not set; should be array'
+ assert_equal 3, @products.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
+ "Incorrect number of product_tariffs returned"
+ end
+
+ def test_find_includes_tariffs
+ assert @tariffs = Tariff.find(:all, :include => :product_tariffs)
+ assert_equal 3, @tariffs.length
+ assert_not_nil @tariffs.first.instance_variable_get('@product_tariffs'), '@product_tariffs not set; should be array'
+ assert_equal 3, @tariffs.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
+ "Incorrect number of product_tariffs returnedturned"
+ end
+
+ def test_find_includes_product
+ assert @product_tariffs = ProductTariff.find(:all, :include => :product)
+ assert_equal 3, @product_tariffs.length
+ assert_not_nil @product_tariffs.first.instance_variable_get('@product'), '@product not set'
+ end
+
+ def test_find_includes_comp_belongs_to_tariff
+ assert @product_tariffs = ProductTariff.find(:all, :include => :tariff)
+ assert_equal 3, @product_tariffs.length
+ assert_not_nil @product_tariffs.first.instance_variable_get('@tariff'), '@tariff not set'
+ end
+
+ def test_find_includes_extended
+ assert @products = Product.find(:all, :include => {:product_tariffs => :tariff})
+ assert_equal 3, @products.inject(0) {|sum, product| sum + product.instance_variable_get('@product_tariffs').length},
+ "Incorrect number of product_tariffs returned"
+
+ assert @tariffs = Tariff.find(:all, :include => {:product_tariffs => :product})
+ assert_equal 3, @tariffs.inject(0) {|sum, tariff| sum + tariff.instance_variable_get('@product_tariffs').length},
+ "Incorrect number of product_tariffs returned"
+ end
+
+ def test_join_where_clause
+ @product = Product.find(:first, :include => :product_tariffs)
+ where_clause = @product.product_tariffs.composite_where_clause(
+ ['foo','bar'], [1,2]
+ )
+ assert_equal('(foo=1 AND bar=2)', where_clause)
+ end
+
+ def test_has_many_through
+ @products = Product.find(:all, :include => :tariffs)
+ assert_equal 3, @products.inject(0) {|sum, product| sum + product.instance_variable_get('@tariffs').length},
+ "Incorrect number of tariffs returned"
+ end
+
+ def test_has_many_through_when_not_pre_loaded
+ student = Student.find(:first)
+ rooms = student.rooms
+ assert_equal 1, rooms.size
+ assert_equal 1, rooms.first.dorm_id
+ assert_equal 1, rooms.first.room_id
+ end
+
+ def test_has_many_through_when_through_association_is_composite
+ dorm = Dorm.find(:first)
+ assert_equal 1, dorm.rooms.length
+ assert_equal 1, dorm.rooms.first.room_attributes.length
+ assert_equal 'keg', dorm.rooms.first.room_attributes.first.name
+ end
+
+ def test_associations_with_conditions
+ @suburb = Suburb.find([2, 1])
+ assert_equal 2, @suburb.streets.size
+
+ @suburb = Suburb.find([2, 1])
+ assert_equal 1, @suburb.first_streets.size
+
+ @suburb = Suburb.find([2, 1], :include => :streets)
+ assert_equal 2, @suburb.streets.size
+
+ @suburb = Suburb.find([2, 1], :include => :first_streets)
+ assert_equal 1, @suburb.first_streets.size
+ end
+
+ def test_has_and_belongs_to_many
+ @restaurant = Restaurant.find([1,1])
+ assert_equal 2, @restaurant.suburbs.size
+
+ @restaurant = Restaurant.find([1,1], :include => :suburbs)
+ assert_equal 2, @restaurant.suburbs.size
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_clone.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_clone.rb
index 822974430..26e7970d5 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_clone.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_clone.rb
@@ -1,34 +1,34 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-class TestClone < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_truth
- testing_with do
- clone = @first.clone
- assert_equal @first.attributes.block(@klass.primary_key), clone.attributes
- if composite?
- @klass.primary_key.each {|key| assert_nil clone[key], "Primary key '#{key}' should be nil"}
- else
- assert_nil clone[@klass.primary_key], "Sole primary key should be nil"
- end
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+class TestClone < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_truth
+ testing_with do
+ clone = @first.clone
+ assert_equal @first.attributes.block(@klass.primary_key), clone.attributes
+ if composite?
+ @klass.primary_key.each {|key| assert_nil clone[key], "Primary key '#{key}' should be nil"}
+ else
+ assert_nil clone[@klass.primary_key], "Sole primary key should be nil"
+ end
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_delete.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_delete.rb
index cd79bbd72..2bd0d2abe 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_delete.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_delete.rb
@@ -1,96 +1,96 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-require 'fixtures/department'
-require 'fixtures/employee'
-
-class TestDelete < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes, :departments, :employees
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_destroy_one
- testing_with do
- #assert @first.destroy
- assert true
- end
- end
-
- def test_destroy_one_via_class
- testing_with do
- assert @klass.destroy(*@first.id)
- end
- end
-
- def test_destroy_one_alone_via_class
- testing_with do
- assert @klass.destroy(@first.id)
- end
- end
-
- def test_delete_one
- testing_with do
- assert @klass.delete(*@first.id) if composite?
- end
- end
-
- def test_delete_one_alone
- testing_with do
- assert @klass.delete(@first.id)
- end
- end
-
- def test_delete_many
- testing_with do
- to_delete = @klass.find(:all)[0..1]
- assert_equal 2, to_delete.length
- end
- end
-
- def test_delete_all
- testing_with do
- @klass.delete_all
- end
- end
-
- def test_clear_association
- department = Department.find(1,1)
- assert_equal 2, department.employees.size, "Before clear employee count should be 2."
- department.employees.clear
- assert_equal 0, department.employees.size, "After clear employee count should be 0."
- department.reload
- assert_equal 0, department.employees.size, "After clear and a reload from DB employee count should be 0."
- end
-
- def test_delete_association
- department = Department.find(1,1)
- assert_equal 2, department.employees.size , "Before delete employee count should be 2."
- first_employee = department.employees[0]
- department.employees.delete(first_employee)
- assert_equal 1, department.employees.size, "After delete employee count should be 1."
- department.reload
- assert_equal 1, department.employees.size, "After delete and a reload from DB employee count should be 1."
- end
-
- def test_delete_records_for_has_many_association_with_composite_primary_key
- reference_type = ReferenceType.find(1)
- codes_to_delete = reference_type.reference_codes[0..1]
- assert_equal 3, reference_type.reference_codes.size, "Before deleting records reference_code count should be 3."
- reference_type.reference_codes.delete_records(codes_to_delete)
- reference_type.reload
- assert_equal 1, reference_type.reference_codes.size, "After deleting 2 records and a reload from DB reference_code count should be 1."
- end
-end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+require 'fixtures/department'
+require 'fixtures/employee'
+
+class TestDelete < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes, :departments, :employees
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_destroy_one
+ testing_with do
+ #assert @first.destroy
+ assert true
+ end
+ end
+
+ def test_destroy_one_via_class
+ testing_with do
+ assert @klass.destroy(*@first.id)
+ end
+ end
+
+ def test_destroy_one_alone_via_class
+ testing_with do
+ assert @klass.destroy(@first.id)
+ end
+ end
+
+ def test_delete_one
+ testing_with do
+ assert @klass.delete(*@first.id) if composite?
+ end
+ end
+
+ def test_delete_one_alone
+ testing_with do
+ assert @klass.delete(@first.id)
+ end
+ end
+
+ def test_delete_many
+ testing_with do
+ to_delete = @klass.find(:all)[0..1]
+ assert_equal 2, to_delete.length
+ end
+ end
+
+ def test_delete_all
+ testing_with do
+ @klass.delete_all
+ end
+ end
+
+ def test_clear_association
+ department = Department.find(1,1)
+ assert_equal 2, department.employees.size, "Before clear employee count should be 2."
+ department.employees.clear
+ assert_equal 0, department.employees.size, "After clear employee count should be 0."
+ department.reload
+ assert_equal 0, department.employees.size, "After clear and a reload from DB employee count should be 0."
+ end
+
+ def test_delete_association
+ department = Department.find(1,1)
+ assert_equal 2, department.employees.size , "Before delete employee count should be 2."
+ first_employee = department.employees[0]
+ department.employees.delete(first_employee)
+ assert_equal 1, department.employees.size, "After delete employee count should be 1."
+ department.reload
+ assert_equal 1, department.employees.size, "After delete and a reload from DB employee count should be 1."
+ end
+
+ def test_delete_records_for_has_many_association_with_composite_primary_key
+ reference_type = ReferenceType.find(1)
+ codes_to_delete = reference_type.reference_codes[0..1]
+ assert_equal 3, reference_type.reference_codes.size, "Before deleting records reference_code count should be 3."
+ reference_type.reference_codes.delete_records(codes_to_delete)
+ reference_type.reload
+ assert_equal 1, reference_type.reference_codes.size, "After deleting 2 records and a reload from DB reference_code count should be 1."
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_dummy.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_dummy.rb
index 44386685b..da21c4716 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_dummy.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_dummy.rb
@@ -1,28 +1,28 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-class TestDummy < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- classes = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- }
-
- def setup
- self.class.classes = classes
- end
-
- def test_truth
- testing_with do
- assert true
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+class TestDummy < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ classes = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ }
+
+ def setup
+ self.class.classes = classes
+ end
+
+ def test_truth
+ testing_with do
+ assert true
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_find.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_find.rb
index a07d30a64..c8c1af7dc 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_find.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_find.rb
@@ -1,73 +1,73 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-# Testing the find action on composite ActiveRecords with two primary keys
-class TestFind < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => [:reference_type_id],
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- :dual_strs => {
- :class => ReferenceCode,
- :primary_keys => ['reference_type_id', 'reference_code'],
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_find_first
- testing_with do
- obj = @klass.find(:first)
- assert obj
- assert_equal @klass, obj.class
- end
- end
-
- def test_find
- testing_with do
- found = @klass.find(*first_id) # e.g. find(1,1) or find 1,1
- assert found
- assert_equal @klass, found.class
- assert_equal found, @klass.find(found.id)
- assert_equal found, @klass.find(found.to_param)
- end
- end
-
- def test_find_composite_ids
- testing_with do
- found = @klass.find(first_id) # e.g. find([1,1].to_composite_ids)
- assert found
- assert_equal @klass, found.class
- assert_equal found, @klass.find(found.id)
- assert_equal found, @klass.find(found.to_param)
- end
- end
-
- def test_to_param
- testing_with do
- assert_equal first_id_str, @first.to_param.to_s
- end
- end
-
- def things_to_look_at
- testing_with do
- assert_equal found, @klass.find(found.id.to_s) # fails for 2+ keys
- end
- end
-
- def test_not_found
- assert_raise(::ActiveRecord::RecordNotFound) do
- ReferenceCode.send :find, '999,999'
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+# Testing the find action on composite ActiveRecords with two primary keys
+class TestFind < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => [:reference_type_id],
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ :dual_strs => {
+ :class => ReferenceCode,
+ :primary_keys => ['reference_type_id', 'reference_code'],
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_find_first
+ testing_with do
+ obj = @klass.find(:first)
+ assert obj
+ assert_equal @klass, obj.class
+ end
+ end
+
+ def test_find
+ testing_with do
+ found = @klass.find(*first_id) # e.g. find(1,1) or find 1,1
+ assert found
+ assert_equal @klass, found.class
+ assert_equal found, @klass.find(found.id)
+ assert_equal found, @klass.find(found.to_param)
+ end
+ end
+
+ def test_find_composite_ids
+ testing_with do
+ found = @klass.find(first_id) # e.g. find([1,1].to_composite_ids)
+ assert found
+ assert_equal @klass, found.class
+ assert_equal found, @klass.find(found.id)
+ assert_equal found, @klass.find(found.to_param)
+ end
+ end
+
+ def test_to_param
+ testing_with do
+ assert_equal first_id_str, @first.to_param.to_s
+ end
+ end
+
+ def things_to_look_at
+ testing_with do
+ assert_equal found, @klass.find(found.id.to_s) # fails for 2+ keys
+ end
+ end
+
+ def test_not_found
+ assert_raise(::ActiveRecord::RecordNotFound) do
+ ReferenceCode.send :find, '999,999'
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_ids.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_ids.rb
index 9ba2d92a7..3cd4f3c9e 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_ids.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_ids.rb
@@ -1,97 +1,97 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-class TestIds < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => [:reference_type_id],
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- :dual_strs => {
- :class => ReferenceCode,
- :primary_keys => ['reference_type_id', 'reference_code'],
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_id
- testing_with do
- assert_equal @first.id, @first.ids if composite?
- end
- end
-
- def test_id_to_s
- testing_with do
- assert_equal first_id_str, @first.id.to_s
- assert_equal first_id_str, "#{@first.id}"
- end
- end
-
- def test_ids_to_s
- testing_with do
- order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
- to_test = @klass.find(:all, :order => order)[0..1].map(&:id)
- assert_equal '(1,1),(1,2)', @klass.ids_to_s(to_test) if @key_test == :dual
- assert_equal '1,1;1,2', @klass.ids_to_s(to_test, ',', ';', '', '') if @key_test == :dual
- end
- end
-
- def test_composite_where_clause
- testing_with do
- where = 'reference_codes.reference_type_id=1 AND reference_codes.reference_code=2) OR (reference_codes.reference_type_id=2 AND reference_codes.reference_code=2'
- assert_equal(where, @klass.composite_where_clause([[1, 2], [2, 2]])) if @key_test == :dual
- end
- end
-
- def test_set_ids_string
- testing_with do
- array = @primary_keys.collect {|key| 5}
- expected = composite? ? array.to_composite_keys : array.first
- @first.id = expected.to_s
- assert_equal expected, @first.id
- end
- end
-
- def test_set_ids_array
- testing_with do
- array = @primary_keys.collect {|key| 5}
- expected = composite? ? array.to_composite_keys : array.first
- @first.id = expected
- assert_equal expected, @first.id
- end
- end
-
- def test_set_ids_comp
- testing_with do
- array = @primary_keys.collect {|key| 5}
- expected = composite? ? array.to_composite_keys : array.first
- @first.id = expected
- assert_equal expected, @first.id
- end
- end
-
- def test_primary_keys
- testing_with do
- if composite?
- assert_not_nil @klass.primary_keys
- assert_equal @primary_keys.map {|key| key.to_sym}, @klass.primary_keys
- assert_equal @klass.primary_keys, @klass.primary_key
- else
- assert_not_nil @klass.primary_key
- assert_equal @primary_keys, [@klass.primary_key.to_sym]
- end
- assert_equal @primary_keys.join(','), @klass.primary_key.to_s
- # Need a :primary_keys should be Array with to_s overridden
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+class TestIds < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => [:reference_type_id],
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ :dual_strs => {
+ :class => ReferenceCode,
+ :primary_keys => ['reference_type_id', 'reference_code'],
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_id
+ testing_with do
+ assert_equal @first.id, @first.ids if composite?
+ end
+ end
+
+ def test_id_to_s
+ testing_with do
+ assert_equal first_id_str, @first.id.to_s
+ assert_equal first_id_str, "#{@first.id}"
+ end
+ end
+
+ def test_ids_to_s
+ testing_with do
+ order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
+ to_test = @klass.find(:all, :order => order)[0..1].map(&:id)
+ assert_equal '(1,1),(1,2)', @klass.ids_to_s(to_test) if @key_test == :dual
+ assert_equal '1,1;1,2', @klass.ids_to_s(to_test, ',', ';', '', '') if @key_test == :dual
+ end
+ end
+
+ def test_composite_where_clause
+ testing_with do
+ where = 'reference_codes.reference_type_id=1 AND reference_codes.reference_code=2) OR (reference_codes.reference_type_id=2 AND reference_codes.reference_code=2'
+ assert_equal(where, @klass.composite_where_clause([[1, 2], [2, 2]])) if @key_test == :dual
+ end
+ end
+
+ def test_set_ids_string
+ testing_with do
+ array = @primary_keys.collect {|key| 5}
+ expected = composite? ? array.to_composite_keys : array.first
+ @first.id = expected.to_s
+ assert_equal expected, @first.id
+ end
+ end
+
+ def test_set_ids_array
+ testing_with do
+ array = @primary_keys.collect {|key| 5}
+ expected = composite? ? array.to_composite_keys : array.first
+ @first.id = expected
+ assert_equal expected, @first.id
+ end
+ end
+
+ def test_set_ids_comp
+ testing_with do
+ array = @primary_keys.collect {|key| 5}
+ expected = composite? ? array.to_composite_keys : array.first
+ @first.id = expected
+ assert_equal expected, @first.id
+ end
+ end
+
+ def test_primary_keys
+ testing_with do
+ if composite?
+ assert_not_nil @klass.primary_keys
+ assert_equal @primary_keys.map {|key| key.to_sym}, @klass.primary_keys
+ assert_equal @klass.primary_keys, @klass.primary_key
+ else
+ assert_not_nil @klass.primary_key
+ assert_equal @primary_keys, [@klass.primary_key.to_sym]
+ end
+ assert_equal @primary_keys.join(','), @klass.primary_key.to_s
+ # Need a :primary_keys should be Array with to_s overridden
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_miscellaneous.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_miscellaneous.rb
index 25f6096fe..e5de57021 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_miscellaneous.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_miscellaneous.rb
@@ -1,39 +1,39 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-class TestMiscellaneous < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes, :products
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_composite_class
- testing_with do
- assert_equal composite?, @klass.composite?
- end
- end
-
- def test_composite_instance
- testing_with do
- assert_equal composite?, @first.composite?
- end
- end
-
- def test_count
- assert_equal 2, Product.count
- end
-
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+class TestMiscellaneous < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes, :products
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_composite_class
+ testing_with do
+ assert_equal composite?, @klass.composite?
+ end
+ end
+
+ def test_composite_instance
+ testing_with do
+ assert_equal composite?, @first.composite?
+ end
+ end
+
+ def test_count
+ assert_equal 2, Product.count
+ end
+
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_pagination.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_pagination.rb
index fa19d95a6..4952ff207 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_pagination.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_pagination.rb
@@ -1,38 +1,38 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-require 'plugins/pagination'
-
-class TestPagination < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- include ActionController::Pagination
- DEFAULT_PAGE_SIZE = 2
-
- attr_accessor :params
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- :table => :reference_types,
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- :table => :reference_codes,
- },
- }
-
- def setup
- self.class.classes = CLASSES
- @params = {}
- end
-
- def test_paginate_all
- testing_with do
- @object_pages, @objects = paginate @klass_info[:table], :per_page => DEFAULT_PAGE_SIZE
- assert_equal 2, @objects.length, "Each page should have #{DEFAULT_PAGE_SIZE} items"
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+require 'plugins/pagination'
+
+class TestPagination < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ include ActionController::Pagination
+ DEFAULT_PAGE_SIZE = 2
+
+ attr_accessor :params
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ :table => :reference_types,
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ :table => :reference_codes,
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ @params = {}
+ end
+
+ def test_paginate_all
+ testing_with do
+ @object_pages, @objects = paginate @klass_info[:table], :per_page => DEFAULT_PAGE_SIZE
+ assert_equal 2, @objects.length, "Each page should have #{DEFAULT_PAGE_SIZE} items"
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_santiago.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_santiago.rb
index 4b5f433e4..771c414a7 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_santiago.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_santiago.rb
@@ -1,27 +1,27 @@
-# Test cases devised by Santiago that broke the Composite Primary Keys
-# code at one point in time. But no more!!!
-
-require 'abstract_unit'
-require 'fixtures/user'
-require 'fixtures/article'
-require 'fixtures/reading'
-
-class TestSantiago < Test::Unit::TestCase
- fixtures :suburbs, :streets, :users, :articles, :readings
-
- def test_normal_and_composite_associations
- assert_not_nil @suburb = Suburb.find(1,1)
- assert_equal 1, @suburb.streets.length
-
- assert_not_nil @street = Street.find(1)
- assert_not_nil @street.suburb
- end
-
- def test_single_keys
- @santiago = User.find(1)
- assert_not_nil @santiago.articles
- assert_equal 2, @santiago.articles.length
- assert_not_nil @santiago.readings
- assert_equal 2, @santiago.readings.length
- end
-end
+# Test cases devised by Santiago that broke the Composite Primary Keys
+# code at one point in time. But no more!!!
+
+require 'abstract_unit'
+require 'fixtures/user'
+require 'fixtures/article'
+require 'fixtures/reading'
+
+class TestSantiago < Test::Unit::TestCase
+ fixtures :suburbs, :streets, :users, :articles, :readings
+
+ def test_normal_and_composite_associations
+ assert_not_nil @suburb = Suburb.find(1,1)
+ assert_equal 1, @suburb.streets.length
+
+ assert_not_nil @street = Street.find(1)
+ assert_not_nil @street.suburb
+ end
+
+ def test_single_keys
+ @santiago = User.find(1)
+ assert_not_nil @santiago.articles
+ assert_equal 2, @santiago.articles.length
+ assert_not_nil @santiago.readings
+ assert_equal 2, @santiago.readings.length
+ end
+end
diff --git a/vendor/gems/composite_primary_keys-2.2.2/test/test_update.rb b/vendor/gems/composite_primary_keys-2.2.2/test/test_update.rb
index d612c92a8..87ca8f5f4 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/test/test_update.rb
+++ b/vendor/gems/composite_primary_keys-2.2.2/test/test_update.rb
@@ -1,40 +1,40 @@
-require 'abstract_unit'
-require 'fixtures/reference_type'
-require 'fixtures/reference_code'
-
-class TestUpdate < Test::Unit::TestCase
- fixtures :reference_types, :reference_codes
-
- CLASSES = {
- :single => {
- :class => ReferenceType,
- :primary_keys => :reference_type_id,
- :update => { :description => 'RT Desc' },
- },
- :dual => {
- :class => ReferenceCode,
- :primary_keys => [:reference_type_id, :reference_code],
- :update => { :description => 'RT Desc' },
- },
- }
-
- def setup
- self.class.classes = CLASSES
- end
-
- def test_setup
- testing_with do
- assert_not_nil @klass_info[:update]
- end
- end
-
- def test_update_attributes
- testing_with do
- assert @first.update_attributes(@klass_info[:update])
- assert @first.reload
- @klass_info[:update].each_pair do |attr_name, new_value|
- assert_equal new_value, @first[attr_name], "Attribute #{attr_name} is incorrect"
- end
- end
- end
+require 'abstract_unit'
+require 'fixtures/reference_type'
+require 'fixtures/reference_code'
+
+class TestUpdate < Test::Unit::TestCase
+ fixtures :reference_types, :reference_codes
+
+ CLASSES = {
+ :single => {
+ :class => ReferenceType,
+ :primary_keys => :reference_type_id,
+ :update => { :description => 'RT Desc' },
+ },
+ :dual => {
+ :class => ReferenceCode,
+ :primary_keys => [:reference_type_id, :reference_code],
+ :update => { :description => 'RT Desc' },
+ },
+ }
+
+ def setup
+ self.class.classes = CLASSES
+ end
+
+ def test_setup
+ testing_with do
+ assert_not_nil @klass_info[:update]
+ end
+ end
+
+ def test_update_attributes
+ testing_with do
+ assert @first.update_attributes(@klass_info[:update])
+ assert @first.reload
+ @klass_info[:update].each_pair do |attr_name, new_value|
+ assert_equal new_value, @first[attr_name], "Attribute #{attr_name} is incorrect"
+ end
+ end
+ end
end
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/website/stylesheets/screen.css b/vendor/gems/composite_primary_keys-2.2.2/website/stylesheets/screen.css
index 3f2d8f951..cfa43425b 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/website/stylesheets/screen.css
+++ b/vendor/gems/composite_primary_keys-2.2.2/website/stylesheets/screen.css
@@ -1,126 +1,126 @@
-body {
- background-color: #2F30EE;
- font-family: "Georgia", sans-serif;
- font-size: 16px;
- line-height: 1.6em;
- padding: 1.6em 0 0 0;
- color: #eee;
-}
-h1, h2, h3, h4, h5, h6 {
- color: #FFEDFA;
-}
-h1 {
- font-family: sans-serif;
- font-weight: normal;
- font-size: 4em;
- line-height: 0.8em;
- letter-spacing: -0.1ex;
- margin: 5px;
-}
-li {
- padding: 0;
- margin: 0;
- list-style-type: square;
-}
-a {
- color: #99f;
- font-weight: normal;
- text-decoration: underline;
-}
-blockquote {
- font-size: 90%;
- font-style: italic;
- border-left: 1px solid #eee;
- padding-left: 1em;
-}
-.caps {
- font-size: 80%;
-}
-
-#main {
- width: 45em;
- padding: 0;
- margin: 0 auto;
-}
-.coda {
- text-align: right;
- color: #77f;
- font-size: smaller;
-}
-
-table {
- font-size: 90%;
- line-height: 1.4em;
- color: #ff8;
- background-color: #111;
- padding: 2px 10px 2px 10px;
- border-style: dashed;
-}
-
-th {
- color: #fff;
-}
-
-td {
- padding: 2px 10px 2px 10px;
-}
-
-.success {
- color: #0CC52B;
-}
-
-.failed {
- color: #E90A1B;
-}
-
-.unknown {
- color: #995000;
-}
-pre, code {
- font-family: monospace;
- font-size: 90%;
- line-height: 1.4em;
- color: #ff8;
- background-color: #111;
- padding: 2px 10px 2px 10px;
-}
-.comment { color: #aaa; font-style: italic; }
-.keyword { color: #eff; font-weight: bold; }
-.punct { color: #eee; font-weight: bold; }
-.symbol { color: #0bb; }
-.string { color: #6b4; }
-.ident { color: #ff8; }
-.constant { color: #66f; }
-.regex { color: #ec6; }
-.number { color: #F99; }
-.expr { color: #227; }
-
-#version {
- float: right;
- text-align: right;
- font-family: sans-serif;
- font-weight: normal;
- background-color: #ff8;
- color: #66f;
- padding: 15px 20px 10px 20px;
- margin: 0 auto;
- margin-top: 15px;
- border: 3px solid #66f;
-}
-
-#version .numbers {
- display: block;
- font-size: 4em;
- line-height: 0.8em;
- letter-spacing: -0.1ex;
-}
-
-#version a {
- text-decoration: none;
-}
-
-.clickable {
- cursor: pointer;
- cursor: hand;
-}
-
+body {
+ background-color: #2F30EE;
+ font-family: "Georgia", sans-serif;
+ font-size: 16px;
+ line-height: 1.6em;
+ padding: 1.6em 0 0 0;
+ color: #eee;
+}
+h1, h2, h3, h4, h5, h6 {
+ color: #FFEDFA;
+}
+h1 {
+ font-family: sans-serif;
+ font-weight: normal;
+ font-size: 4em;
+ line-height: 0.8em;
+ letter-spacing: -0.1ex;
+ margin: 5px;
+}
+li {
+ padding: 0;
+ margin: 0;
+ list-style-type: square;
+}
+a {
+ color: #99f;
+ font-weight: normal;
+ text-decoration: underline;
+}
+blockquote {
+ font-size: 90%;
+ font-style: italic;
+ border-left: 1px solid #eee;
+ padding-left: 1em;
+}
+.caps {
+ font-size: 80%;
+}
+
+#main {
+ width: 45em;
+ padding: 0;
+ margin: 0 auto;
+}
+.coda {
+ text-align: right;
+ color: #77f;
+ font-size: smaller;
+}
+
+table {
+ font-size: 90%;
+ line-height: 1.4em;
+ color: #ff8;
+ background-color: #111;
+ padding: 2px 10px 2px 10px;
+ border-style: dashed;
+}
+
+th {
+ color: #fff;
+}
+
+td {
+ padding: 2px 10px 2px 10px;
+}
+
+.success {
+ color: #0CC52B;
+}
+
+.failed {
+ color: #E90A1B;
+}
+
+.unknown {
+ color: #995000;
+}
+pre, code {
+ font-family: monospace;
+ font-size: 90%;
+ line-height: 1.4em;
+ color: #ff8;
+ background-color: #111;
+ padding: 2px 10px 2px 10px;
+}
+.comment { color: #aaa; font-style: italic; }
+.keyword { color: #eff; font-weight: bold; }
+.punct { color: #eee; font-weight: bold; }
+.symbol { color: #0bb; }
+.string { color: #6b4; }
+.ident { color: #ff8; }
+.constant { color: #66f; }
+.regex { color: #ec6; }
+.number { color: #F99; }
+.expr { color: #227; }
+
+#version {
+ float: right;
+ text-align: right;
+ font-family: sans-serif;
+ font-weight: normal;
+ background-color: #ff8;
+ color: #66f;
+ padding: 15px 20px 10px 20px;
+ margin: 0 auto;
+ margin-top: 15px;
+ border: 3px solid #66f;
+}
+
+#version .numbers {
+ display: block;
+ font-size: 4em;
+ line-height: 0.8em;
+ letter-spacing: -0.1ex;
+}
+
+#version a {
+ text-decoration: none;
+}
+
+.clickable {
+ cursor: pointer;
+ cursor: hand;
+}
+
diff --git a/vendor/gems/composite_primary_keys-2.2.2/website/version-raw.txt b/vendor/gems/composite_primary_keys-2.2.2/website/version-raw.txt
index 74ca3ac67..9059e938d 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/website/version-raw.txt
+++ b/vendor/gems/composite_primary_keys-2.2.2/website/version-raw.txt
@@ -1,2 +1,2 @@
-h1. Announcement JS file
+h1. Announcement JS file
MagicAnnouncement.show('compositekeys', version);
\ No newline at end of file
diff --git a/vendor/gems/composite_primary_keys-2.2.2/website/version.js b/vendor/gems/composite_primary_keys-2.2.2/website/version.js
index d0a9dab1d..3225547c9 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/website/version.js
+++ b/vendor/gems/composite_primary_keys-2.2.2/website/version.js
@@ -1,4 +1,4 @@
// Version JS file
var version = "2.2.2";
-
+
document.write(" - " + version);
diff --git a/vendor/gems/composite_primary_keys-2.2.2/website/version.txt b/vendor/gems/composite_primary_keys-2.2.2/website/version.txt
index d0ac6a7ac..6054d2f4b 100644
--- a/vendor/gems/composite_primary_keys-2.2.2/website/version.txt
+++ b/vendor/gems/composite_primary_keys-2.2.2/website/version.txt
@@ -1,3 +1,3 @@
-h1. Version JS file
-
+h1. Version JS file
+
document.write(" - " + version);
\ No newline at end of file
diff --git a/vendor/plugins/rails-i18n/locale/dsb.yml b/vendor/plugins/rails-i18n/locale/dsb.yml
index e3fdad824..6fd2c7a64 100644
--- a/vendor/plugins/rails-i18n/locale/dsb.yml
+++ b/vendor/plugins/rails-i18n/locale/dsb.yml
@@ -1,182 +1,182 @@
-# Lower Sorbian translations for Ruby on Rails
-# by Michael Wolf (preklady@wolfmicha.de)
-
-dsb:
- # ActiveSupport
- support:
- array:
- words_connector: ", "
- two_words_connector: " a "
- last_word_connector: " a "
- sentence_connector: "a"
- skip_last_comma: true
-
- # Date
- date:
- formats:
- default: "%d. %m. %Y"
- short: "%d %b"
- long: "%d. %B %Y"
- day_names: [njeźela, pónjeźele, wałtora, srjoda, stwórtk, pětk, sobota]
- abbr_day_names: [Nj, Pó, Wu, Sr, St, Pě, So]
- month_names: [~, Januar, Februar, Měrc, Apryl, Maj, Junij, Julij, Awgust, September, Oktober, Nowember, December]
- abbr_month_names: [~, jan, feb, měr, apr, maj, jun, jul, awg, sep, okt, now, dec]
- order: [:day, :month, :year]
-
- # Time
- time:
- formats:
- default: "%A, %d. %B %Y, %H:%M hodź"
- short: "%d. %B, %H:%M hodź."
- long: "%A, %d. %B %Y, %H:%M hodź."
- am: "dopołdnja"
- pm: "wótpołdnja"
-
-
- # Numbers
- number:
- format:
- precision: 3
- separator: ","
- delimiter: "."
- currency:
- format:
- unit: "€"
- precision: 2
- format: "%n %u"
- separator: ","
- delimiter: " "
- human:
- format:
- precision: 1
- delimiter: ""
- storage_units:
- format: "%n %u"
- units:
- byte:
- one: "bajt"
- two: "bajta"
- few: "bajty"
- other: "bajtow"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
-
- percentage:
- format:
- delimiter: ""
-
- precision:
- format:
- delimiter: ""
-
-
- # Distance of time ... helper
- # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
- datetime:
- distance_in_words:
- half_a_minute: "poł minuty"
- less_than_x_seconds:
- one: "mjenjej ako 1 sekundu"
- two: "mjenjej ako {{count}} sekundoma"
- few: "mjenjej ako {{count}} sekundami"
- other: "mjenjej ako {{count}} sekundami"
- x_seconds:
- one: "1 sekundu"
- two: "{{count}} sekundoma"
- few: "{{count}} sekundami"
- other: "{{count}} sekundami"
- less_than_x_minutes:
- one: "mjenjej ako 1 minutu"
- two: "mjenjej ako {{count}} minutoma"
- few: "mjenjej ako {{count}} minutami"
- other: "mjenjej ako {{count}} minutami"
- x_minutes:
- one: "1 minutu"
- two: "{{count}} minutoma"
- few: "{{count}} minutami"
- other: "{{count}} minutami"
- about_x_hours:
- one: "něźi 1 góźinu"
- two: "něźi {{count}} góźinoma"
- few: "něźi {{count}} góźinami"
- other: "něźi {{count}} góźinami"
- x_days:
- one: "1 dnjom"
- two: "{{count}} dnjoma"
- few: "{{count}} dnjami"
- other: "{{count}} dnjami"
- about_x_months:
- one: "něźi 1 mjasecom"
- two: "něźi {{count}} mjasecoma"
- few: "něźi {{count}} mjasecami"
- other: "něźi {{count}} mjasecami"
- x_months:
- one: "1 mjasecom"
- two: "{{count}} mjasecoma"
- few: "{{count}} mjasecami"
- other: "{{count}} mjasecami"
- about_x_years:
- one: "něźi 1 lětom"
- two: "něźi {{count}} lětoma"
- few: "něźi {{count}} lětami"
- other: "něźi {{count}} lětami"
- over_x_years:
- one: "wěcej ako 1 lětom"
- two: "wěcej ako {{count}} lětoma"
- few: "wěcej ako {{count}} lětami"
- other: "wěcej ako {{count}} lětami"
- prompts:
- year: "Lěto"
- month: "Mjasec"
- day: "Źeń"
- hour: "Góźina"
- minute: "Minuta"
- second: "Sekunda"
-
- # ActiveRecord validation messages
- activerecord:
- errors:
- messages:
- inclusion: "njejo płaśiwa gódnota"
- exclusion: "njestoj k dispoziciji"
- invalid: "njejo płaśiwy"
- confirmation: "njejo se wobkšuśiło"
- accepted: "musy se wobkšuśiś"
- empty: "njesmějo prozny byś"
- blank: "jo trěbny"
- too_long:
- one: "jo pśedłujki (maks. 1 znamješko)"
- two: "jo pśedłujki (maks. {{count}} znamješce)"
- few: "jo pśedłujki (maks. {{count}} znamješka)"
- other: "jo pśedłujki (maks. {{count}} znamješkow)"
- too_short:
- one: "jo překrotki (min. 1 znamješko)"
- two: "jo překrotki (min. {{count}} znamješće)"
- few: "jo překrotki (min. {{count}} znamješka)"
- other: "jo překrotki (min. {{count}} znamješkow)"
- wrong_length:
- one: "njama pšawu dłujkosć (1 znamješko wócakane)"
- two: "njama pšawu dłujkosć ({{count}} znamješce wócakanej)"
- few: "njama pšawu dłujkosć ({{count}} znamješka wócakane)"
- other: "njama pšawu dłujkosć ({{count}} znamješkow wócakanych)"
- taken: "jo južo w datowej bance"
- not_a_number: "njejo licba"
- greater_than: "musy wětšy ako {{count}} byś"
- greater_than_or_equal_to: "musy wětšy abo jadnak {{count}} być"
- equal_to: "musy jadnak {{count}} byś"
- less_than: "musy mjeńšy ako {{count}} byś"
- less_than_or_equal_to: "musy mjeńšy abo jadnak {{count}} byś"
- odd: "musy njerowna licba byś"
- even: "musy rowna licba byś"
-
- template:
- header:
- one: "Pśi składowanju objekta {{model}} jo k zmólce dojšło a njejo było móžno składowaś"
- two: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
- few: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
- other: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
- body: "Pšosym pśeglědaj slědujuce póla:"
-
- models:
+# Lower Sorbian translations for Ruby on Rails
+# by Michael Wolf (preklady@wolfmicha.de)
+
+dsb:
+ # ActiveSupport
+ support:
+ array:
+ words_connector: ", "
+ two_words_connector: " a "
+ last_word_connector: " a "
+ sentence_connector: "a"
+ skip_last_comma: true
+
+ # Date
+ date:
+ formats:
+ default: "%d. %m. %Y"
+ short: "%d %b"
+ long: "%d. %B %Y"
+ day_names: [njeźela, pónjeźele, wałtora, srjoda, stwórtk, pětk, sobota]
+ abbr_day_names: [Nj, Pó, Wu, Sr, St, Pě, So]
+ month_names: [~, Januar, Februar, Měrc, Apryl, Maj, Junij, Julij, Awgust, September, Oktober, Nowember, December]
+ abbr_month_names: [~, jan, feb, měr, apr, maj, jun, jul, awg, sep, okt, now, dec]
+ order: [:day, :month, :year]
+
+ # Time
+ time:
+ formats:
+ default: "%A, %d. %B %Y, %H:%M hodź"
+ short: "%d. %B, %H:%M hodź."
+ long: "%A, %d. %B %Y, %H:%M hodź."
+ am: "dopołdnja"
+ pm: "wótpołdnja"
+
+
+ # Numbers
+ number:
+ format:
+ precision: 3
+ separator: ","
+ delimiter: "."
+ currency:
+ format:
+ unit: "€"
+ precision: 2
+ format: "%n %u"
+ separator: ","
+ delimiter: " "
+ human:
+ format:
+ precision: 1
+ delimiter: ""
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "bajt"
+ two: "bajta"
+ few: "bajty"
+ other: "bajtow"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
+ percentage:
+ format:
+ delimiter: ""
+
+ precision:
+ format:
+ delimiter: ""
+
+
+ # Distance of time ... helper
+ # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
+ datetime:
+ distance_in_words:
+ half_a_minute: "poł minuty"
+ less_than_x_seconds:
+ one: "mjenjej ako 1 sekundu"
+ two: "mjenjej ako {{count}} sekundoma"
+ few: "mjenjej ako {{count}} sekundami"
+ other: "mjenjej ako {{count}} sekundami"
+ x_seconds:
+ one: "1 sekundu"
+ two: "{{count}} sekundoma"
+ few: "{{count}} sekundami"
+ other: "{{count}} sekundami"
+ less_than_x_minutes:
+ one: "mjenjej ako 1 minutu"
+ two: "mjenjej ako {{count}} minutoma"
+ few: "mjenjej ako {{count}} minutami"
+ other: "mjenjej ako {{count}} minutami"
+ x_minutes:
+ one: "1 minutu"
+ two: "{{count}} minutoma"
+ few: "{{count}} minutami"
+ other: "{{count}} minutami"
+ about_x_hours:
+ one: "něźi 1 góźinu"
+ two: "něźi {{count}} góźinoma"
+ few: "něźi {{count}} góźinami"
+ other: "něźi {{count}} góźinami"
+ x_days:
+ one: "1 dnjom"
+ two: "{{count}} dnjoma"
+ few: "{{count}} dnjami"
+ other: "{{count}} dnjami"
+ about_x_months:
+ one: "něźi 1 mjasecom"
+ two: "něźi {{count}} mjasecoma"
+ few: "něźi {{count}} mjasecami"
+ other: "něźi {{count}} mjasecami"
+ x_months:
+ one: "1 mjasecom"
+ two: "{{count}} mjasecoma"
+ few: "{{count}} mjasecami"
+ other: "{{count}} mjasecami"
+ about_x_years:
+ one: "něźi 1 lětom"
+ two: "něźi {{count}} lětoma"
+ few: "něźi {{count}} lětami"
+ other: "něźi {{count}} lětami"
+ over_x_years:
+ one: "wěcej ako 1 lětom"
+ two: "wěcej ako {{count}} lětoma"
+ few: "wěcej ako {{count}} lětami"
+ other: "wěcej ako {{count}} lětami"
+ prompts:
+ year: "Lěto"
+ month: "Mjasec"
+ day: "Źeń"
+ hour: "Góźina"
+ minute: "Minuta"
+ second: "Sekunda"
+
+ # ActiveRecord validation messages
+ activerecord:
+ errors:
+ messages:
+ inclusion: "njejo płaśiwa gódnota"
+ exclusion: "njestoj k dispoziciji"
+ invalid: "njejo płaśiwy"
+ confirmation: "njejo se wobkšuśiło"
+ accepted: "musy se wobkšuśiś"
+ empty: "njesmějo prozny byś"
+ blank: "jo trěbny"
+ too_long:
+ one: "jo pśedłujki (maks. 1 znamješko)"
+ two: "jo pśedłujki (maks. {{count}} znamješce)"
+ few: "jo pśedłujki (maks. {{count}} znamješka)"
+ other: "jo pśedłujki (maks. {{count}} znamješkow)"
+ too_short:
+ one: "jo překrotki (min. 1 znamješko)"
+ two: "jo překrotki (min. {{count}} znamješće)"
+ few: "jo překrotki (min. {{count}} znamješka)"
+ other: "jo překrotki (min. {{count}} znamješkow)"
+ wrong_length:
+ one: "njama pšawu dłujkosć (1 znamješko wócakane)"
+ two: "njama pšawu dłujkosć ({{count}} znamješce wócakanej)"
+ few: "njama pšawu dłujkosć ({{count}} znamješka wócakane)"
+ other: "njama pšawu dłujkosć ({{count}} znamješkow wócakanych)"
+ taken: "jo južo w datowej bance"
+ not_a_number: "njejo licba"
+ greater_than: "musy wětšy ako {{count}} byś"
+ greater_than_or_equal_to: "musy wětšy abo jadnak {{count}} być"
+ equal_to: "musy jadnak {{count}} byś"
+ less_than: "musy mjeńšy ako {{count}} byś"
+ less_than_or_equal_to: "musy mjeńšy abo jadnak {{count}} byś"
+ odd: "musy njerowna licba byś"
+ even: "musy rowna licba byś"
+
+ template:
+ header:
+ one: "Pśi składowanju objekta {{model}} jo k zmólce dojšło a njejo było móžno składowaś"
+ two: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
+ few: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
+ other: "Pśi składowanju objekta {{model}} jo k {{count}} zmólkam dojšło a njejo było móžno składowaś"
+ body: "Pšosym pśeglědaj slědujuce póla:"
+
+ models:
diff --git a/vendor/plugins/rails-i18n/locale/hsb.yml b/vendor/plugins/rails-i18n/locale/hsb.yml
index 2e4275d2f..dde340af0 100644
--- a/vendor/plugins/rails-i18n/locale/hsb.yml
+++ b/vendor/plugins/rails-i18n/locale/hsb.yml
@@ -1,190 +1,190 @@
-# Upper Sorbian translations for Ruby on Rails
-# by Michael Wolf (preklady@wolfmicha.de)
-
-hsb:
-
- # ActiveSupport
- support:
- array:
- words_connector: ", "
- two_words_connector: " a "
- last_word_connector: " a "
- sentence_connector: "a"
- skip_last_comma: true
-
-
-
- # Date
- date:
- formats:
- default: "%d. %m. %Y"
- short: "%d %b"
- long: "%d. %B %Y"
-
- day_names: [njedźela, póndźela, wutora, srjeda, štwórtk, pjatk, sobota]
- abbr_day_names: [Nj, Pó, Wu, Sr, Št, Pj, So]
- month_names: [~, Januar, Februar, Měrc, Apryl, Meja, Junij, Julij, Awgust, September, Oktober, Nowember, December]
- abbr_month_names: [~, jan, feb, měr, apr, mej, jun, jul, awg, sep, okt, now, dec]
- order: [:day, :month, :year]
-
- # Time
- time:
- formats:
- default: "%A, %d. %B %Y, %H:%M hodź"
- short: "%d. %B, %H:%M hodź."
- long: "%A, %d. %B %Y, %H:%M hodź."
-
- am: "dopołdnja"
- pm: "popołdnju"
-
-
- # Numbers
- number:
- format:
- precision: 3
- separator: ","
- delimiter: "."
-
- currency:
- format:
- unit: "€"
- precision: 2
- format: "%n %u"
- separator: ","
- delimiter: " "
-
- human:
- format:
- precision: 1
- delimiter: ""
-
- storage_units:
- format: "%n %u"
- units:
- byte:
- one: "bajt"
- two: "bajtaj"
- few: "bajty"
- other: "bajtow"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
-
- percentage:
- format:
- delimiter: ""
-
- precision:
- format:
- delimiter: ""
-
-
- # Distance of time ... helper
- # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
- datetime:
- distance_in_words:
- half_a_minute: "poł mjeńšiny"
- less_than_x_seconds:
- one: "mjenje hač 1 sekundu"
- two: "mjenje hač {{count}} sekundomaj"
- few: "mjenje hač {{count}} sekundami"
- other: "mjenje hač {{count}} sekundami"
- x_seconds:
- one: "1 sekundu"
- two: "{{count}} sekundomaj"
- few: "{{count}} sekundami"
- other: "{{count}} sekundami"
- less_than_x_minutes:
- one: "mjenje hač 1 mjeńšinu"
- two: "mjenje hač {{count}} mjeńšinomaj"
- few: "mjenje hač {{count}} mjeńšinami"
- other: "mjenje hač {{count}} mjeńšinami"
- x_minutes:
- one: "1 mjeńšinu"
- two: "{{count}} mjeńšinomaj"
- few: "{{count}} mjeńšinami"
- other: "{{count}} mjeńšinami"
- about_x_hours:
- one: "něhdźe 1 hodźinu"
- two: "něhdźe {{count}} hodźinomaj"
- few: "něhdźe {{count}} hodźinami"
- other: "něhdźe {{count}} hodźinami"
- x_days:
- one: "1 dnjom"
- two: "{{count}} dnjomaj"
- few: "{{count}} dnjemi"
- other: "{{count}} dnjemi"
- about_x_months:
- one: "něhdźe 1 měsacom"
- two: "něhdźe {{count}} měsacomaj"
- few: "něhdźe {{count}} měsacami"
- other: "něhdźe {{count}} měsacami"
- x_months:
- one: "1 měsacom"
- two: "{{count}} měsacomaj"
- few: "{{count}} měsacami"
- other: "{{count}} měsacami"
- about_x_years:
- one: "něhdźe 1 lětom"
- two: "něhdźe {{count}} lětomaj"
- few: "něhdźe {{count}} lětami"
- other: "něhdźe {{count}} lětami"
- over_x_years:
- one: "přez 1 lětom"
- two: "přez {{count}} lětomaj"
- few: "přez {{count}} lětami"
- other: "přez {{count}} lětami"
- prompts:
- year: "Lěto"
- month: "Měsac"
- day: "Dźeń"
- hour: "Hodźina"
- minute: "Mjeńšina"
- second: "Sekunda"
-
- # ActiveRecord validation messages
- activerecord:
- errors:
- messages:
- inclusion: "njeje płaćiwa hódnota"
- exclusion: "njesteji k dispoziciji"
- invalid: "njeje płaćiwy"
- confirmation: "njebu wobkrućene"
- accepted: "dyrbi so wobkrućić"
- empty: "njesmě prózdny być"
- blank: "je trěbny"
- too_long:
- one: "je předołhi (maks. 1 znamješko)"
- two: "je předołhi (maks. {{count}} znamješce)"
- few: "je předołhi (maks. {{count}} znamješka)"
- other: "je předołhi (maks. {{count}} znamješkow)"
- too_short:
- one: "je překrótki (min. 1 znamješko)"
- two: "je překrótki (min. {{count}} znamješće)"
- few: "je překrótki (min. {{count}} znamješka)"
- other: "je překrótki (min. {{count}} znamješkow)"
- wrong_length:
- one: "nima prawu dołhosć (1 znamješko wočakowane)"
- two: "nima prawu dołhosć ({{count}} znamješce wočakowanej)"
- few: "nima prawu dołhosć ({{count}} znamješka wočakowane)"
- other: "nima prawu dołhosć ({{count}} znamješkow wočakowanych)"
- taken: "je hižo w datowej bance"
- not_a_number: "njeje ličba"
- greater_than: "dyrbi wjetši hač {{count}} być"
- greater_than_or_equal_to: "dyrbi wjetši abo runja {{count}} być"
- equal_to: "dyrbi runja {{count}} być"
- less_than: "dyrbi mjenje hač {{count}} być"
- less_than_or_equal_to: "dyrbi mjenje abo runja {{count}} być"
- odd: "dyrbi njeruna ličby być"
- even: "dyrbi runa ličba być"
-
- template:
- header:
- one: "Při składowanju objekta {{model}} je k zmylkej dóšło a njebě móžno składować"
- two: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
- few: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
- other: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
- body: "Prošu přepruwuj slědowace pola:"
-
- models:
+# Upper Sorbian translations for Ruby on Rails
+# by Michael Wolf (preklady@wolfmicha.de)
+
+hsb:
+
+ # ActiveSupport
+ support:
+ array:
+ words_connector: ", "
+ two_words_connector: " a "
+ last_word_connector: " a "
+ sentence_connector: "a"
+ skip_last_comma: true
+
+
+
+ # Date
+ date:
+ formats:
+ default: "%d. %m. %Y"
+ short: "%d %b"
+ long: "%d. %B %Y"
+
+ day_names: [njedźela, póndźela, wutora, srjeda, štwórtk, pjatk, sobota]
+ abbr_day_names: [Nj, Pó, Wu, Sr, Št, Pj, So]
+ month_names: [~, Januar, Februar, Měrc, Apryl, Meja, Junij, Julij, Awgust, September, Oktober, Nowember, December]
+ abbr_month_names: [~, jan, feb, měr, apr, mej, jun, jul, awg, sep, okt, now, dec]
+ order: [:day, :month, :year]
+
+ # Time
+ time:
+ formats:
+ default: "%A, %d. %B %Y, %H:%M hodź"
+ short: "%d. %B, %H:%M hodź."
+ long: "%A, %d. %B %Y, %H:%M hodź."
+
+ am: "dopołdnja"
+ pm: "popołdnju"
+
+
+ # Numbers
+ number:
+ format:
+ precision: 3
+ separator: ","
+ delimiter: "."
+
+ currency:
+ format:
+ unit: "€"
+ precision: 2
+ format: "%n %u"
+ separator: ","
+ delimiter: " "
+
+ human:
+ format:
+ precision: 1
+ delimiter: ""
+
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "bajt"
+ two: "bajtaj"
+ few: "bajty"
+ other: "bajtow"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
+ percentage:
+ format:
+ delimiter: ""
+
+ precision:
+ format:
+ delimiter: ""
+
+
+ # Distance of time ... helper
+ # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
+ datetime:
+ distance_in_words:
+ half_a_minute: "poł mjeńšiny"
+ less_than_x_seconds:
+ one: "mjenje hač 1 sekundu"
+ two: "mjenje hač {{count}} sekundomaj"
+ few: "mjenje hač {{count}} sekundami"
+ other: "mjenje hač {{count}} sekundami"
+ x_seconds:
+ one: "1 sekundu"
+ two: "{{count}} sekundomaj"
+ few: "{{count}} sekundami"
+ other: "{{count}} sekundami"
+ less_than_x_minutes:
+ one: "mjenje hač 1 mjeńšinu"
+ two: "mjenje hač {{count}} mjeńšinomaj"
+ few: "mjenje hač {{count}} mjeńšinami"
+ other: "mjenje hač {{count}} mjeńšinami"
+ x_minutes:
+ one: "1 mjeńšinu"
+ two: "{{count}} mjeńšinomaj"
+ few: "{{count}} mjeńšinami"
+ other: "{{count}} mjeńšinami"
+ about_x_hours:
+ one: "něhdźe 1 hodźinu"
+ two: "něhdźe {{count}} hodźinomaj"
+ few: "něhdźe {{count}} hodźinami"
+ other: "něhdźe {{count}} hodźinami"
+ x_days:
+ one: "1 dnjom"
+ two: "{{count}} dnjomaj"
+ few: "{{count}} dnjemi"
+ other: "{{count}} dnjemi"
+ about_x_months:
+ one: "něhdźe 1 měsacom"
+ two: "něhdźe {{count}} měsacomaj"
+ few: "něhdźe {{count}} měsacami"
+ other: "něhdźe {{count}} měsacami"
+ x_months:
+ one: "1 měsacom"
+ two: "{{count}} měsacomaj"
+ few: "{{count}} měsacami"
+ other: "{{count}} měsacami"
+ about_x_years:
+ one: "něhdźe 1 lětom"
+ two: "něhdźe {{count}} lětomaj"
+ few: "něhdźe {{count}} lětami"
+ other: "něhdźe {{count}} lětami"
+ over_x_years:
+ one: "přez 1 lětom"
+ two: "přez {{count}} lětomaj"
+ few: "přez {{count}} lětami"
+ other: "přez {{count}} lětami"
+ prompts:
+ year: "Lěto"
+ month: "Měsac"
+ day: "Dźeń"
+ hour: "Hodźina"
+ minute: "Mjeńšina"
+ second: "Sekunda"
+
+ # ActiveRecord validation messages
+ activerecord:
+ errors:
+ messages:
+ inclusion: "njeje płaćiwa hódnota"
+ exclusion: "njesteji k dispoziciji"
+ invalid: "njeje płaćiwy"
+ confirmation: "njebu wobkrućene"
+ accepted: "dyrbi so wobkrućić"
+ empty: "njesmě prózdny być"
+ blank: "je trěbny"
+ too_long:
+ one: "je předołhi (maks. 1 znamješko)"
+ two: "je předołhi (maks. {{count}} znamješce)"
+ few: "je předołhi (maks. {{count}} znamješka)"
+ other: "je předołhi (maks. {{count}} znamješkow)"
+ too_short:
+ one: "je překrótki (min. 1 znamješko)"
+ two: "je překrótki (min. {{count}} znamješće)"
+ few: "je překrótki (min. {{count}} znamješka)"
+ other: "je překrótki (min. {{count}} znamješkow)"
+ wrong_length:
+ one: "nima prawu dołhosć (1 znamješko wočakowane)"
+ two: "nima prawu dołhosć ({{count}} znamješce wočakowanej)"
+ few: "nima prawu dołhosć ({{count}} znamješka wočakowane)"
+ other: "nima prawu dołhosć ({{count}} znamješkow wočakowanych)"
+ taken: "je hižo w datowej bance"
+ not_a_number: "njeje ličba"
+ greater_than: "dyrbi wjetši hač {{count}} być"
+ greater_than_or_equal_to: "dyrbi wjetši abo runja {{count}} być"
+ equal_to: "dyrbi runja {{count}} być"
+ less_than: "dyrbi mjenje hač {{count}} być"
+ less_than_or_equal_to: "dyrbi mjenje abo runja {{count}} być"
+ odd: "dyrbi njeruna ličby być"
+ even: "dyrbi runa ličba być"
+
+ template:
+ header:
+ one: "Při składowanju objekta {{model}} je k zmylkej dóšło a njebě móžno składować"
+ two: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
+ few: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
+ other: "Při składowanju objekta {{model}} je k {{count}} zmylkam dóšło a njebě móžno składować"
+ body: "Prošu přepruwuj slědowace pola:"
+
+ models:
diff --git a/vendor/plugins/rails-i18n/locale/sk.yml b/vendor/plugins/rails-i18n/locale/sk.yml
index 14c6a282e..af659f50a 100644
--- a/vendor/plugins/rails-i18n/locale/sk.yml
+++ b/vendor/plugins/rails-i18n/locale/sk.yml
@@ -1,139 +1,139 @@
-# Sample localization file for English. Add more files in this directory for other locales.
-# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
-
-# Slovak translations for Ruby on Rails (inspired by the Czech localization - thanx to Karel Minařík)
-# by Jozef Fulop (jofi-rails@silake.com)
-
-sk:
- # ActiveSupport
- support:
- array:
- words_connector: ', '
- two_words_connector: ' a '
- last_word_connector: ' a '
-
- # Date
- date:
- formats:
- default: "%d. %m. %Y"
- short: "%d %b"
- long: "%d. %B %Y"
- day_names: [Nedeľa, Pondelok, Utorok, Streda, Štvrtok, Piatok, Sobota]
- abbr_day_names: [Ne, Po, Ut, St, Št, Pi, So]
- month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December]
- abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec]
- order: [:day, :month, :year]
-
- # Time
- time:
- formats:
- default: "%a %d. %B %Y %H:%M %z"
- short: "%d. %m. %H:%M"
- long: "%A %d. %B %Y %H:%M"
- am: 'dopoludnia'
- pm: 'popoludní'
-
- # Numbers
- number:
- format:
- precision: 3
- separator: '.'
- delimiter: ','
- currency:
- format:
- unit: '€'
- precision: 2
- format: '%n %u'
- separator: ","
- delimiter: " "
- human:
- format:
- precision: 1
- delimiter: ''
- storage_units:
- format: "%n %u"
- units:
- byte:
- other: "B"
- one: "B"
- kb: "KB"
- mb: "MB"
- gb: "GB"
- tb: "TB"
- percentage:
- format:
- delimiter: ''
- precision:
- format:
- delimiter: ''
-
- # Distance of time ... helper
- datetime:
- prompts:
- second: "Sekunda"
- minute: "Minúta"
- hour: "Hodina"
- day: "Deň"
- month: "Mesiac"
- year: "Rok"
- distance_in_words:
- half_a_minute: 'pol minutou'
- less_than_x_seconds:
- one: 'asi pred sekundou'
- other: 'asi pred {{count}} sekundami'
- x_seconds:
- one: 'sekundou'
- other: '{{count}} sekundami'
- less_than_x_minutes:
- one: 'pred necelou minútou'
- other: 'pred ani nie {{count}} minútami'
- x_minutes:
- one: 'minútou'
- other: '{{count}} minútami'
- about_x_hours:
- one: 'asi hodinou'
- other: 'asi {{count}} hodinami'
- x_days:
- one: '24 hodinami'
- other: '{{count}} dňami'
- about_x_months:
- one: 'asi mesiacom'
- other: 'asi {{count}} mesiacmi'
- x_months:
- one: 'mesiacom'
- other: '{{count}} mesiacmi'
- about_x_years:
- one: 'asi rokom'
- other: 'asi {{count}} rokmi'
- over_x_years:
- one: 'pred viac ako rokom'
- other: 'viac ako {{count}} rokmi'
-
- # ActiveRecord validation messages
- activerecord:
- errors:
- messages:
- inclusion: "nie je v zozname povolených hodnôt"
- exclusion: "je vyhradené pre iný účel"
- invalid: "nie je platná hodnota"
- confirmation: "nebolo potvrdené"
- accepted: "musí byť potvrdené"
- empty: "nesmie byť prázdný/é"
- blank: "je povinná položka"
- too_long: "je príliš dlhá/ý (max. {{count}} znakov)"
- too_short: "je príliš krátký/á (min. {{count}} znakov)"
- wrong_length: "nemá správnu dĺžku (očakáva sa {{count}} znakov)"
- taken: "sa už nachádza v databáze"
- not_a_number: "nie je číslo"
- greater_than: "musí byť väčšíe ako {{count}}"
- greater_than_or_equal_to: "musí byť väčšie alebo rovnaké ako {{count}}"
- equal_to: "sa musí rovnať {{count}}"
- less_than: "musí byť menšie ako {{count}}"
- less_than_or_equal_to: "musí byť menšie ako {{count}}"
- odd: "musí byť nepárne číslo"
- even: "musí byť párne číslo"
- template:
- header:
- one: "Pri ukladaní objektu {{model}} došlo k chybám a nebolo možné objekt uložiť"
- other: "Pri ukladaní objektu {{model}} došlo ku {{count}} chybe/ám a nebolo možné objekt uložiť"
- body: "Nasledujúce polia obsahujú chybne vyplnené údaje:"
+# Sample localization file for English. Add more files in this directory for other locales.
+# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+# Slovak translations for Ruby on Rails (inspired by the Czech localization - thanx to Karel Minařík)
+# by Jozef Fulop (jofi-rails@silake.com)
+
+sk:
+ # ActiveSupport
+ support:
+ array:
+ words_connector: ', '
+ two_words_connector: ' a '
+ last_word_connector: ' a '
+
+ # Date
+ date:
+ formats:
+ default: "%d. %m. %Y"
+ short: "%d %b"
+ long: "%d. %B %Y"
+ day_names: [Nedeľa, Pondelok, Utorok, Streda, Štvrtok, Piatok, Sobota]
+ abbr_day_names: [Ne, Po, Ut, St, Št, Pi, So]
+ month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December]
+ abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec]
+ order: [:day, :month, :year]
+
+ # Time
+ time:
+ formats:
+ default: "%a %d. %B %Y %H:%M %z"
+ short: "%d. %m. %H:%M"
+ long: "%A %d. %B %Y %H:%M"
+ am: 'dopoludnia'
+ pm: 'popoludní'
+
+ # Numbers
+ number:
+ format:
+ precision: 3
+ separator: '.'
+ delimiter: ','
+ currency:
+ format:
+ unit: '€'
+ precision: 2
+ format: '%n %u'
+ separator: ","
+ delimiter: " "
+ human:
+ format:
+ precision: 1
+ delimiter: ''
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ other: "B"
+ one: "B"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+ percentage:
+ format:
+ delimiter: ''
+ precision:
+ format:
+ delimiter: ''
+
+ # Distance of time ... helper
+ datetime:
+ prompts:
+ second: "Sekunda"
+ minute: "Minúta"
+ hour: "Hodina"
+ day: "Deň"
+ month: "Mesiac"
+ year: "Rok"
+ distance_in_words:
+ half_a_minute: 'pol minutou'
+ less_than_x_seconds:
+ one: 'asi pred sekundou'
+ other: 'asi pred {{count}} sekundami'
+ x_seconds:
+ one: 'sekundou'
+ other: '{{count}} sekundami'
+ less_than_x_minutes:
+ one: 'pred necelou minútou'
+ other: 'pred ani nie {{count}} minútami'
+ x_minutes:
+ one: 'minútou'
+ other: '{{count}} minútami'
+ about_x_hours:
+ one: 'asi hodinou'
+ other: 'asi {{count}} hodinami'
+ x_days:
+ one: '24 hodinami'
+ other: '{{count}} dňami'
+ about_x_months:
+ one: 'asi mesiacom'
+ other: 'asi {{count}} mesiacmi'
+ x_months:
+ one: 'mesiacom'
+ other: '{{count}} mesiacmi'
+ about_x_years:
+ one: 'asi rokom'
+ other: 'asi {{count}} rokmi'
+ over_x_years:
+ one: 'pred viac ako rokom'
+ other: 'viac ako {{count}} rokmi'
+
+ # ActiveRecord validation messages
+ activerecord:
+ errors:
+ messages:
+ inclusion: "nie je v zozname povolených hodnôt"
+ exclusion: "je vyhradené pre iný účel"
+ invalid: "nie je platná hodnota"
+ confirmation: "nebolo potvrdené"
+ accepted: "musí byť potvrdené"
+ empty: "nesmie byť prázdný/é"
+ blank: "je povinná položka"
+ too_long: "je príliš dlhá/ý (max. {{count}} znakov)"
+ too_short: "je príliš krátký/á (min. {{count}} znakov)"
+ wrong_length: "nemá správnu dĺžku (očakáva sa {{count}} znakov)"
+ taken: "sa už nachádza v databáze"
+ not_a_number: "nie je číslo"
+ greater_than: "musí byť väčšíe ako {{count}}"
+ greater_than_or_equal_to: "musí byť väčšie alebo rovnaké ako {{count}}"
+ equal_to: "sa musí rovnať {{count}}"
+ less_than: "musí byť menšie ako {{count}}"
+ less_than_or_equal_to: "musí byť menšie ako {{count}}"
+ odd: "musí byť nepárne číslo"
+ even: "musí byť párne číslo"
+ template:
+ header:
+ one: "Pri ukladaní objektu {{model}} došlo k chybám a nebolo možné objekt uložiť"
+ other: "Pri ukladaní objektu {{model}} došlo ku {{count}} chybe/ám a nebolo možné objekt uložiť"
+ body: "Nasledujúce polia obsahujú chybne vyplnené údaje:"
diff --git a/vendor/plugins/validates_email_format_of/MIT-LICENSE b/vendor/plugins/validates_email_format_of/MIT-LICENSE
index 1bae24d25..c94752595 100644
--- a/vendor/plugins/validates_email_format_of/MIT-LICENSE
+++ b/vendor/plugins/validates_email_format_of/MIT-LICENSE
@@ -1,20 +1,20 @@
-Copyright (c) 2006 Alex Dunae
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+Copyright (c) 2006 Alex Dunae
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/plugins/validates_email_format_of/rails/init.rb b/vendor/plugins/validates_email_format_of/rails/init.rb
index a30177232..bdc8b5794 100644
--- a/vendor/plugins/validates_email_format_of/rails/init.rb
+++ b/vendor/plugins/validates_email_format_of/rails/init.rb
@@ -1 +1 @@
-require 'validates_email_format_of'
+require 'validates_email_format_of'