README.md in version_compare-0.0.1 vs README.md in version_compare-0.0.2
- old
+ new
@@ -1,28 +1,30 @@
# Version Compare
[![Gem Version](https://badge.fury.io/rb/version_compare.png)](http://badge.fury.io/rb/version_compare)
-Version Compare allows you to easily compare if one Version is >, >=, ==, !=, <,
-or <= to another Version. It aims to be as light and flexible as possible. Inputs
-can be a String, Integer, Float, Array, or any object that defines `#to_version`
-to return one of the aforementioned types.
+Version Compare allows you to easily compare if one Version (string) to another
+Version (string). It aims to be as light and flexible as possible. Inputs can be
+a String, Integer, Float, Array, or any object that defines `#to_version`.
-In an effort to remain simple, Version Compare only works with up to four
-numeric values separated by periods:
+For simplicity's sake, Version Compare only works with up to four numeric
+values:
```ruby
"<major>.<minor>.<tiny>.<patch>"
+[<major>, <minor>, <tiny>, <patch>]
```
+
## Compatibility
Tested with:
* Ruby: MRI 1.9.3
-* Ruby: MRI 2.0.0 +
+* Ruby: MRI 2+
+
## Installation
Add this line to your application's Gemfile:
```ruby
@@ -33,10 +35,11 @@
```ruby
bundle
```
+
## Usage
To get started, you can either use `Version.new(<value>)` or `Version(<value>)`.
To get the latter to work, you'll need to call `include ::Conversions` in the
class or context you're wanting to use it at.
@@ -57,11 +60,11 @@
[1] pry(main)> include ::Conversions
=> Object
[2] pry(main)> Version(1.0) > Version(1)
=> false
-# - OR (without using `include`) -
+# - OR (without using `include ::Conversions`) -
[1] pry(main)> Conversions.Version(1.0) > Conversions.Version(1)
=> false
```
@@ -74,12 +77,15 @@
Version("1.2.3") >= Version("1.2") # => true
Version("1.2.3.4") <= Version("1.2.3.4") # => true
Version([1, 2]) == Version(["1", "2"]) # => true
Version("1.2.0.0") == Version(1.2) # => true
Version("1.0.0.0") != Version(1) # => false
+[Version(1), Version("1.0.0.1"), Version(0.1)].sort # => ["0.1", "1", "1.0.0.1"]
+[Version(1), Version("1.0.0.1"), Version(0.1)].sort { |a, b| b <=> a } # => ["1.0.0.1", "1", "0.1"]
```
+
### Wait, so what exactly is this `Version` ... constant?
`Version()` is actually a conversion function. It follows the Ruby convention of
defining a conversion function that uses the same name as the class it
represents, such as how `Array()` converts inputs to an `Array` object.
@@ -95,15 +101,15 @@
```ruby
Version.new(OpenStruct.new(a: 1)).to_s # => "0"
```
+
### Can I pass my own custom objects into `Version()`?
Yes! All you have to do is define a `#to_version` implicit conversion method in
-your object. Just have it return either a String, an Integer, a Float, or an
-Array.
+your object that creates a new Version object in the usual fashion.
```ruby
class MyObject
VERSION = 1.9
def to_version
@@ -112,12 +118,13 @@
end
Version(MyObject.new) > Version(2.0) # => false
```
-### Why do you seem to excited about the custom object thing?
+### Why do you seem so excited about the custom object thing?
+
Because, it opens up the world! Here's an example:
```ruby
# Given a Rails app:
@@ -136,10 +143,11 @@
# Now, from the context of that Rails app you can call:
Version(Rails.application) > Version(1.0) # => true
```
-So you see, the sky is the limit...
+So you see... the sky is the limit!
+
## Author
- Paul Dobbins