diff --git a/bin/csv-filter b/bin/csv-filter index 3b830df0..63329a36 100755 --- a/bin/csv-filter +++ b/bin/csv-filter @@ -57,6 +57,11 @@ parser.on('-c', '--col-sep=SEPARATOR', options[:col_sep] = value end +parser.on('-q', '--quote-char=CHAR', + 'Quote character.') do |value| + options[:quote_char] = value +end + begin parser.parse! rescue OptionParser::InvalidOption diff --git a/test/csv/test_csv_filter.rb b/test/csv/test_csv_filter.rb index 2722806c..f5793781 100644 --- a/test/csv/test_csv_filter.rb +++ b/test/csv/test_csv_filter.rb @@ -137,4 +137,19 @@ def test_option_col_sep assert_equal(["aaa.bbb.ccc\nddd.eee.fff\n", ""], run_csv_filter(csv, "--col-sep=:", "--output-col-sep=.")) end + + def test_option_quote_char + quote_char = "'" + csv = CSV.generate(quote_char: quote_char) do |csv| + csv << ['foo', 0] + csv << ["'bar'", 1] + csv << ['"baz"', 2] + end + assert_equal(["foo,0\n'''bar''',1\n\"baz\",2\n", ""], + run_csv_filter(csv, "--quote-char=:")) + assert_equal(["foo,0\n'''bar''',1\n\"\"\"baz\"\"\",2\n", ""], + run_csv_filter(csv, "--input-quote-char=:")) + assert_equal(["foo,0\n'''bar''',1\nbaz,2\n", ""], + run_csv_filter(csv, "--output-quote-char=:")) + end end