regexp/built_patterns.rb
tests/_examples/regexp/built_patterns.rb in the metorex repository.
# `Regexp.new` reads flags written as a number or as the letters a literal
# carries, refuses a pattern Ruby refuses, and reports the encoding the
# pattern is read in.
p Regexp.new("hi", Regexp::IGNORECASE).options
p Regexp.new("hi", "imx").options
p Regexp.new("hi").source.encoding
p Regexp.new("\u{3042}").encoding
begin
Regexp.new "hi", "e"
rescue ArgumentError => problem
puts problem.message
end
begin
Regexp.new "^[$"
rescue RegexpError => problem
puts problem.message
end
begin
Regexp.new :symbol
rescue TypeError => problem
puts problem.message
end
# A pattern written as a literal stays frozen however many built ones came
# and went before it.
100.times { Regexp.new "x" }
p(/after/.frozen?)
p Regexp.new("after").frozen?
Output:
1
7
#<Encoding:US-ASCII>
#<Encoding:UTF-8>
unknown regexp option: e
premature end of char-class: /^[$/
no implicit conversion of Symbol into String
true
false