summaryrefslogtreecommitdiff
path: root/spec/rubyspec/language/regexp/modifiers_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/language/regexp/modifiers_spec.rb')
-rw-r--r--spec/rubyspec/language/regexp/modifiers_spec.rb110
1 files changed, 0 insertions, 110 deletions
diff --git a/spec/rubyspec/language/regexp/modifiers_spec.rb b/spec/rubyspec/language/regexp/modifiers_spec.rb
deleted file mode 100644
index 03dec26f3f..0000000000
--- a/spec/rubyspec/language/regexp/modifiers_spec.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../../fixtures/classes', __FILE__)
-
-describe "Regexps with modifers" do
- it "supports /i (case-insensitive)" do
- /foo/i.match("FOO").to_a.should == ["FOO"]
- end
-
- it "supports /m (multiline)" do
- /foo.bar/m.match("foo\nbar").to_a.should == ["foo\nbar"]
- /foo.bar/.match("foo\nbar").should be_nil
- end
-
- it "supports /x (extended syntax)" do
- /\d +/x.match("abc123").to_a.should == ["123"] # Quantifiers can be separated from the expression they apply to
- end
-
- it "supports /o (once)" do
- 2.times do |i|
- /#{i}/o.should == /0/
- end
- end
-
- it "invokes substitutions for /o only once" do
- ScratchPad.record []
- o = Object.new
- def o.to_s
- ScratchPad << :to_s
- "class_with_to_s"
- end
- eval "2.times { /#{o}/o }"
- ScratchPad.recorded.should == [:to_s]
- end
-
- it "supports modifier combinations" do
- /foo/imox.match("foo").to_a.should == ["foo"]
- /foo/imoximox.match("foo").to_a.should == ["foo"]
-
- lambda { eval('/foo/a') }.should raise_error(SyntaxError)
- end
-
- it "supports (?imx-imx) (inline modifiers)" do
- /(?i)foo/.match("FOO").to_a.should == ["FOO"]
- /foo(?i)/.match("FOO").should be_nil
- # Interaction with /i
- /(?-i)foo/i.match("FOO").should be_nil
- /foo(?-i)/i.match("FOO").to_a.should == ["FOO"]
- # Multiple uses
- /foo (?i)bar (?-i)baz/.match("foo BAR baz").to_a.should == ["foo BAR baz"]
- /foo (?i)bar (?-i)baz/.match("foo BAR BAZ").should be_nil
-
- /(?m)./.match("\n").to_a.should == ["\n"]
- /.(?m)/.match("\n").should be_nil
- # Interaction with /m
- /(?-m)./m.match("\n").should be_nil
- /.(?-m)/m.match("\n").to_a.should == ["\n"]
- # Multiple uses
- /. (?m). (?-m)./.match(". \n .").to_a.should == [". \n ."]
- /. (?m). (?-m)./.match(". \n \n").should be_nil
-
- /(?x) foo /.match("foo").to_a.should == ["foo"]
- / foo (?x)/.match("foo").should be_nil
- # Interaction with /x
- /(?-x) foo /x.match("foo").should be_nil
- / foo (?-x)/x.match("foo").to_a.should == ["foo"]
- # Multiple uses
- /( foo )(?x)( bar )(?-x)( baz )/.match(" foo bar baz ").to_a.should == [" foo bar baz ", " foo ", "bar", " baz "]
- /( foo )(?x)( bar )(?-x)( baz )/.match(" foo barbaz").should be_nil
-
- # Parsing
- /(?i-i)foo/.match("FOO").should be_nil
- /(?ii)foo/.match("FOO").to_a.should == ["FOO"]
- /(?-)foo/.match("foo").to_a.should == ["foo"]
- lambda { eval('/(?o)/') }.should raise_error(SyntaxError)
- end
-
- it "supports (?imx-imx:expr) (scoped inline modifiers)" do
- /foo (?i:bar) baz/.match("foo BAR baz").to_a.should == ["foo BAR baz"]
- /foo (?i:bar) baz/.match("foo BAR BAZ").should be_nil
- /foo (?-i:bar) baz/i.match("foo BAR BAZ").should be_nil
-
- /. (?m:.) ./.match(". \n .").to_a.should == [". \n ."]
- /. (?m:.) ./.match(". \n \n").should be_nil
- /. (?-m:.) ./m.match("\n \n \n").should be_nil
-
- /( foo )(?x: bar )( baz )/.match(" foo bar baz ").to_a.should == [" foo bar baz ", " foo ", " baz "]
- /( foo )(?x: bar )( baz )/.match(" foo barbaz").should be_nil
- /( foo )(?-x: bar )( baz )/x.match("foo bar baz").to_a.should == ["foo bar baz", "foo", "baz"]
-
- # Parsing
- /(?i-i:foo)/.match("FOO").should be_nil
- /(?ii:foo)/.match("FOO").to_a.should == ["FOO"]
- /(?-:)foo/.match("foo").to_a.should == ["foo"]
- lambda { eval('/(?o:)/') }.should raise_error(SyntaxError)
- end
-
- it "supports . with /m" do
- # Basic matching
- /./m.match("\n").to_a.should == ["\n"]
- end
-
- it "supports ASII/Unicode modifiers" do
- eval('/(?a)[[:alpha:]]+/').match("a\u3042").to_a.should == ["a"]
- eval('/(?d)[[:alpha:]]+/').match("a\u3042").to_a.should == ["a\u3042"]
- eval('/(?u)[[:alpha:]]+/').match("a\u3042").to_a.should == ["a\u3042"]
- eval('/(?a)\w+/').match("a\u3042").to_a.should == ["a"]
- eval('/(?d)\w+/').match("a\u3042").to_a.should == ["a"]
- eval('/(?u)\w+/').match("a\u3042").to_a.should == ["a\u3042"]
- end
-end