Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #68 from owst/allow_options_when_parsing_strings
Allow options to be passed when processing a String pattern
- Loading branch information
Showing
6 changed files
with
114 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
require 'spec_helper' | ||
|
||
RSpec.describe('passing options to parse') do | ||
it 'raises if if parsing from a Regexp and options are passed' do | ||
expect { RP.parse(/a+/, options: ::Regexp::EXTENDED) }.to raise_error( | ||
ArgumentError, | ||
'options cannot be supplied unless parsing a String' | ||
) | ||
end | ||
|
||
it 'sets options if parsing from a String' do | ||
root = RP.parse('a+', options: ::Regexp::MULTILINE | ::Regexp::EXTENDED) | ||
|
||
expect(root.options).to eq(m: true, x: true) | ||
end | ||
|
||
it 'allows options to not be supplied when parsing from a Regexp' do | ||
root = RP.parse(/a+/ix) | ||
|
||
expect(root.options).to eq(i: true, x: true) | ||
end | ||
|
||
it 'has an empty option-hash when parsing from a String and passing no options' do | ||
root = RP.parse('a+') | ||
|
||
expect(root.options).to be_empty | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
require 'spec_helper' | ||
|
||
RSpec.describe('passing options to scan') do | ||
def expect_type_tokens(tokens, type_tokens) | ||
expect(tokens.map { |type, token, *| [type, token] }).to eq(type_tokens) | ||
end | ||
|
||
it 'raises if if scanning from a Regexp and options are passed' do | ||
expect { RS.scan(/a+/, options: ::Regexp::EXTENDED) }.to raise_error( | ||
ArgumentError, | ||
'options cannot be supplied unless scanning a String' | ||
) | ||
end | ||
|
||
it 'sets free_spacing based on options if scanning from a String' do | ||
expect_type_tokens( | ||
RS.scan('a+#c', options: ::Regexp::MULTILINE | ::Regexp::EXTENDED), | ||
[ | ||
%i[literal literal], | ||
%i[quantifier one_or_more], | ||
%i[free_space comment] | ||
] | ||
) | ||
end | ||
|
||
it 'does not set free_spacing if scanning from a String and passing no options' do | ||
expect_type_tokens( | ||
RS.scan('a+#c'), | ||
[ | ||
%i[literal literal], | ||
%i[quantifier one_or_more], | ||
%i[literal literal] | ||
] | ||
) | ||
end | ||
end |