From 89ca46436db6e501790bf7c71cd9dd70569463b8 Mon Sep 17 00:00:00 2001 From: Lee Jarvis Date: Thu, 27 May 2021 19:08:38 +0100 Subject: Add support for --opt="" for blank arguments This is especially useful when your default option value is a non-blank value and you want users to be able to overwrite it with a blank value Closes #266 --- lib/slop/parser.rb | 2 +- test/parser_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/slop/parser.rb b/lib/slop/parser.rb index 00b7e33..49d0230 100644 --- a/lib/slop/parser.rb +++ b/lib/slop/parser.rb @@ -52,7 +52,7 @@ module Slop # support `foo=bar` orig_flag = flag.dup - if match = flag.match(/([^=]+)=([^=]+)/) + if match = flag.match(/([^=]+)=([^=]*)/) flag, arg = match.captures end diff --git a/test/parser_test.rb b/test/parser_test.rb index ef09714..b729ee8 100644 --- a/test/parser_test.rb +++ b/test/parser_test.rb @@ -1,4 +1,5 @@ require 'test_helper' +require 'shellwords' describe Slop::Parser do before do @@ -28,6 +29,15 @@ describe Slop::Parser do assert_equal %w(=), @result.args end + it "parses flag=''" do + @options.string "--str" + @options.array "--arr", default: ["array"] + @result.parser.parse %(--str="" --arr="").shellsplit + + assert_equal "", @result[:str] + assert_equal [], @result[:arr] + end + it "parses arg with leading -" do @options.string "-t", "--text" @result.parser.parse %w(--name=bob --text --sometext) -- cgit v1.2.1