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