Skip to content
Permalink
Browse files

Replace map.flatten with flat_map in actionpack

  • Loading branch information...
sferik committed Mar 4, 2014
1 parent ffcc617 commit 817fe31196dd59ee31f71ef1740122b6759cf16d
@@ -27,7 +27,7 @@ def transition_table
marked[s] = true # mark s

s.group_by { |state| symbol(state) }.each do |sym, ps|
u = ps.map { |l| followpos(l) }.flatten
u = ps.flat_map { |l| followpos(l) }
next if u.empty?

if u.uniq == [DUMMY]
@@ -90,7 +90,7 @@ def firstpos(node)
firstpos(node.left)
end
when Nodes::Or
node.children.map { |c| firstpos(c) }.flatten.uniq
node.children.flat_map { |c| firstpos(c) }.uniq
when Nodes::Unary
firstpos(node.left)
when Nodes::Terminal
@@ -105,7 +105,7 @@ def lastpos(node)
when Nodes::Star
firstpos(node.left)
when Nodes::Or
node.children.map { |c| lastpos(c) }.flatten.uniq
node.children.flat_map { |c| lastpos(c) }.uniq
when Nodes::Cat
if nullable?(node.right)
lastpos(node.left) | lastpos(node.right)
@@ -31,7 +31,7 @@ def simulate(string)

return if acceptance_states.empty?

memos = acceptance_states.map { |x| tt.memo(x) }.flatten.compact
memos = acceptance_states.flat_map { |x| tt.memo(x) }.compact

MatchData.new(memos)
end
@@ -114,8 +114,8 @@ def []=(from, to, sym)
end

def states
ss = @string_states.keys + @string_states.values.map(&:values).flatten
rs = @regexp_states.keys + @regexp_states.values.map(&:values).flatten
ss = @string_states.keys + @string_states.values.flat_map(&:values)
rs = @regexp_states.keys + @regexp_states.values.flat_map(&:values)
(ss + rs).uniq
end

@@ -143,11 +143,11 @@ def states_hash_for(sym)
def move_regexp(t, a)
return [] if t.empty?

t.map { |s|
t.flat_map { |s|
if states = @regexp_states[s]
states.map { |re, v| re === a ? v : nil }
end
}.flatten.compact.uniq
}.compact.uniq
end

def move_string(t, a)
@@ -16,9 +16,9 @@ def to_dot
# end
# " #{n.object_id} [label=\"#{label}\", shape=box];"
#}
#memo_edges = memos.map { |k, memos|
#memo_edges = memos.flat_map { |k, memos|
# (memos || []).map { |v| " #{k} -> #{v.object_id};" }
#}.flatten.uniq
#}.uniq

<<-eodot
digraph nfa {
@@ -34,7 +34,7 @@ def simulate(string)

return if acceptance_states.empty?

memos = acceptance_states.map { |x| tt.memo(x) }.flatten.compact
memos = acceptance_states.flat_map { |x| tt.memo(x) }.compact

MatchData.new(memos)
end
@@ -42,7 +42,7 @@ def merge(left, right)
end

def states
(@table.keys + @table.values.map(&:keys).flatten).uniq
(@table.keys + @table.values.flat_map(&:keys)).uniq
end

# Returns a generalized transition graph with reduced states. The states
@@ -93,7 +93,7 @@ def generalized_table
# Returns set of NFA states to which there is a transition on ast symbol
# +a+ from some state +s+ in +t+.
def following_states(t, a)
Array(t).map { |s| inverted[s][a] }.flatten.uniq
Array(t).flat_map { |s| inverted[s][a] }.uniq
end

# Returns set of NFA states to which there is a transition on ast symbol
@@ -107,7 +107,7 @@ def move(t, a)
end

def alphabet
inverted.values.map(&:keys).flatten.compact.uniq.sort_by { |x| x.to_s }
inverted.values.flat_map(&:keys).compact.uniq.sort_by { |x| x.to_s }
end

# Returns a set of NFA states reachable from some NFA state +s+ in set
@@ -131,9 +131,9 @@ def eclosure(t)
end

def transitions
@table.map { |to, hash|
@table.flat_map { |to, hash|
hash.map { |from, sym| [from, sym, to] }
}.flatten(1)
}
end

private
@@ -53,9 +53,9 @@ def required_names
end

def optional_names
@optional_names ||= spec.grep(Nodes::Group).map { |group|
@optional_names ||= spec.grep(Nodes::Group).flat_map { |group|
group.grep(Nodes::Symbol)
}.flatten.map { |n| n.name }.uniq
}.map { |n| n.name }.uniq
end

class RegexpOffsets < Journey::Visitors::Visitor # :nodoc:

0 comments on commit 817fe31

Please sign in to comment.
You can’t perform that action at this time.