class AtCoderFriends::Parser::InputFormatMatcher
holds regular expressions and matches it with input format string
Attributes
container[R]
delim[R]
gen_names[R]
gen_pat2[R]
item[R]
ix0[R]
names[R]
pat[R]
pat2[R]
size[R]
Public Class Methods
new( container: nil, item: nil, pat: nil, gen_names: nil, gen_pat2: nil )
click to toggle source
# File lib/at_coder_friends/parser/input_format.rb, line 154 def initialize( container: nil, item: nil, pat: nil, gen_names: nil, gen_pat2: nil ) @container = container @item = item @pat = pat @gen_names = gen_names @gen_pat2 = gen_pat2 end
Public Instance Methods
match(str)
click to toggle source
# File lib/at_coder_friends/parser/input_format.rb, line 165 def match(str) str, dlm = extract_delim(str) return false unless (m1 = pat.match(str)) @names = gen_names.call(m1) @pat2 = gen_pat2&.call(names) @size = m1.names.include?('sz') && m1['sz'] || '' @ix0 = m1.names.include?('ix0') && m1['ix0'] || size @delim = dlm true end
match2(str)
click to toggle source
# File lib/at_coder_friends/parser/input_format.rb, line 177 def match2(str) return false unless pat2 str, _dlm = extract_delim(str) return true if /\A\.+\z/ =~ str return false unless (m2 = pat2.match(str)) m2.names.include?('sz') && @size = m2['sz'] true end
to_inpdef()
click to toggle source
# File lib/at_coder_friends/parser/input_format.rb, line 188 def to_inpdef Problem::InputFormat.new( container: container, item: item, names: normalize_names(names), size: normalize_size(container, size, ix0), delim: delim ) end