summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--CHANGELOG.md14
-rw-r--r--README.md88
-rw-r--r--lib/slop.rb2
-rw-r--r--lib/slop/options.rb4
-rw-r--r--test/options_test.rb11
6 files changed, 30 insertions, 90 deletions
diff --git a/.travis.yml b/.travis.yml
index 5a30500..42041b4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,6 +20,7 @@ rvm:
- jruby-9.2.14.0
- jruby-head
- ruby-head
+ - truffleruby-head
jdk:
- openjdk8
notifications:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6fd1d58..ab46f71 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,20 @@
Changelog
=========
+v4.8.2 (2020-07-10)
+-------------------
+
+Bug fixes:
+ * Fix bug where separator position was messed up if using `help: false`
+ [#253](https://github.com/leejarvis/slop/issues/253)
+
+v4.8.1 (2020-03-31)
+-------------------
+
+Bug fixes:
+ * Fix keyword argument warning. [#251](https://github.com/leejarvis/slop/pull/251)
+
+
v4.8.0 (2020-01-17)
-------------------
diff --git a/README.md b/README.md
index 60c1e9a..97dd557 100644
--- a/README.md
+++ b/README.md
@@ -3,9 +3,6 @@ Slop
Slop is a simple option parser with an easy to remember syntax and friendly API.
-Version 4 of Slop is aimed at Ruby 2.0 or later. Please use
-[Version 3](https://github.com/leejarvis/slop/tree/v3) for Ruby 1.9 support.
-
[![Build Status](https://travis-ci.org/leejarvis/slop.svg?branch=master)](http://travis-ci.org/leejarvis/slop)
Installation
@@ -275,87 +272,4 @@ end
Commands
--------
-As of version 4, Slop does not have built in support for git-style subcommands.
-You can use version 3 of Slop (see `v3` branch).
-
-Upgrading from version 3
-------------------------
-
-Slop v4 is not backwards compatible. The code has been completely rewritten.
-If you're already using version 3 you *have* to update your code to use version 4.
-Here's an overview of the large changes:
-
-#### No more `instance_eval`
-
-Before:
-
-```ruby
-Slop.parse do
- on 'v', 'version' do
- puts VERSION
- end
-end
-```
-
-After:
-
-```ruby
-Slop.parse do |o|
- o.on '-v', '--version' do
- puts VERSION
- end
-end
-```
-
-#### No more `as` for option types
-
-Instead, the type is declared in the method call. Before:
-
-```ruby
-on 'port=', as: Integer
-```
-
-After:
-
-```ruby
-o.int '--port' # or integer
-```
-
-See the custom types section of the document.
-
-#### No more trailing `=`
-
-Instead, the "does this option expect an argument?" question is answered by
-the option type (i.e `on` and `bool` options do not expect arguments, all
-others do). They handle type conversion, too.
-
-#### Hyphens are required
-
-This was a hard decision to make, but you must provide prefixed hyphens when
-declaring your flags. This improves the implementation nicer and makes things
-much less ambiguous, which leads to less error prone code. It also means you
-can easily support single hyphen prefix for a long flag, i.e `-hostname` which
-you could not do before. It also means you can provide infinite flag aliases:
-`o.string '-f', '-x', '--foo', '--bar', 'this is insane'`
-
-#### Strict is now on by default
-
-v3 had a `strict` option. v4 has no such option. To suppress errors you can
-instead provide the `suppress_errors: true` option to Slop.
-
-#### No more parse!
-
-Where v3 has both `Slop.parse` and `Slop.parse!`, v4 only has `parse`. The
-former was used to decide whether Slop should or should not mutate the
-original args (usually ARGV). This is almost never what you want, and it
-can lead to confusion. Instead, `Slop::Result` provides an `arguments`
-methods:
-
-```ruby
-opts = Slop.parse do |o|
- o.string '--hostname', '...'
-end
-
-# ARGV is "hello --hostname foo bar"
-p opts.arguments #=> ["hello", "bar"]
-```
+Slop not longer has built in support for git-style subcommands.
diff --git a/lib/slop.rb b/lib/slop.rb
index adf5b8f..3d7a95c 100644
--- a/lib/slop.rb
+++ b/lib/slop.rb
@@ -6,7 +6,7 @@ require 'slop/types'
require 'slop/error'
module Slop
- VERSION = '4.8.0'
+ VERSION = '4.8.2'
# Parse an array of options (defaults to ARGV). Accepts an
# optional hash of configuration options and block.
diff --git a/lib/slop/options.rb b/lib/slop/options.rb
index 9a5f5cc..875fcfe 100644
--- a/lib/slop/options.rb
+++ b/lib/slop/options.rb
@@ -102,13 +102,13 @@ module Slop
str = config[:banner] ? "#{banner}\n" : ""
len = longest_flag_length
- options.select(&:help?).each_with_index.sort_by{ |o,i| [o.tail, i] }.each do |opt, i|
+ options.select.each_with_index.sort_by{ |o,i| [o.tail, i] }.each do |opt, i|
# use the index to fetch an associated separator
if sep = separators[i]
str << "#{sep}\n"
end
- str << "#{prefix}#{opt.to_s(offset: len)}\n"
+ str << "#{prefix}#{opt.to_s(offset: len)}\n" if opt.help?
end
if sep = separators[options.size]
diff --git a/test/options_test.rb b/test/options_test.rb
index 2f83fc4..0aa6e67 100644
--- a/test/options_test.rb
+++ b/test/options_test.rb
@@ -70,6 +70,17 @@ describe Slop::Options do
assert_equal [""], @options.separators
end
+
+ it "correctly handles options with `help: false`" do
+ @options.boolean "--opt1"
+ @options.boolean "--opt2", help: false
+ @options.separator "other options"
+ @options.boolean "--opt3", help: false
+ @options.boolean "--opt4"
+
+ _usage, help = @options.to_s.squeeze(" ").split("\n", 2)
+ assert_equal "--opt1 \nother options\n --opt4", help.strip
+ end
end
describe "#method_missing" do