README.adoc in versionaire-8.6.0 vs README.adoc in versionaire-8.7.0
- old
+ new
@@ -157,24 +157,24 @@
Implicit conversion to a `+String+` is supported:
[source,ruby]
----
-"1.0.0".match Versionaire::Version[major: 1] # <MatchData "1.0.0">
+"1.0.0".match Versionaire::Version[major: 1] # <MatchData "1.0.0">
----
==== Explicit
Explicit conversion to a `String`, `Array`, or `Hash` is supported:
[source,ruby]
----
version = Versionaire::Version.new
-version.to_s # "0.0.0"
-version.to_a # [0, 0, 0]
-version.to_h # {major: 0, minor: 0, patch: 0}
+version.to_s # "0.0.0"
+version.to_a # [0, 0, 0]
+version.to_h # {major: 0, minor: 0, patch: 0}
----
=== Comparisons
All versions are comparable which means any of the operators from the `+Comparable+` module will
@@ -183,42 +183,79 @@
[source,ruby]
----
version_1 = Versionaire::Version "1.0.0"
version_2 = Versionaire::Version "2.0.0"
-version_1 < version_2 # true
-version_1 <= version_2 # true
-version_1 == version_2 # false (see Equality section above for details)
-version_1 > version_2 # false
-version_1 >= version_2 # false
-version_1.between? version_1, version_2 # true
-version_1.clamp version_1, version_2 # version_1 (added in Ruby 2.4.0)
+version_1 < version_2 # true
+version_1 <= version_2 # true
+version_1 == version_2 # false (see Equality section above for details)
+version_1 > version_2 # false
+version_1 >= version_2 # false
+version_1.between? version_1, version_2 # true
+version_1.clamp version_1, version_2 # version_1 (added in Ruby 2.4.0)
----
=== Math
-Versions can be added and subtracted from each other.
+Versions can be added, subtracted, sequentially increased, or sequentially decreased from each
+other.
==== Addition
+Versions can be added together to produce a resulting version sum.
+
[source,ruby]
----
version_1 = Versionaire::Version[major: 1, minor: 2, patch: 3]
version_2 = Versionaire::Version[major: 2, minor: 5, patch: 7]
-version_1 + version_2 # "3.7.10"
+version_1 + version_2 # "3.7.10"
----
==== Subtraction
+Versions can be substracted from each other as long as there isn't a negative result.
+
[source,ruby]
----
version_1 = Versionaire::Version[major: 1, minor: 2, patch: 3]
version_2 = Versionaire::Version[major: 1, minor: 1, patch: 1]
-version_1 - version_2 # "0.1.2"
+version_1 - version_2 # "0.1.2"
version_1 = Versionaire::Version[major: 1]
version_2 = Versionaire::Version[major: 5]
-version_1 - version_2 # Fails with a Versionaire::Errors::NegativeNumber
+version_1 - version_2 # Versionaire::Errors::NegativeNumber
+----
+
+==== Up
+
+Versions can be sequentially increased or given a specific version to jump to.
+
+[source,ruby]
+----
+version = Versionaire::Version[major: 1, minor: 1, patch: 1]
+version.up :major # => "2.1.1"
+version.up :major, 3 # => "4.1.1"
+version.up :minor # => "1.2.1"
+version.up :minor, 3 # => "1.4.1"
+version.up :patch # => "1.1.2"
+version.up :patch, 3 # => "1.1.4"
+----
+
+==== Down
+
+Versions can be sequentially decreased or given a specific version to jump to as long as the result
+is not negative.
+
+[source,ruby]
+----
+version = Versionaire::Version[major: 5, minor: 5, patch: 5]
+version.down :major # => "4.5.5"
+version.down :major, 3 # => "2.5.5"
+version.down :minor # => "5.4.5"
+version.down :minor, 3 # => "5.2.5"
+version.down :patch # => "5.5.4"
+version.down :patch, 3 # => "5.5.2"
+version.down :major, 6 # => Versionaire::Errors::NegativeNumber
----
== Development
To contribute, run: