mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Revert "Use flat_map { } instead of map {}.flatten"
This reverts commit abf8de8551
.
We should take a deeper look to those cases flat_map doesn't do deep
flattening.
irb(main):002:0> [[[1,3], [1,2]]].map{|i| i}.flatten
=> [1, 3, 1, 2]
irb(main):003:0> [[[1,3], [1,2]]].flat_map{|i| i}
=> [[1, 3], [1, 2]]
This commit is contained in:
parent
abf8de8551
commit
a0613ad8a9
17 changed files with 26 additions and 26 deletions
|
@ -102,9 +102,9 @@ module ActionDispatch
|
|||
end
|
||||
|
||||
def formatted_routes_for_engines
|
||||
@engines.flat_map do |name, routes|
|
||||
@engines.map do |name, routes|
|
||||
["\nRoutes for #{name}:"] + formatted_routes(routes)
|
||||
end
|
||||
end.flatten
|
||||
end
|
||||
|
||||
def formatted_routes(routes)
|
||||
|
|
|
@ -35,12 +35,12 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def columns
|
||||
join_parts.flat_map { |join_part|
|
||||
join_parts.collect { |join_part|
|
||||
table = join_part.aliased_table
|
||||
join_part.column_names_with_alias.collect{ |column_name, aliased_name|
|
||||
table[column_name].as Arel.sql(aliased_name)
|
||||
}
|
||||
}
|
||||
}.flatten
|
||||
end
|
||||
|
||||
def instantiate(rows)
|
||||
|
|
|
@ -106,7 +106,7 @@ module ActiveRecord
|
|||
def preload_hash(association)
|
||||
association.each do |parent, child|
|
||||
Preloader.new(records, parent, preload_scope).run
|
||||
Preloader.new(records.flat_map { |record| record.send(parent) }, child).run
|
||||
Preloader.new(records.map { |record| record.send(parent) }.flatten, child).run
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ module ActiveRecord
|
|||
# Some databases impose a limit on the number of ids in a list (in Oracle it's 1000)
|
||||
# Make several smaller queries if necessary or make one query if the adapter supports it
|
||||
sliced = owner_keys.each_slice(model.connection.in_clause_length || owner_keys.size)
|
||||
records = sliced.flat_map { |slice| records_for(slice).to_a }
|
||||
records = sliced.map { |slice| records_for(slice).to_a }.flatten
|
||||
end
|
||||
|
||||
# Each record may have multiple owners, and vice-versa
|
||||
|
|
|
@ -448,7 +448,7 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def bulk_change_table(table_name, operations) #:nodoc:
|
||||
sqls = operations.flat_map do |command, args|
|
||||
sqls = operations.map do |command, args|
|
||||
table, arguments = args.shift, args
|
||||
method = :"#{command}_sql"
|
||||
|
||||
|
@ -457,7 +457,7 @@ module ActiveRecord
|
|||
else
|
||||
raise "Unknown method called : #{method}(#{arguments.inspect})"
|
||||
end
|
||||
end.join(", ")
|
||||
end.flatten.join(", ")
|
||||
|
||||
execute("ALTER TABLE #{quote_table_name(table_name)} #{sqls}")
|
||||
end
|
||||
|
|
|
@ -99,7 +99,7 @@ module ActiveRecord
|
|||
|
||||
def observed_classes
|
||||
klasses = super
|
||||
klasses + klasses.flat_map { |klass| klass.descendants }
|
||||
klasses + klasses.map { |klass| klass.descendants }.flatten
|
||||
end
|
||||
|
||||
def add_observer!(klass)
|
||||
|
|
|
@ -782,7 +782,7 @@ module ActiveRecord
|
|||
def reverse_sql_order(order_query)
|
||||
order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?
|
||||
|
||||
order_query.flat_map do |o|
|
||||
order_query.map do |o|
|
||||
case o
|
||||
when Arel::Nodes::Ordering
|
||||
o.reverse
|
||||
|
@ -794,7 +794,7 @@ module ActiveRecord
|
|||
else
|
||||
o
|
||||
end
|
||||
end
|
||||
end.flatten
|
||||
end
|
||||
|
||||
def array_of_strings?(o)
|
||||
|
|
|
@ -138,7 +138,7 @@ class AssociationCallbacksTest < ActiveRecord::TestCase
|
|||
activerecord.reload
|
||||
assert activerecord.developers_with_callbacks.size == 2
|
||||
end
|
||||
log_array = activerecord.developers_with_callbacks.flat_map {|d| ["before_removing#{d.id}","after_removing#{d.id}"]}.sort
|
||||
log_array = activerecord.developers_with_callbacks.collect {|d| ["before_removing#{d.id}","after_removing#{d.id}"]}.flatten.sort
|
||||
assert activerecord.developers_with_callbacks.clear
|
||||
assert_equal log_array, activerecord.developers_log.sort
|
||||
end
|
||||
|
|
|
@ -597,7 +597,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
|
|||
sarah = Person.create!(:first_name => 'Sarah', :primary_contact_id => people(:susan).id, :gender => 'F', :number1_fan_id => 1)
|
||||
john = Person.create!(:first_name => 'John', :primary_contact_id => sarah.id, :gender => 'M', :number1_fan_id => 1)
|
||||
assert_equal sarah.agents, [john]
|
||||
assert_equal people(:susan).agents.flat_map(&:agents), people(:susan).agents_of_agents
|
||||
assert_equal people(:susan).agents.map(&:agents).flatten, people(:susan).agents_of_agents
|
||||
end
|
||||
|
||||
def test_associate_existing_with_nonstandard_primary_key_on_belongs_to
|
||||
|
|
|
@ -50,9 +50,9 @@ class TestAutosaveAssociationsInGeneral < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
def callbacks_for_model(model)
|
||||
model.instance_variables.grep(/_callbacks$/).flat_map do |ivar|
|
||||
model.instance_variables.grep(/_callbacks$/).map do |ivar|
|
||||
model.instance_variable_get(ivar)
|
||||
end
|
||||
end.flatten
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -219,9 +219,9 @@ module ActiveSupport
|
|||
# encoding is entirely CP1252 or ISO-8859-1.
|
||||
def tidy_bytes(string, force = false)
|
||||
if force
|
||||
return string.unpack("C*").flat_map do |b|
|
||||
return string.unpack("C*").map do |b|
|
||||
tidy_byte(b)
|
||||
end.compact.pack("C*").unpack("U*").pack("U*")
|
||||
end.flatten.compact.pack("C*").unpack("U*").pack("U*")
|
||||
end
|
||||
|
||||
bytes = string.unpack("C*")
|
||||
|
|
|
@ -17,7 +17,7 @@ module RailsGuides
|
|||
end
|
||||
|
||||
def documents_flat
|
||||
documents_by_section.flat_map {|section| section['documents']}
|
||||
documents_by_section.map {|section| section['documents']}.flatten
|
||||
end
|
||||
|
||||
def finished_documents(documents)
|
||||
|
|
|
@ -517,7 +517,7 @@ ActionController::TestCase.class_eval do
|
|||
|
||||
# now redefine process and delegate to original_process
|
||||
def process(action, params=nil, session=nil, flash=nil, http_method='GET')
|
||||
params = Hash[*params.flat_map {|k, v| [k, v.to_s]}]
|
||||
params = Hash[*params.map {|k, v| [k, v.to_s]}.flatten]
|
||||
original_process(action, params, session, flash, http_method)
|
||||
end
|
||||
end
|
||||
|
@ -530,7 +530,7 @@ That technique has a risk, it could be the case that `:original_process` was tak
|
|||
```ruby
|
||||
ActionController::TestCase.class_eval do
|
||||
def process_with_stringified_params(...)
|
||||
params = Hash[*params.flat_map {|k, v| [k, v.to_s]}]
|
||||
params = Hash[*params.map {|k, v| [k, v.to_s]}.flatten]
|
||||
process_without_stringified_params(action, params, session, flash, http_method)
|
||||
end
|
||||
alias_method :process_without_stringified_params, :process
|
||||
|
@ -543,7 +543,7 @@ The method `alias_method_chain` provides a shortcut for that pattern:
|
|||
```ruby
|
||||
ActionController::TestCase.class_eval do
|
||||
def process_with_stringified_params(...)
|
||||
params = Hash[*params.flat_map {|k, v| [k, v.to_s]}]
|
||||
params = Hash[*params.map {|k, v| [k, v.to_s]}.flatten]
|
||||
process_without_stringified_params(action, params, session, flash, http_method)
|
||||
end
|
||||
alias_method_chain :process, :stringified_params
|
||||
|
|
|
@ -184,7 +184,7 @@ module Rails
|
|||
# generate(:authenticated, "user session")
|
||||
def generate(what, *args)
|
||||
log :generate, what
|
||||
argument = args.flat_map {|arg| arg.to_s }.join(" ")
|
||||
argument = args.map {|arg| arg.to_s }.flatten.join(" ")
|
||||
|
||||
in_root { run_ruby_script("script/rails generate #{what} #{argument}", :verbose => false) }
|
||||
end
|
||||
|
|
|
@ -103,7 +103,7 @@ module Rails
|
|||
all_paths.each do |path|
|
||||
if path.send(constraint)
|
||||
paths = path.existent
|
||||
paths -= path.children.flat_map { |p| p.send(constraint) ? [] : p.existent }
|
||||
paths -= path.children.map { |p| p.send(constraint) ? [] : p.existent }.flatten
|
||||
all.concat(paths)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -100,7 +100,7 @@ class SourceAnnotationExtractor
|
|||
# Prints the mapping from filenames to annotations in +results+ ordered by filename.
|
||||
# The +options+ hash is passed to each annotation's +to_s+.
|
||||
def display(results, options={})
|
||||
options[:indent] = results.flat_map { |f, a| a.map(&:line) }.max.to_s.size
|
||||
options[:indent] = results.map { |f, a| a.map(&:line) }.flatten.max.to_s.size
|
||||
results.keys.sort.each do |file|
|
||||
puts "#{file}:"
|
||||
results[file].each do |note|
|
||||
|
|
|
@ -6,7 +6,7 @@ TEST_CHANGES_SINCE = Time.now - 600
|
|||
|
||||
# Look up tests for recently modified sources.
|
||||
def recent_tests(source_pattern, test_path, touched_since = 10.minutes.ago)
|
||||
FileList[source_pattern].flat_map do |path|
|
||||
FileList[source_pattern].map do |path|
|
||||
if File.mtime(path) > touched_since
|
||||
tests = []
|
||||
source_dir = File.dirname(path).split("/")
|
||||
|
@ -26,7 +26,7 @@ def recent_tests(source_pattern, test_path, touched_since = 10.minutes.ago)
|
|||
return tests
|
||||
|
||||
end
|
||||
end.compact
|
||||
end.flatten.compact
|
||||
end
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue