未验证 提交 de252071 编写于 作者: E Eugene Kenny 提交者: GitHub

Merge pull request #39925 from composerinteralia/set-star-regexp-on-initialize

Build symbols descending from stars with regexp
......@@ -79,9 +79,10 @@ class Symbol < Terminal # :nodoc:
attr_reader :name
DEFAULT_EXP = /[^\.\/\?]+/
def initialize(left)
super
@regexp = DEFAULT_EXP
GREEDY_EXP = /(.+)/
def initialize(left, regexp = DEFAULT_EXP)
super(left)
@regexp = regexp
@name = -left.tr("*:", "")
end
......
#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.4.14
# This file is automatically generated by Racc 1.4.16
# from Racc grammar file "".
#
require "racc/parser.rb"
require 'racc/parser.rb'
# :stopdoc:
......@@ -163,7 +163,7 @@ def _reduce_9(val, _values)
end
def _reduce_10(val, _values)
Star.new(Symbol.new(val.last))
Star.new(Symbol.new(val.last, Symbol::GREEDY_EXP))
end
# reduce 11 omitted
......@@ -196,4 +196,4 @@ def _reduce_none(val, _values)
end # class Parser
end # module Journey
end # module ActionDispatch
end # module ActionDispatch
......@@ -21,7 +21,7 @@ rule
| expression OR or { Or.new([val.first, val.last]) }
;
star
: STAR { Star.new(Symbol.new(val.last)) }
: STAR { Star.new(Symbol.new(val.last, Symbol::GREEDY_EXP)) }
;
terminal
: symbol
......
......@@ -41,14 +41,9 @@ def eager_load!
end
def ast
@spec.each do |node|
if node.symbol?
@spec.find_all(&:symbol?).each do |node|
re = @requirements[node.to_sym]
node.regexp = re if re
elsif node.star?
node = node.left
node.regexp = @requirements[node.to_sym] || /(.+)/
end
end
@spec
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册