Hello community,

here is the log from the commit of package rubygem-tins for openSUSE:Factory 
checked in at 2015-12-14 10:14:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-tins (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-tins.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-tins"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-tins/rubygem-tins.changes        
2015-08-27 08:56:08.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-tins.new/rubygem-tins.changes   
2015-12-14 10:14:06.000000000 +0100
@@ -1,0 +2,18 @@
+Fri Dec  4 05:33:07 UTC 2015 - [email protected]
+
+- updated to version 1.8.1
+  no changelog found
+
+-------------------------------------------------------------------
+Wed Dec  2 05:33:36 UTC 2015 - [email protected]
+
+- updated to version 1.8.0
+  no changelog found
+
+-------------------------------------------------------------------
+Wed Nov 11 05:33:46 UTC 2015 - [email protected]
+
+- updated to version 1.7.0
+  no changelog found
+
+-------------------------------------------------------------------

Old:
----
  tins-1.6.0.gem

New:
----
  tins-1.8.1.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-tins.spec ++++++
--- /var/tmp/diff_new_pack.2Z22He/_old  2015-12-14 10:14:07.000000000 +0100
+++ /var/tmp/diff_new_pack.2Z22He/_new  2015-12-14 10:14:07.000000000 +0100
@@ -24,14 +24,14 @@
 #
 
 Name:           rubygem-tins
-Version:        1.6.0
+Version:        1.8.1
 Release:        0
 %define mod_name tins
 %define mod_full_name %{mod_name}-%{version}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  %{ruby >= 2.0}
 BuildRequires:  %{rubygem gem2rpm}
 BuildRequires:  %{rubygem rdoc > 3.10}
-BuildRequires:  %{ruby}
 BuildRequires:  ruby-macros >= 5
 Url:            https://github.com/flori/tins
 Source:         http://rubygems.org/gems/%{mod_full_name}.gem

++++++ tins-1.6.0.gem -> tins-1.8.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      2015-08-13 13:02:47.000000000 +0200
+++ new/.gitignore      2015-12-03 11:41:48.000000000 +0100
@@ -2,6 +2,7 @@
 .AppleDouble
 .DS_Store
 .bundle
+.byebug_history
 .rbx
 .rvmrc
 Gemfile.lock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2015-08-13 13:02:47.000000000 +0200
+++ new/.travis.yml     2015-12-03 11:41:48.000000000 +0100
@@ -12,3 +12,4 @@
     - rvm: jruby-head
 env:
   - 
CODECLIMATE_REPO_TOKEN=62d082406430ccf662c2e401976b613c0091e26fcfb546f92b1f2b391951cf50
+sudo: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Gemfile new/Gemfile
--- old/Gemfile 2015-08-13 13:02:47.000000000 +0200
+++ new/Gemfile 2015-12-03 11:41:48.000000000 +0100
@@ -4,8 +4,9 @@
 
 gemspec
 
-group :development do
+group :development, :test do
   gem 'simplecov'
   gem 'term-ansicolor'
-  gem "codeclimate-test-reporter", group: :test, require: nil
+  gem "codeclimate-test-reporter", require: nil
+  gem 'byebug', platform: :mri
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2015-08-13 13:02:47.000000000 +0200
+++ new/README.md       2015-12-03 11:41:48.000000000 +0100
@@ -12,6 +12,18 @@
 
 ## Changes
 
+* 2015-12-03 Release 1.8.1
+  - Remove some backports already existant in the newer supported rubies.
+* 2015-12-01 Release 1.8.0
+  - Add `foo_of` and `foo_annotations` methods to instances of classes with
+    annotated methods.
+* 2015-11-09 Release 1.7.0
+  - Officially require ruby >= 2.0 and use new hash syntax.
+  - New feature attempt: sleep:-30 sleeps upto 30 seconds while retrying with
+    an exponential waiting pattern.
+  - Remove rotate and shuffle, recent rubies all support them.
+  - Add an object oriented view on method signatures and use it to create
+    method descriptions.
 * 2015-08-13 Release 1.6.0
   - Add complete method for readline completion
 * 2015-06-21 Release 1.5.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2015-08-13 13:02:47.000000000 +0200
+++ new/Rakefile        2015-12-03 11:41:48.000000000 +0100
@@ -12,10 +12,11 @@
   test_dir    'tests'
   test_files.concat Dir["#{test_dir}/*_test.rb"]
   ignore      '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', 'coverage', 
'.rbx',
-    '.AppleDouble', '.DS_Store', 'tags', '.bundle'
+    '.AppleDouble', '.DS_Store', 'tags', '.bundle', '.byebug_history'
 
   readme      'README.md'
   licenses << 'MIT'
 
-  development_dependency 'test-unit', '~>2.5'
+  required_ruby_version  '>= 2.0'
+  development_dependency 'test-unit', '~>3.1'
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/VERSION new/VERSION
--- old/VERSION 2015-08-13 13:02:47.000000000 +0200
+++ new/VERSION 2015-12-03 11:41:48.000000000 +0100
@@ -1 +1 @@
-1.6.0
+1.8.1
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/annotate.rb new/lib/tins/annotate.rb
--- old/lib/tins/annotate.rb    2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/annotate.rb    2015-12-03 11:41:48.000000000 +0100
@@ -26,5 +26,13 @@
         instance_variable_set "@__annotation_#{name}__", nil
       end
     end
+
+    define_method("#{name}_annotations") do
+      self.class.__send__("#{name}_annotations")
+    end
+
+    define_method("#{name}_of") do |method_name|
+      self.class.__send__("#{name}_of", method_name)
+    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/attempt.rb new/lib/tins/attempt.rb
--- old/lib/tins/attempt.rb     2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/attempt.rb     2015-12-03 11:41:48.000000000 +0100
@@ -7,8 +7,9 @@
         attempts = opts
       else
         attempts        = opts[:attempts] || 1
+        attempts >= 1 or raise ArgumentError, 'at least one attempt is 
required'
         exception_class = opts[:exception_class] if opts.key?(:exception_class)
-        sleep           = opts[:sleep]
+        sleep           = interpret_sleep(opts[:sleep], attempts)
         reraise         = opts[:reraise]
       end
       return if attempts <= 0
@@ -28,7 +29,7 @@
           count += 1
           block.call(count)
           true
-        rescue exception_class
+        rescue *exception_class
           if count < attempts
             sleep_duration(sleep, count)
             retry
@@ -48,5 +49,40 @@
         sleep duration.call(count)
       end
     end
+
+    def compute_duration_base(sleep, attempts)
+      x1, x2  = 1, sleep
+      attempts <= sleep or raise ArgumentError,
+        "need less or equal number of attempts than sleep duration #{sleep}"
+      x1 >= x2 and raise ArgumentError, "invalid sleep argument: 
#{sleep.inspect}"
+      function = -> x { (0...attempts).inject { |s, i| s + x ** i } - sleep }
+      f, fmid = function[x1], function[x2]
+      f * fmid >= 0 and raise ArgumentError, "invalid sleep argument: 
#{sleep.inspect}"
+      n       = 1 << 16
+      epsilon = 1E-16
+      root = if f < 0
+               dx = x2 - x1
+               x1
+             else
+               dx = x1 - x2
+               x2
+             end
+      n.times do
+        fmid = function[xmid = root + (dx *= 0.5)]
+        fmid < 0 and root = xmid
+        dx.abs < epsilon or fmid == 0 and return root
+      end
+      raise ArgumentError, "too many iterations (#{n})"
+      result
+    end
+
+    def interpret_sleep(sleep, attempts)
+      if Numeric === sleep && sleep < 0 && attempts > 1
+        sleep = -sleep
+        duration_base = compute_duration_base sleep, attempts
+        sleep = lambda { |i| duration_base ** i }
+      end
+      sleep
+    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/file_binary.rb new/lib/tins/file_binary.rb
--- old/lib/tins/file_binary.rb 2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/file_binary.rb 2015-12-03 11:41:48.000000000 +0100
@@ -17,10 +17,10 @@
       attr_accessor :default_options
     end
     self.default_options = {
-      :offset            => 0,
-      :buffer_size       => 2 ** 13,
-      :percentage_binary => 30.0,
-      :percentage_zeros  => 0.0,
+      offset:            0,
+      buffer_size:       2 ** 13,
+      percentage_binary: 30.0,
+      percentage_zeros:  0.0,
     }
 
     # Returns true if this file is considered to be binary, false if it is not
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/method_description.rb 
new/lib/tins/method_description.rb
--- old/lib/tins/method_description.rb  2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/method_description.rb  2015-12-03 11:41:48.000000000 +0100
@@ -1,48 +1,141 @@
 module Tins
   module MethodDescription
+    class Parameters
+      class Parameter < Struct.new(:type, :name)
+        def ==(other)
+          type == other.type
+        end
+
+        def inspect
+          "#<#{self.class} #{to_s.inspect}>"
+        end
+      end
+
+      class RestParameter < Parameter
+        def to_s
+          "*#{name}"
+        end
+      end
+
+      class KeyrestParameter < Parameter
+        def to_s
+          "**#{name}"
+        end
+      end
+
+      class ReqParameter < Parameter
+        def to_s
+          name.to_s
+        end
+      end
+
+      class OptParameter < Parameter
+        def to_s
+          "#{name}=?"
+        end
+      end
+
+      class KeyParameter < Parameter
+        def to_s
+          "#{name}:?"
+        end
+      end
+
+      class KeyreqParameter < Parameter
+        def to_s
+          "#{name}:"
+        end
+      end
+
+      class BlockParameter < Parameter
+        def to_s
+          "&#{name}"
+        end
+      end
+
+      class GenericParameter < Parameter
+        def to_s
+          [ name, type ] * ?:
+        end
+      end
+
+      def self.build(type, name)
+        parameter_classname = "#{type.to_s.capitalize}Parameter"
+        parameter_class =
+          if const_defined? parameter_classname
+            const_get parameter_classname
+          else
+            GenericParameter
+          end
+        parameter_class.new(type, name)
+      end
+    end
+
+    class Signature
+      def initialize(*parameters)
+        @parameters = parameters
+      end
+
+      attr_reader :parameters
+
+      def eql?(other)
+        @parameters.eql? other.parameters
+      end
+
+      def ==(other)
+        @parameters == other.parameters
+      end
+
+      def ===(method)
+        self == method.signature
+      end
+
+      def to_s
+        @parameters * ?,
+      end
+
+      def inspect
+        "#<#{self.class} (#{to_s})>"
+      end
+    end
+
+    def signature
+      description style: :parameters
+    end
+
     def description(style: :namespace)
       valid_styles = %i[ namespace name parameters ]
       valid_styles.include?(style) or
-        raise ArgumentError, "style has to be one of #{valid_styles * ', '}"
+        raise ArgumentError,
+        "style has to be one of #{valid_styles * ', '}"
+      if respond_to?(:parameters)
+        generated_name = 'x0'
+        parameter_array = parameters.map { |p_type, p_name|
+          unless p_name
+            generated_name = generated_name.succ
+            p_name = generated_name
+          end
+          Parameters.build(p_type, p_name)
+        }
+        signature = Signature.new(*parameter_array)
+        if style == :parameters
+          return signature
+        end
+      end
       result = ''
       if style == :namespace
         if owner <= Module
-          result << receiver.to_s << '.' # XXX Better to use owner here as 
well?
+          result << receiver.to_s << ?. # XXX Better to use owner here as well?
         else
-          result << owner.name.to_s << '#'
+          result << owner.name.to_s << ?#
         end
       end
       if %i[ namespace name ].include?(style)
         result << name.to_s << '('
       end
-      if respond_to?(:parameters)
-        generated_name = 'x0'
-        result << parameters.map { |p_type, p_name|
-          p_name ||= generated_name.succ!.dup
-          case p_type
-          when :block
-            "&#{p_name}"
-          when :rest
-            "*#{p_name}"
-          when :keyrest
-            "**#{p_name}"
-          when :req
-            p_name
-          when :opt
-            "#{p_name}=?"
-          when :key
-            "#{p_name}:?"
-          when :keyreq
-            "#{p_name}:"
-          else
-            [ p_name, p_type ] * ':'
-          end
-        } * ','
-      else
-        result << arity.to_s
-      end
+      result << (signature || arity).to_s
       if %i[ namespace name ].include?(style)
-        result << ')'
+        result << ?)
       end
       result
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/proc_prelude.rb new/lib/tins/proc_prelude.rb
--- old/lib/tins/proc_prelude.rb        2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/proc_prelude.rb        2015-12-03 11:41:48.000000000 +0100
@@ -20,29 +20,29 @@
     def array
       lambda { |*list| list }
     end
-    memoize_function :array, :freeze =>  true
+    memoize_function :array, freeze:  true
 
     def first
       lambda { |*list| list.first }
     end
-    memoize_function :first, :freeze =>  true
+    memoize_function :first, freeze:  true
 
     alias head first
 
     def second
       lambda { |*list| list[1] }
     end
-    memoize_function :second, :freeze =>  true
+    memoize_function :second, freeze:  true
 
     def tail
       lambda { |*list| list[1..-1] }
     end
-    memoize_function :tail, :freeze =>  true
+    memoize_function :tail, freeze:  true
 
     def last
       lambda { |*list| list.last }
     end
-    memoize_function :last, :freeze =>  true
+    memoize_function :last, freeze:  true
 
     def rotate(n = 1)
       lambda { |*list| list.rotate(n) }
@@ -53,7 +53,7 @@
     def id1
       lambda { |obj| obj }
     end
-    memoize_function :id1, :freeze =>  true
+    memoize_function :id1, freeze:  true
 
     def const(konst = nil, &my_proc)
       konst ||= my_proc.call
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/rotate.rb new/lib/tins/rotate.rb
--- old/lib/tins/rotate.rb      2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/rotate.rb      1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-module Tins
-  module Rotate
-    def rotate!(n = 1)
-      if n >= 0
-        n.times { push shift }
-      else
-        (-n).times { unshift pop }
-      end
-      self
-    end
-
-    def rotate(n = 1)
-      clone.rotate!(n)
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/shuffle.rb new/lib/tins/shuffle.rb
--- old/lib/tins/shuffle.rb     2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/shuffle.rb     1970-01-01 01:00:00.000000000 +0100
@@ -1,18 +0,0 @@
-module Tins
-  module Shuffle
-    # :nocov:
-    def shuffle!
-      (size - 1) .downto(1) do |i|
-        j = rand(i + 1)
-        self[i], self[j] = self[j], self[i]
-      end
-      self
-    end
-
-    def shuffle
-      dup.shuffle!
-    end
-  end
-end
-
-require 'tins/alias'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/version.rb new/lib/tins/version.rb
--- old/lib/tins/version.rb     2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/version.rb     2015-12-03 11:41:48.000000000 +0100
@@ -1,6 +1,6 @@
 module Tins
   # Tins version
-  VERSION         = '1.6.0'
+  VERSION         = '1.8.1'
   VERSION_ARRAY   = VERSION.split('.').map(&:to_i) # :nodoc:
   VERSION_MAJOR   = VERSION_ARRAY[0] # :nodoc:
   VERSION_MINOR   = VERSION_ARRAY[1] # :nodoc:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/xt/rotate.rb new/lib/tins/xt/rotate.rb
--- old/lib/tins/xt/rotate.rb   2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/xt/rotate.rb   1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-module Tins
-  class ::Array
-    unless method_defined?(:rotate)
-      include Tins::Rotate
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/xt/shuffle.rb new/lib/tins/xt/shuffle.rb
--- old/lib/tins/xt/shuffle.rb  2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/xt/shuffle.rb  1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-require 'tins/shuffle'
-
-module Tins
-  class ::Array
-    if method_defined?(:shuffle)
-      warn "#{self}#shuffle already defined, didn't include at 
#{__FILE__}:#{__LINE__}"
-    else
-      include Shuffle
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/xt/symbol_to_proc.rb 
new/lib/tins/xt/symbol_to_proc.rb
--- old/lib/tins/xt/symbol_to_proc.rb   2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/xt/symbol_to_proc.rb   1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-module Tins
-  unless ::Symbol.method_defined?(:to_proc)
-    # :nocov:
-    class ::Symbol
-      include ToProc
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins/xt.rb new/lib/tins/xt.rb
--- old/lib/tins/xt.rb  2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins/xt.rb  2015-12-03 11:41:48.000000000 +0100
@@ -19,7 +19,6 @@
   require 'tins/xt/secure_write'
   require 'tins/xt/string'
   require 'tins/xt/subhash'
-  require 'tins/xt/symbol_to_proc'
   require 'tins/xt/time_dummy'
   require 'tins/xt/date_dummy'
   require 'tins/xt/date_time_dummy'
@@ -32,7 +31,6 @@
   require 'tins/xt/responding'
   require 'tins/xt/proc_compose'
   require 'tins/xt/proc_prelude'
-  require 'tins/xt/rotate'
   require 'tins/xt/sexy_singleton'
   require 'tins/xt/method_description'
   require 'tins/xt/annotate'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/tins.rb new/lib/tins.rb
--- old/lib/tins.rb     2015-08-13 13:02:47.000000000 +0200
+++ new/lib/tins.rb     2015-12-03 11:41:48.000000000 +0100
@@ -22,7 +22,6 @@
   require 'tins/range_plus'
   require 'tins/require_maybe'
   require 'tins/secure_write'
-  require 'tins/shuffle'
   require 'tins/string_camelize'
   require 'tins/string_underscore'
   require 'tins/string_version'
@@ -40,7 +39,6 @@
   require 'tins/proc_compose'
   require 'tins/proc_prelude'
   require 'tins/concern'
-  require 'tins/rotate'
   require 'tins/to'
   require 'tins/terminal'
   require 'tins/sexy_singleton'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2015-08-13 13:02:47.000000000 +0200
+++ new/metadata        2015-12-03 11:41:48.000000000 +0100
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: tins
 version: !ruby/object:Gem::Version
-  version: 1.6.0
+  version: 1.8.1
 platform: ruby
 authors:
 - Florian Frank
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2015-08-13 00:00:00.000000000 Z
+date: 2015-12-03 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: gem_hadar
@@ -16,28 +16,28 @@
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: 1.2.0
+        version: 1.3.1
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: 1.2.0
+        version: 1.3.1
 - !ruby/object:Gem::Dependency
   name: test-unit
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '2.5'
+        version: '3.1'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
-        version: '2.5'
+        version: '3.1'
 description: All the stuff that isn't good/big enough for a real library.
 email: [email protected]
 executables: []
@@ -88,10 +88,8 @@
 - lib/tins/range_plus.rb
 - lib/tins/require_maybe.rb
 - lib/tins/responding.rb
-- lib/tins/rotate.rb
 - lib/tins/secure_write.rb
 - lib/tins/sexy_singleton.rb
-- lib/tins/shuffle.rb
 - lib/tins/string_byte_order_mark.rb
 - lib/tins/string_camelize.rb
 - lib/tins/string_underscore.rb
@@ -138,17 +136,14 @@
 - lib/tins/xt/range_plus.rb
 - lib/tins/xt/require_maybe.rb
 - lib/tins/xt/responding.rb
-- lib/tins/xt/rotate.rb
 - lib/tins/xt/secure_write.rb
 - lib/tins/xt/sexy_singleton.rb
-- lib/tins/xt/shuffle.rb
 - lib/tins/xt/string.rb
 - lib/tins/xt/string_byte_order_mark.rb
 - lib/tins/xt/string_camelize.rb
 - lib/tins/xt/string_underscore.rb
 - lib/tins/xt/string_version.rb
 - lib/tins/xt/subhash.rb
-- lib/tins/xt/symbol_to_proc.rb
 - lib/tins/xt/time_dummy.rb
 - lib/tins/xt/time_freezer.rb
 - lib/tins/xt/to.rb
@@ -232,10 +227,8 @@
 - lib/tins/range_plus.rb
 - lib/tins/require_maybe.rb
 - lib/tins/responding.rb
-- lib/tins/rotate.rb
 - lib/tins/secure_write.rb
 - lib/tins/sexy_singleton.rb
-- lib/tins/shuffle.rb
 - lib/tins/string_byte_order_mark.rb
 - lib/tins/string_camelize.rb
 - lib/tins/string_underscore.rb
@@ -282,17 +275,14 @@
 - lib/tins/xt/range_plus.rb
 - lib/tins/xt/require_maybe.rb
 - lib/tins/xt/responding.rb
-- lib/tins/xt/rotate.rb
 - lib/tins/xt/secure_write.rb
 - lib/tins/xt/sexy_singleton.rb
-- lib/tins/xt/shuffle.rb
 - lib/tins/xt/string.rb
 - lib/tins/xt/string_byte_order_mark.rb
 - lib/tins/xt/string_camelize.rb
 - lib/tins/xt/string_underscore.rb
 - lib/tins/xt/string_version.rb
 - lib/tins/xt/subhash.rb
-- lib/tins/xt/symbol_to_proc.rb
 - lib/tins/xt/time_dummy.rb
 - lib/tins/xt/time_freezer.rb
 - lib/tins/xt/to.rb
@@ -343,7 +333,6 @@
 - tests/scope_test.rb
 - tests/secure_write_test.rb
 - tests/sexy_singleton_test.rb
-- tests/shuffle_test.rb
 - tests/string_byte_order_mark_test.rb
 - tests/string_camelize_test.rb
 - tests/string_underscore_test.rb
@@ -372,7 +361,7 @@
   requirements:
   - - ">="
     - !ruby/object:Gem::Version
-      version: '0'
+      version: '2.0'
 required_rubygems_version: !ruby/object:Gem::Requirement
   requirements:
   - - ">="
@@ -380,7 +369,7 @@
       version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.4.6
+rubygems_version: 2.5.0
 signing_key: 
 specification_version: 4
 summary: Useful stuff.
@@ -430,7 +419,6 @@
 - tests/scope_test.rb
 - tests/secure_write_test.rb
 - tests/sexy_singleton_test.rb
-- tests/shuffle_test.rb
 - tests/string_byte_order_mark_test.rb
 - tests/string_camelize_test.rb
 - tests/string_underscore_test.rb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/annotate_test.rb new/tests/annotate_test.rb
--- old/tests/annotate_test.rb  2015-08-13 13:02:47.000000000 +0200
+++ new/tests/annotate_test.rb  2015-12-03 11:41:48.000000000 +0100
@@ -14,7 +14,7 @@
       bar 'test bar1'
       def first
       end
-      
+
       foo 'test foo2'
       bar 'test bar2'
       def second
@@ -25,7 +25,7 @@
       end
     end
 
-    def test_annotations
+    def test_annotations_via_class
       assert_equal 'test foo1', A.foo_of(:first)
       assert_equal 'test bar1', A.bar_of(:first)
       assert_equal 'test foo2', A.foo_of(:second)
@@ -33,5 +33,15 @@
       assert_equal nil, A.foo_of(:third)
       assert_equal 'test bar3', A.bar_of(:third)
     end
+
+    def test_annotations_via_instance
+      a = A.new
+      assert_equal 'test foo1', a.foo_of(:first)
+      assert_equal 'test bar1', a.bar_of(:first)
+      assert_equal 'test foo2', a.foo_of(:second)
+      assert_equal 'test bar2', a.bar_of(:second)
+      assert_equal nil, a.foo_of(:third)
+      assert_equal 'test bar3', a.bar_of(:third)
+    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/attempt_test.rb new/tests/attempt_test.rb
--- old/tests/attempt_test.rb   2015-08-13 13:02:47.000000000 +0200
+++ new/tests/attempt_test.rb   2015-12-03 11:41:48.000000000 +0100
@@ -3,44 +3,46 @@
 
 module Tins
   class AttemptTest < Test::Unit::TestCase
+    class MyError < StandardError; end
 
-    def test_attempt_block_condition
-      assert attempt(:attempts => 1, :exception_class => nil) { |c| c == 1 }
-      assert attempt(:attempts => 3, :exception_class => nil) { |c| c == 1 }
-      assert_equal false, attempt(:attempts => 3, :exception_class => nil) { 
|c| c == 4 }
-      assert_nil attempt(:attempts => 0, :exception_class => nil) { |c| c == 4 
}
-      assert_raise(Exception) { attempt(:attempts => 3, :exception_class => 
nil) { raise Exception } }
+    class MyException < Exception; end
+
+    def test_attempt_with_invalid_arguments
+      assert_raise(ArgumentError) { attempt(attempts: 0) {  } }
     end
 
-    class MyError < StandardError; end
-    class MyException < Exception; end
+    def test_attempt_block_condition
+      assert attempt(attempts: 1, exception_class: nil) { |c| c == 1 }
+      assert attempt(attempts: 3, exception_class: nil) { |c| c == 1 }
+      assert_equal false, attempt(attempts: 3, exception_class: nil) { |c| c 
== 4 }
+      assert_raise(MyException) { attempt(attempts: 3, exception_class: nil) { 
raise MyException } }
+    end
 
     def test_attempt_default_exception
       assert attempt(1) { |c| c != 1 and raise MyError }
       assert attempt(3) { |c| c != 1 and raise MyError }
       assert_equal false, attempt(3) { |c| c != 4 and raise MyError }
-      assert_nil attempt(0) { |c| c != 4 and raise MyError }
       assert_raise(Exception) { attempt(3) { raise Exception } }
     end
 
     def test_attempt_exception
-      assert attempt(:attempts => 1, :exception_class => MyException) { |c| c 
!= 1 and raise MyException }
-      assert attempt(:attempts => 3, :exception_class => MyException) { |c| c 
!= 1 and raise MyException }
-      assert_nil attempt(:attempts => 0, :exception_class => MyException) { 
|c| c != 4 and raise MyException }
-      assert_raise(Exception) { attempt(:attempts => 3, :exception_class => 
MyException) { raise Exception } }
+      assert_equal false,
+        attempt(attempts: 3, exception_class: MyException) { raise MyException 
}
+      assert_equal true,
+        attempt(attempts: 3, exception_class: MyException) { |c| c == 1 and 
raise MyException }
     end
 
     def test_reraise_exception
       tries = 0
       assert_raise(MyException) do
-        attempt(:attempts => 3, :exception_class => MyException, :reraise => 
true) do |c|
+        attempt(attempts: 3, exception_class: MyException, reraise: true) do 
|c|
           tries = c; raise MyException
         end
       end
       assert_equal 3, tries
     end
 
-    def test_reraise_exception_with_numeric_sleep
+    def test_reraise_exception_with_positive_sleep
       tries = 0
       singleton_class.class_eval do
         define_method(:sleep_duration) do |duration, count|
@@ -50,7 +52,7 @@
         end
       end
       assert_raise(MyException) do
-        attempt(:attempts => 3, :exception_class => MyException, :reraise => 
true, :sleep => 10) do |c|
+        attempt(attempts: 3, exception_class: MyException, reraise: true, 
sleep: 10) do |c|
           raise MyException
         end
       end
@@ -71,7 +73,29 @@
         end
       end
       assert_raise(MyException) do
-        attempt(:attempts => 3, :exception_class => MyException, :reraise => 
true, :sleep => lambda { |x| 0 }) do |c|
+        attempt(attempts: 3, exception_class: MyException, reraise: true, 
sleep: -> x { 0 }) do |c|
+          raise MyException
+        end
+      end
+      assert_equal 2, tries
+    ensure
+      singleton_class.class_eval do
+        method_defined?(:sleep_duration) and remove_method :sleep_duration
+      end
+    end
+
+    def test_reraise_exception_with_negative_sleep
+      tries = 0
+      sleeps = [ 2.701, 7.298 ]
+      singleton_class.class_eval do
+        define_method(:sleep_duration) do |duration, count|
+          assert_in_delta sleeps[tries], duration.call(count), 1E-3
+          tries = count
+          super 0, count # Let's not really sleep that long…
+        end
+      end
+      assert_raise(MyException) do
+        attempt(attempts: 3, exception_class: MyException, reraise: true, 
sleep: -10) do |c|
           raise MyException
         end
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/blank_full_test.rb new/tests/blank_full_test.rb
--- old/tests/blank_full_test.rb        2015-08-13 13:02:47.000000000 +0200
+++ new/tests/blank_full_test.rb        2015-12-03 11:41:48.000000000 +0100
@@ -14,7 +14,7 @@
       assert Set[].blank?
       assert !Set[23].blank?
       assert({}.blank?)
-      assert !{ :foo => 23 }.blank?
+      assert !{ foo: 23 }.blank?
       assert "".blank?
       assert "   ".blank?
       assert !"foo".blank?
@@ -29,7 +29,7 @@
       assert !Set[].present?
       assert Set[23].present?
       assert !{}.present?
-      assert({ :foo => 23 }.present?)
+      assert({ foo: 23 }.present?)
       assert !"".present?
       assert !"   ".present?
       assert "foo".present?
@@ -44,7 +44,7 @@
       assert_nil Set[].full?
       assert_equal Set[23], Set[23].full?
       assert_nil({}.full?)
-      assert_equal({ :foo => 23 }, { :foo => 23 }.full?)
+      assert_equal({ foo: 23 }, { foo: 23 }.full?)
       assert_nil "".full?
       assert_nil "   ".full?
       assert_equal "foo", "foo".full?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/extract_last_argument_options_test.rb 
new/tests/extract_last_argument_options_test.rb
--- old/tests/extract_last_argument_options_test.rb     2015-08-13 
13:02:47.000000000 +0200
+++ new/tests/extract_last_argument_options_test.rb     2015-12-03 
11:41:48.000000000 +0100
@@ -20,9 +20,9 @@
     end
 
     def test_argument_array_witt_options
-      arguments = [ 1, 2, 3, { :foo => :bar } ]
+      arguments = [ 1, 2, 3, { foo: :bar } ]
       result = arguments.extract_last_argument_options
-      assert_equal [ [ 1, 2, 3 ], { :foo => :bar } ], result
+      assert_equal [ [ 1, 2, 3 ], { foo: :bar } ], result
       assert_not_same arguments, result.first
       assert_not_same arguments.last, result.last
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/file_binary_test.rb 
new/tests/file_binary_test.rb
--- old/tests/file_binary_test.rb       2015-08-13 13:02:47.000000000 +0200
+++ new/tests/file_binary_test.rb       2015-12-03 11:41:48.000000000 +0100
@@ -7,10 +7,10 @@
     def test_ascii_buffer_size
       write_file do |file|
         file.write "A" * 10 + "\x00"
-        assert_equal true,  file.ascii?(:buffer_size => 10)
-        assert_equal true,  File.ascii?(file.path, :buffer_size => 10)
-        assert_equal false, file.binary?(:buffer_size => 10)
-        assert_equal false, File.binary?(file.path, :buffer_size => 10)
+        assert_equal true,  file.ascii?(buffer_size: 10)
+        assert_equal true,  File.ascii?(file.path, buffer_size: 10)
+        assert_equal false, file.binary?(buffer_size: 10)
+        assert_equal false, File.binary?(file.path, buffer_size: 10)
       end
     end
 
@@ -27,10 +27,10 @@
     def test_ascii_offset
       write_file do |file|
         file.write "\x01" * 31 + "A" * 70
-        assert_equal false, file.binary?(:offset => 1)
-        assert_equal false, File.binary?(file.path, :offset => 1)
-        assert_equal true,  file.ascii?(:offset => 1)
-        assert_equal true,  File.ascii?(file.path, :offset => 1)
+        assert_equal false, file.binary?(offset: 1)
+        assert_equal false, File.binary?(file.path, offset: 1)
+        assert_equal true,  file.ascii?(offset: 1)
+        assert_equal true,  File.ascii?(file.path, offset: 1)
       end
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/find_test.rb new/tests/find_test.rb
--- old/tests/find_test.rb      2015-08-13 13:02:47.000000000 +0200
+++ new/tests/find_test.rb      2015-12-03 11:41:48.000000000 +0100
@@ -17,18 +17,18 @@
     end
 
     def test_raising_errors
-      assert_equal [], find(File.join(@work_dir, 'nix'), :raise_errors => 
false).to_a
+      assert_equal [], find(File.join(@work_dir, 'nix'), raise_errors: 
false).to_a
       assert_equal [], find(File.join(@work_dir, 'nix')).to_a
       assert_raise(Errno::ENOENT) do
-        find(File.join(@work_dir, 'nix'), :raise_errors => true).to_a
+        find(File.join(@work_dir, 'nix'), raise_errors: true).to_a
       end
     end
 
     def test_showing_hidden
       touch file = File.join(@work_dir, '.foo')
-      assert_equal [ @work_dir ], find(@work_dir, :show_hidden => false).to_a
+      assert_equal [ @work_dir ], find(@work_dir, show_hidden: false).to_a
       assert_equal [ @work_dir, file ], find(@work_dir).to_a
-      assert_equal [ @work_dir, file ], find(@work_dir, :show_hidden => 
true).to_a
+      assert_equal [ @work_dir, file ], find(@work_dir, show_hidden: true).to_a
     end
 
     def test_check_directory_without_access
@@ -42,10 +42,10 @@
         mkdir_p directory2 = File.join(directory1, 'bar')
         touch file = File.join(directory2, 'file')
         chmod 0, directory2
-        assert_equal [ @work_dir, directory1, directory2 ], find(@work_dir, 
:raise_errors => false).to_a
+        assert_equal [ @work_dir, directory1, directory2 ], find(@work_dir, 
raise_errors: false).to_a
         assert_equal [ @work_dir, directory1, directory2 ], 
find(@work_dir).to_a
         assert_raise(Errno::EACCES) do
-          find(@work_dir, :raise_errors => true).to_a
+          find(@work_dir, raise_errors: true).to_a
         end
       ensure
         File.exist?(directory2) and chmod 0777, directory2
@@ -58,9 +58,9 @@
       mkdir_p directory3 = File.join(directory1, 'bar')
       touch file = File.join(directory3, 'foo')
       ln_s directory3, link = File.join(directory2, 'baz')
-      assert_equal [ directory2, link ], find(directory2, :follow_symlinks => 
false).to_a
+      assert_equal [ directory2, link ], find(directory2, follow_symlinks: 
false).to_a
       assert_equal [ directory2, link, linked = File.join(link, 'foo') ], 
find(directory2).to_a
-      assert_equal [ directory2, link, linked ], find(directory2, 
:follow_symlinks => true).to_a
+      assert_equal [ directory2, link, linked ], find(directory2, 
follow_symlinks: true).to_a
     end
 
     def test_path_file
@@ -89,7 +89,7 @@
     end
 
     def test_suffix
-      finder = Tins::Find::Finder.new(:suffix => 'bar')
+      finder = Tins::Find::Finder.new(suffix: 'bar')
       f = File.open(fpath = File.join(@work_dir, 'foo.bar'), 'w')
       g = File.open(gpath = File.join(@work_dir, 'foo.baz'), 'w')
       fpath = finder.prepare_path fpath
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/from_module_test.rb 
new/tests/from_module_test.rb
--- old/tests/from_module_test.rb       2015-08-13 13:02:47.000000000 +0200
+++ new/tests/from_module_test.rb       2015-12-03 11:41:48.000000000 +0100
@@ -25,7 +25,7 @@
   class DerivedKlass < MyKlass
     extend Tins::FromModule
 
-    include from :module => MyIncludedModule, :methods => [ :foo ]
+    include from module: MyIncludedModule, methods: [ :foo ]
   end
 
   module MyModule
@@ -44,7 +44,7 @@
 
     extend Tins::FromModule
 
-    include from :module => MyIncludedModule, :methods => :foo
+    include from module: MyIncludedModule, methods: :foo
   end
 
   def test_derived_klass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/limited_test.rb new/tests/limited_test.rb
--- old/tests/limited_test.rb   2015-08-13 13:02:47.000000000 +0200
+++ new/tests/limited_test.rb   2015-12-03 11:41:48.000000000 +0100
@@ -3,10 +3,6 @@
 
 module Tins
   class LimitedTest < Test::Unit::TestCase
-    class ::Array
-      include Tins::Shuffle
-    end
-
     def test_limited
       count = {}
       limited = Tins::Limited.new(5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/method_description_test.rb 
new/tests/method_description_test.rb
--- old/tests/method_description_test.rb        2015-08-13 13:02:47.000000000 
+0200
+++ new/tests/method_description_test.rb        2015-12-03 11:41:48.000000000 
+0100
@@ -21,6 +21,15 @@
     class B
       def foo(x, y = 1, *r, &b)
       end
+
+      def bar(x, y = 2, *r, &b)
+      end
+
+      def bar2(x, z = 2, *r, &b)
+      end
+
+      def baz(x, y = 2, z = 3, *r, &b)
+      end
     end
 
     def test_standard_parameters_namespace
@@ -33,30 +42,50 @@
         B.instance_method(:foo).description(style: :name)
     end
 
-    def test_standard_parameters_parameters
-      assert_equal 'x,y=?,*r,&b',
-        B.instance_method(:foo).description(style: :parameters)
+    def test_standard_parameters_signature
+      assert_kind_of Tins::MethodDescription::Signature,
+        B.instance_method(:foo).signature
+    end
+
+    def test_signature_equalitites
+      assert_equal(
+        B.instance_method(:foo).signature,
+        B.instance_method(:bar).signature
+      )
+      assert_equal(
+        B.instance_method(:foo).signature,
+        B.instance_method(:bar2).signature
+      )
+      assert_false\
+        B.instance_method(:foo).signature.eql?(
+          B.instance_method(:bar2).signature
+        )
+      assert_operator(
+        B.instance_method(:foo).signature,
+        :===,
+        B.instance_method(:bar2)
+      )
+      assert_not_equal(
+        B.instance_method(:bar).signature,
+        B.instance_method(:baz).signature
+      )
     end
 
     def test_a_cstyle_method_from_hash
       assert_equal "Hash#store(x1,x2)", ({}.method(:store).description)
     end
 
-    if RUBY_VERSION >= "2.0"
-      eval %{
-        class C
-          def foo(x, k: true, &b)
-          end
-
-          def bar(x, **k, &b)
-          end
-        end
-
-        def test_keyword_parameters
-          assert_equal 'Tins::MethodDescriptionTest::C#foo(x,k:?,&b)', 
C.instance_method(:foo).to_s
-          assert_equal 'Tins::MethodDescriptionTest::C#bar(x,**k,&b)', 
C.instance_method(:bar).to_s
-        end
-      }
+    class C
+      def foo(x, k: true, &b)
+      end
+
+      def bar(x, **k, &b)
+      end
+    end
+
+    def test_keyword_parameters
+      assert_equal 'Tins::MethodDescriptionTest::C#foo(x,k:?,&b)', 
C.instance_method(:foo).to_s
+      assert_equal 'Tins::MethodDescriptionTest::C#bar(x,**k,&b)', 
C.instance_method(:bar).to_s
     end
 
     if RUBY_VERSION >= "2.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/null_test.rb new/tests/null_test.rb
--- old/tests/null_test.rb      2015-08-13 13:02:47.000000000 +0200
+++ new/tests/null_test.rb      2015-12-03 11:41:48.000000000 +0100
@@ -25,10 +25,10 @@
     end
 
     def test_null_plus
-      assert_equal 1, null_plus(:value => 1)
-      assert_equal 1, NullPlus(:value => 1)
-      assert_kind_of Tins::NullPlus, null_plus(:value => nil)
-      assert_kind_of Tins::NullPlus, NullPlus(:value => nil)
+      assert_equal 1, null_plus(value: 1)
+      assert_equal 1, NullPlus(value: 1)
+      assert_kind_of Tins::NullPlus, null_plus(value: nil)
+      assert_kind_of Tins::NullPlus, NullPlus(value: nil)
       assert_kind_of Tins::NullPlus, null_plus
       assert_kind_of Tins::NullPlus, NullPlus()
       assert_kind_of Tins::NullPlus, null_plus.foo
@@ -48,7 +48,7 @@
     def foo
       1 / 0
     rescue => e
-      null_plus(:error => e)
+      null_plus(error: e)
     end
 
     def test_null_plus_caller_and_misc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/shuffle_test.rb new/tests/shuffle_test.rb
--- old/tests/shuffle_test.rb   2015-08-13 13:02:47.000000000 +0200
+++ new/tests/shuffle_test.rb   1970-01-01 01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-require 'test_helper'
-require 'tins/xt'
-
-module Tins
-  if Tins::Shuffle === Array
-    class ShuffleTest < Test::Unit::TestCase
-
-      def setup
-        @a = [ 1, 2, 3 ]
-        srand 666
-      end
-
-      def test_shuffle
-        assert_equal(a = [2, 3, 1], a = @a.shuffle)
-        assert_not_same @a, a
-        assert_equal(b = [3, 1, 2], b = @a.shuffle)
-        assert_not_same a, b
-        assert_not_same @a, b
-      end
-
-      def test_shuffle_bang
-        assert_equal([2, 3, 1], a = @a.shuffle!)
-        assert_same @a, a
-        assert_equal([1, 2, 3], b = @a.shuffle!)
-        assert_same a, b
-        assert_same @a, b
-      end
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tests/token_test.rb new/tests/token_test.rb
--- old/tests/token_test.rb     2015-08-13 13:02:47.000000000 +0200
+++ new/tests/token_test.rb     2015-12-03 11:41:48.000000000 +0100
@@ -4,32 +4,32 @@
 module Tins
   class TokenTest < Test::Unit::TestCase
     def test_token_failures
-      assert_raises(ArgumentError) { Tins::Token.new(:bits => 0) }
-      assert_raises(ArgumentError) { Tins::Token.new(:length => 0) }
-      assert_raises(ArgumentError) { Tins::Token.new(:alphabet => %w[0]) }
+      assert_raises(ArgumentError) { Tins::Token.new(bits: 0) }
+      assert_raises(ArgumentError) { Tins::Token.new(length: 0) }
+      assert_raises(ArgumentError) { Tins::Token.new(alphabet: %w[0]) }
     end
 
     def test_token_for_length
-      token = Tins::Token.new(:length => 22)
+      token = Tins::Token.new(length: 22)
       assert_equal 22, token.length
       assert_equal 130, token.bits
     end
 
     def test_token_for_bits
-      token = Tins::Token.new(:bits => 128)
+      token = Tins::Token.new(bits: 128)
       assert_equal 22, token.length
       # can differ from bits argument depending on alphabet:
       assert_equal 130, token.bits
     end
 
     def test_alphabet
-      token = Tins::Token.new(:alphabet => %w[0 1])
+      token = Tins::Token.new(alphabet: %w[0 1])
       assert_equal 128, token.length
       assert_equal 128, token.bits
-      token = Tins::Token.new(:alphabet => %w[0 1 2 3])
+      token = Tins::Token.new(alphabet: %w[0 1 2 3])
       assert_equal 64, token.length
       assert_equal 128, token.bits
-      token = Tins::Token.new(:length => 128, :alphabet => %w[0 1 2 3])
+      token = Tins::Token.new(length: 128, alphabet: %w[0 1 2 3])
       assert_equal 128, token.length
       assert_equal 256, token.bits
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tins.gemspec new/tins.gemspec
--- old/tins.gemspec    2015-08-13 13:02:47.000000000 +0200
+++ new/tins.gemspec    2015-12-03 11:41:48.000000000 +0100
@@ -1,37 +1,38 @@
 # -*- encoding: utf-8 -*-
-# stub: tins 1.6.0 ruby lib
+# stub: tins 1.8.1 ruby lib
 
 Gem::Specification.new do |s|
   s.name = "tins"
-  s.version = "1.6.0"
+  s.version = "1.8.1"
 
   s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? 
:required_rubygems_version=
   s.require_paths = ["lib"]
   s.authors = ["Florian Frank"]
-  s.date = "2015-08-13"
+  s.date = "2015-12-03"
   s.description = "All the stuff that isn't good/big enough for a real 
library."
   s.email = "[email protected]"
-  s.extra_rdoc_files = ["README.md", "lib/dslkit.rb", "lib/dslkit/polite.rb", 
"lib/dslkit/rude.rb", "lib/spruz.rb", "lib/tins.rb", "lib/tins/alias.rb", 
"lib/tins/annotate.rb", "lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", 
"lib/tins/bijection.rb", "lib/tins/case_predicate.rb", "lib/tins/complete.rb", 
"lib/tins/concern.rb", "lib/tins/count_by.rb", "lib/tins/date_dummy.rb", 
"lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", 
"lib/tins/deep_dup.rb", "lib/tins/dslkit.rb", 
"lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", 
"lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", 
"lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", 
"lib/tins/if_predicate.rb", "lib/tins/implement.rb", "lib/tins/limited.rb", 
"lib/tins/lines_file.rb", "lib/tins/memoize.rb", 
"lib/tins/method_description.rb", "lib/tins/minimize.rb", 
"lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", 
"lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", 
"lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", 
"lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", 
"lib/tins/responding.rb", "lib/tins/rotate.rb", "lib/tins/secure_write.rb", 
"lib/tins/sexy_singleton.rb", "lib/tins/shuffle.rb", 
"lib/tins/string_byte_order_mark.rb", "lib/tins/string_camelize.rb", 
"lib/tins/string_underscore.rb", "lib/tins/string_version.rb", 
"lib/tins/subhash.rb", "lib/tins/terminal.rb", "lib/tins/thread_local.rb", 
"lib/tins/time_dummy.rb", "lib/tins/to.rb", "lib/tins/to_proc.rb", 
"lib/tins/token.rb", "lib/tins/uniq_by.rb", "lib/tins/version.rb", 
"lib/tins/write.rb", "lib/tins/xt.rb", "lib/tins/xt/annotate.rb", 
"lib/tins/xt/ask_and_send.rb", "lib/tins/xt/attempt.rb", 
"lib/tins/xt/blank.rb", "lib/tins/xt/case_predicate.rb", 
"lib/tins/xt/complete.rb", "lib/tins/xt/concern.rb", "lib/tins/xt/count_by.rb", 
"lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", 
"lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", 
"lib/tins/xt/dslkit.rb", "lib/tins/xt/extract_last_argument_options.rb", 
"lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", 
"lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", 
"lib/tins/xt/if_predicate.rb", "lib/tins/xt/implement.rb", 
"lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", 
"lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", 
"lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", 
"lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", 
"lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", 
"lib/tins/xt/rotate.rb", "lib/tins/xt/secure_write.rb", 
"lib/tins/xt/sexy_singleton.rb", "lib/tins/xt/shuffle.rb", 
"lib/tins/xt/string.rb", "lib/tins/xt/string_byte_order_mark.rb", 
"lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", 
"lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", 
"lib/tins/xt/symbol_to_proc.rb", "lib/tins/xt/time_dummy.rb", 
"lib/tins/xt/time_freezer.rb", "lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", 
"lib/tins/xt/write.rb"]
-  s.files = [".gitignore", ".travis.yml", "COPYING", "Gemfile", "README.md", 
"Rakefile", "TODO", "VERSION", "examples/add_one.png", "examples/add_one.stm", 
"examples/bb3.png", "examples/bb3.stm", "examples/concatenate_compare.mtm", 
"examples/concatenate_compare.png", "examples/length_difference.mtm", 
"examples/length_difference.png", "examples/let.rb", "examples/mail.rb", 
"examples/minsky.rb", "examples/multiply.reg", "examples/null_pattern.rb", 
"examples/ones_difference-mtm.png", "examples/ones_difference-stm.png", 
"examples/ones_difference.mtm", "examples/ones_difference.stm", 
"examples/prefix-equals-suffix-reversed-with-infix.png", 
"examples/prefix-equals-suffix-reversed-with-infix.stm", "examples/recipe.rb", 
"examples/recipe2.rb", "examples/recipe_common.rb", "examples/subtract.reg", 
"examples/turing-graph.rb", "examples/turing.rb", "lib/dslkit.rb", 
"lib/dslkit/polite.rb", "lib/dslkit/rude.rb", "lib/spruz", "lib/spruz.rb", 
"lib/tins.rb", "lib/tins/alias.rb", "lib/tins/annotate.rb", 
"lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", "lib/tins/bijection.rb", 
"lib/tins/case_predicate.rb", "lib/tins/complete.rb", "lib/tins/concern.rb", 
"lib/tins/count_by.rb", "lib/tins/date_dummy.rb", 
"lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", 
"lib/tins/deep_dup.rb", "lib/tins/dslkit.rb", 
"lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", 
"lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", 
"lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", 
"lib/tins/if_predicate.rb", "lib/tins/implement.rb", "lib/tins/limited.rb", 
"lib/tins/lines_file.rb", "lib/tins/memoize.rb", 
"lib/tins/method_description.rb", "lib/tins/minimize.rb", 
"lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", 
"lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", 
"lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", 
"lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", 
"lib/tins/responding.rb", "lib/tins/rotate.rb", "lib/tins/secure_write.rb", 
"lib/tins/sexy_singleton.rb", "lib/tins/shuffle.rb", 
"lib/tins/string_byte_order_mark.rb", "lib/tins/string_camelize.rb", 
"lib/tins/string_underscore.rb", "lib/tins/string_version.rb", 
"lib/tins/subhash.rb", "lib/tins/terminal.rb", "lib/tins/thread_local.rb", 
"lib/tins/time_dummy.rb", "lib/tins/to.rb", "lib/tins/to_proc.rb", 
"lib/tins/token.rb", "lib/tins/uniq_by.rb", "lib/tins/version.rb", 
"lib/tins/write.rb", "lib/tins/xt.rb", "lib/tins/xt/annotate.rb", 
"lib/tins/xt/ask_and_send.rb", "lib/tins/xt/attempt.rb", 
"lib/tins/xt/blank.rb", "lib/tins/xt/case_predicate.rb", 
"lib/tins/xt/complete.rb", "lib/tins/xt/concern.rb", "lib/tins/xt/count_by.rb", 
"lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", 
"lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", 
"lib/tins/xt/dslkit.rb", "lib/tins/xt/extract_last_argument_options.rb", 
"lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", 
"lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", 
"lib/tins/xt/if_predicate.rb", "lib/tins/xt/implement.rb", 
"lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", 
"lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", 
"lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", 
"lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", 
"lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", 
"lib/tins/xt/rotate.rb", "lib/tins/xt/secure_write.rb", 
"lib/tins/xt/sexy_singleton.rb", "lib/tins/xt/shuffle.rb", 
"lib/tins/xt/string.rb", "lib/tins/xt/string_byte_order_mark.rb", 
"lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", 
"lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", 
"lib/tins/xt/symbol_to_proc.rb", "lib/tins/xt/time_dummy.rb", 
"lib/tins/xt/time_freezer.rb", "lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", 
"lib/tins/xt/write.rb", "tests/annotate_test.rb", "tests/ask_and_send_test.rb", 
"tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/shuffle_test.rb", "tests/string_byte_order_mark_test.rb", 
"tests/string_camelize_test.rb", "tests/string_underscore_test.rb", 
"tests/string_version_test.rb", "tests/subhash_test.rb", 
"tests/test_helper.rb", "tests/time_dummy_test.rb", 
"tests/time_freezer_test.rb", "tests/to_test.rb", "tests/token_test.rb", 
"tests/uniq_by_test.rb", "tins.gemspec"]
+  s.extra_rdoc_files = ["README.md", "lib/dslkit.rb", "lib/dslkit/polite.rb", 
"lib/dslkit/rude.rb", "lib/spruz.rb", "lib/tins.rb", "lib/tins/alias.rb", 
"lib/tins/annotate.rb", "lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", 
"lib/tins/bijection.rb", "lib/tins/case_predicate.rb", "lib/tins/complete.rb", 
"lib/tins/concern.rb", "lib/tins/count_by.rb", "lib/tins/date_dummy.rb", 
"lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", 
"lib/tins/deep_dup.rb", "lib/tins/dslkit.rb", 
"lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", 
"lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", 
"lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", 
"lib/tins/if_predicate.rb", "lib/tins/implement.rb", "lib/tins/limited.rb", 
"lib/tins/lines_file.rb", "lib/tins/memoize.rb", 
"lib/tins/method_description.rb", "lib/tins/minimize.rb", 
"lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", 
"lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", 
"lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", 
"lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", 
"lib/tins/responding.rb", "lib/tins/secure_write.rb", 
"lib/tins/sexy_singleton.rb", "lib/tins/string_byte_order_mark.rb", 
"lib/tins/string_camelize.rb", "lib/tins/string_underscore.rb", 
"lib/tins/string_version.rb", "lib/tins/subhash.rb", "lib/tins/terminal.rb", 
"lib/tins/thread_local.rb", "lib/tins/time_dummy.rb", "lib/tins/to.rb", 
"lib/tins/to_proc.rb", "lib/tins/token.rb", "lib/tins/uniq_by.rb", 
"lib/tins/version.rb", "lib/tins/write.rb", "lib/tins/xt.rb", 
"lib/tins/xt/annotate.rb", "lib/tins/xt/ask_and_send.rb", 
"lib/tins/xt/attempt.rb", "lib/tins/xt/blank.rb", 
"lib/tins/xt/case_predicate.rb", "lib/tins/xt/complete.rb", 
"lib/tins/xt/concern.rb", "lib/tins/xt/count_by.rb", 
"lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", 
"lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", 
"lib/tins/xt/dslkit.rb", "lib/tins/xt/extract_last_argument_options.rb", 
"lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", 
"lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", 
"lib/tins/xt/if_predicate.rb", "lib/tins/xt/implement.rb", 
"lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", 
"lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", 
"lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", 
"lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", 
"lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", 
"lib/tins/xt/secure_write.rb", "lib/tins/xt/sexy_singleton.rb", 
"lib/tins/xt/string.rb", "lib/tins/xt/string_byte_order_mark.rb", 
"lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", 
"lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", 
"lib/tins/xt/time_dummy.rb", "lib/tins/xt/time_freezer.rb", 
"lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", "lib/tins/xt/write.rb"]
+  s.files = [".gitignore", ".travis.yml", "COPYING", "Gemfile", "README.md", 
"Rakefile", "TODO", "VERSION", "examples/add_one.png", "examples/add_one.stm", 
"examples/bb3.png", "examples/bb3.stm", "examples/concatenate_compare.mtm", 
"examples/concatenate_compare.png", "examples/length_difference.mtm", 
"examples/length_difference.png", "examples/let.rb", "examples/mail.rb", 
"examples/minsky.rb", "examples/multiply.reg", "examples/null_pattern.rb", 
"examples/ones_difference-mtm.png", "examples/ones_difference-stm.png", 
"examples/ones_difference.mtm", "examples/ones_difference.stm", 
"examples/prefix-equals-suffix-reversed-with-infix.png", 
"examples/prefix-equals-suffix-reversed-with-infix.stm", "examples/recipe.rb", 
"examples/recipe2.rb", "examples/recipe_common.rb", "examples/subtract.reg", 
"examples/turing-graph.rb", "examples/turing.rb", "lib/dslkit.rb", 
"lib/dslkit/polite.rb", "lib/dslkit/rude.rb", "lib/spruz", "lib/spruz.rb", 
"lib/tins.rb", "lib/tins/alias.rb", "lib/tins/annotate.rb", 
"lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", "lib/tins/bijection.rb", 
"lib/tins/case_predicate.rb", "lib/tins/complete.rb", "lib/tins/concern.rb", 
"lib/tins/count_by.rb", "lib/tins/date_dummy.rb", 
"lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", 
"lib/tins/deep_dup.rb", "lib/tins/dslkit.rb", 
"lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", 
"lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", 
"lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", 
"lib/tins/if_predicate.rb", "lib/tins/implement.rb", "lib/tins/limited.rb", 
"lib/tins/lines_file.rb", "lib/tins/memoize.rb", 
"lib/tins/method_description.rb", "lib/tins/minimize.rb", 
"lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", 
"lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", 
"lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", 
"lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", 
"lib/tins/responding.rb", "lib/tins/secure_write.rb", 
"lib/tins/sexy_singleton.rb", "lib/tins/string_byte_order_mark.rb", 
"lib/tins/string_camelize.rb", "lib/tins/string_underscore.rb", 
"lib/tins/string_version.rb", "lib/tins/subhash.rb", "lib/tins/terminal.rb", 
"lib/tins/thread_local.rb", "lib/tins/time_dummy.rb", "lib/tins/to.rb", 
"lib/tins/to_proc.rb", "lib/tins/token.rb", "lib/tins/uniq_by.rb", 
"lib/tins/version.rb", "lib/tins/write.rb", "lib/tins/xt.rb", 
"lib/tins/xt/annotate.rb", "lib/tins/xt/ask_and_send.rb", 
"lib/tins/xt/attempt.rb", "lib/tins/xt/blank.rb", 
"lib/tins/xt/case_predicate.rb", "lib/tins/xt/complete.rb", 
"lib/tins/xt/concern.rb", "lib/tins/xt/count_by.rb", 
"lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", 
"lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", 
"lib/tins/xt/dslkit.rb", "lib/tins/xt/extract_last_argument_options.rb", 
"lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", 
"lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", 
"lib/tins/xt/if_predicate.rb", "lib/tins/xt/implement.rb", 
"lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", 
"lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", 
"lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", 
"lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", 
"lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", 
"lib/tins/xt/secure_write.rb", "lib/tins/xt/sexy_singleton.rb", 
"lib/tins/xt/string.rb", "lib/tins/xt/string_byte_order_mark.rb", 
"lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", 
"lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", 
"lib/tins/xt/time_dummy.rb", "lib/tins/xt/time_freezer.rb", 
"lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", "lib/tins/xt/write.rb", 
"tests/annotate_test.rb", "tests/ask_and_send_test.rb", 
"tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/string_byte_order_mark_test.rb", "tests/string_camelize_test.rb", 
"tests/string_underscore_test.rb", "tests/string_version_test.rb", 
"tests/subhash_test.rb", "tests/test_helper.rb", "tests/time_dummy_test.rb", 
"tests/time_freezer_test.rb", "tests/to_test.rb", "tests/token_test.rb", 
"tests/uniq_by_test.rb", "tins.gemspec"]
   s.homepage = "https://github.com/flori/tins";
   s.licenses = ["MIT"]
   s.rdoc_options = ["--title", "Tins - Useful stuff.", "--main", "README.md"]
-  s.rubygems_version = "2.4.6"
+  s.required_ruby_version = Gem::Requirement.new(">= 2.0")
+  s.rubygems_version = "2.5.0"
   s.summary = "Useful stuff."
-  s.test_files = ["tests/annotate_test.rb", "tests/ask_and_send_test.rb", 
"tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/shuffle_test.rb", "tests/string_byte_order_mark_test.rb", 
"tests/string_camelize_test.rb", "tests/string_underscore_test.rb", 
"tests/string_version_test.rb", "tests/subhash_test.rb", 
"tests/test_helper.rb", "tests/time_dummy_test.rb", 
"tests/time_freezer_test.rb", "tests/to_test.rb", "tests/token_test.rb", 
"tests/uniq_by_test.rb", "tests/annotate_test.rb", 
"tests/ask_and_send_test.rb", "tests/attempt_test.rb", 
"tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/shuffle_test.rb", "tests/string_byte_order_mark_test.rb", 
"tests/string_camelize_test.rb", "tests/string_underscore_test.rb", 
"tests/string_version_test.rb", "tests/subhash_test.rb", 
"tests/time_dummy_test.rb", "tests/time_freezer_test.rb", "tests/to_test.rb", 
"tests/token_test.rb", "tests/uniq_by_test.rb"]
+  s.test_files = ["tests/annotate_test.rb", "tests/ask_and_send_test.rb", 
"tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/string_byte_order_mark_test.rb", "tests/string_camelize_test.rb", 
"tests/string_underscore_test.rb", "tests/string_version_test.rb", 
"tests/subhash_test.rb", "tests/test_helper.rb", "tests/time_dummy_test.rb", 
"tests/time_freezer_test.rb", "tests/to_test.rb", "tests/token_test.rb", 
"tests/uniq_by_test.rb", "tests/annotate_test.rb", 
"tests/ask_and_send_test.rb", "tests/attempt_test.rb", 
"tests/bijection_test.rb", "tests/blank_full_test.rb", 
"tests/case_predicate_test.rb", "tests/concern_test.rb", 
"tests/count_by_test.rb", "tests/date_dummy_test.rb", 
"tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", 
"tests/deep_dup_test.rb", "tests/delegate_test.rb", "tests/dslkit_test.rb", 
"tests/dynamic_scope_test.rb", "tests/extract_last_argument_options_test.rb", 
"tests/file_binary_test.rb", "tests/find_test.rb", "tests/from_module_test.rb", 
"tests/generator_test.rb", "tests/go_test.rb", 
"tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", 
"tests/if_predicate_test.rb", "tests/implement_test.rb", 
"tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", 
"tests/method_description_test.rb", "tests/minimize_test.rb", 
"tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", 
"tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", 
"tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", 
"tests/range_plus_test.rb", "tests/require_maybe_test.rb", 
"tests/responding_test.rb", "tests/rotate_test.rb", "tests/scope_test.rb", 
"tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", 
"tests/string_byte_order_mark_test.rb", "tests/string_camelize_test.rb", 
"tests/string_underscore_test.rb", "tests/string_version_test.rb", 
"tests/subhash_test.rb", "tests/time_dummy_test.rb", 
"tests/time_freezer_test.rb", "tests/to_test.rb", "tests/token_test.rb", 
"tests/uniq_by_test.rb"]
 
   if s.respond_to? :specification_version then
     s.specification_version = 4
 
     if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
-      s.add_development_dependency(%q<gem_hadar>, ["~> 1.2.0"])
-      s.add_development_dependency(%q<test-unit>, ["~> 2.5"])
+      s.add_development_dependency(%q<gem_hadar>, ["~> 1.3.1"])
+      s.add_development_dependency(%q<test-unit>, ["~> 3.1"])
     else
-      s.add_dependency(%q<gem_hadar>, ["~> 1.2.0"])
-      s.add_dependency(%q<test-unit>, ["~> 2.5"])
+      s.add_dependency(%q<gem_hadar>, ["~> 1.3.1"])
+      s.add_dependency(%q<test-unit>, ["~> 3.1"])
     end
   else
-    s.add_dependency(%q<gem_hadar>, ["~> 1.2.0"])
-    s.add_dependency(%q<test-unit>, ["~> 2.5"])
+    s.add_dependency(%q<gem_hadar>, ["~> 1.3.1"])
+    s.add_dependency(%q<test-unit>, ["~> 3.1"])
   end
 end


Reply via email to