aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/getoptlong.rb20
-rw-r--r--spec/rubyspec/library/getoptlong/shared/get.rb6
2 files changed, 16 insertions, 10 deletions
diff --git a/lib/getoptlong.rb b/lib/getoptlong.rb
index 348b7851cf..ff7674f1cb 100644
--- a/lib/getoptlong.rb
+++ b/lib/getoptlong.rb
@@ -310,7 +310,7 @@ class GetoptLong
#
next if i == argument_flag
begin
- if !i.is_a?(String) || i !~ /^-([^-]|-.+)$/
+ if !i.is_a?(String) || i !~ /\A-([^-]|-.+)\z/
raise ArgumentError, "an invalid option `#{i}'"
end
if (@canonical_names.include?(i))
@@ -447,7 +447,7 @@ class GetoptLong
terminate
return nil
elsif @ordering == PERMUTE
- while 0 < ARGV.length && ARGV[0] !~ /^-./
+ while 0 < ARGV.length && ARGV[0] !~ /\A-./
@non_option_arguments.push(ARGV.shift)
end
if ARGV.length == 0
@@ -456,7 +456,7 @@ class GetoptLong
end
argument = ARGV.shift
elsif @ordering == REQUIRE_ORDER
- if (ARGV[0] !~ /^-./)
+ if (ARGV[0] !~ /\A-./)
terminate
return nil
end
@@ -477,7 +477,7 @@ class GetoptLong
#
# Check for long and short options.
#
- if argument =~ /^(--[^=]+)/ && @rest_singles.length == 0
+ if argument =~ /\A(--[^=]+)/ && @rest_singles.length == 0
#
# This is a long style option, which start with `--'.
#
@@ -507,7 +507,7 @@ class GetoptLong
# Check an argument to the option.
#
if @argument_flags[option_name] == REQUIRED_ARGUMENT
- if argument =~ /=(.*)$/
+ if argument =~ /=(.*)/m
option_argument = $1
elsif 0 < ARGV.length
option_argument = ARGV.shift
@@ -516,19 +516,19 @@ class GetoptLong
"option `#{argument}' requires an argument")
end
elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
- if argument =~ /=(.*)$/
+ if argument =~ /=(.*)/m
option_argument = $1
- elsif 0 < ARGV.length && ARGV[0] !~ /^-./
+ elsif 0 < ARGV.length && ARGV[0] !~ /\A-./
option_argument = ARGV.shift
else
option_argument = ''
end
- elsif argument =~ /=(.*)$/
+ elsif argument =~ /=(.*)/m
set_error(NeedlessArgument,
"option `#{option_name}' doesn't allow an argument")
end
- elsif argument =~ /^(-(.))(.*)/
+ elsif argument =~ /\A(-(.))(.*)/m
#
# This is a short style option, which start with `-' (not `--').
# Short options may be catenated (e.g. `-l -g' is equivalent to
@@ -555,7 +555,7 @@ class GetoptLong
if 0 < @rest_singles.length
option_argument = @rest_singles
@rest_singles = ''
- elsif 0 < ARGV.length && ARGV[0] !~ /^-./
+ elsif 0 < ARGV.length && ARGV[0] !~ /\A-./
option_argument = ARGV.shift
else
option_argument = ''
diff --git a/spec/rubyspec/library/getoptlong/shared/get.rb b/spec/rubyspec/library/getoptlong/shared/get.rb
index 276da5abb4..c6e5b44368 100644
--- a/spec/rubyspec/library/getoptlong/shared/get.rb
+++ b/spec/rubyspec/library/getoptlong/shared/get.rb
@@ -52,4 +52,10 @@ describe :getoptlong_get, shared: true do
lambda { @opts.send(@method) }.should raise_error(GetoptLong::MissingArgument)
end
end
+
+ it "returns multiline argument" do
+ argv [ "--size=\n10k\n" ] do
+ @opts.send(@method).should == [ "--size", "\n10k\n" ]
+ end
+ end
end