<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Ridiculously simple JavaScript version string to object parser</title>
	<atom:link href="http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/feed/" rel="self" type="application/rss+xml" />
	<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/</link>
	<description>The brutally honest, first-person account of Meitar Moscovitz&#039;s life.</description>
	<lastBuildDate>Mon, 21 May 2012 09:39:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Petrica</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-451966</link>
		<dc:creator>Petrica</dc:creator>
		<pubDate>Thu, 02 Feb 2012 16:48:14 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-451966</guid>
		<description>Another version here... shorter

function compareVersions(a, b) {
  var v1 = a.split(&#039;.&#039;);
  var v2 = b.split(&#039;.&#039;);
  for(var i = 0; i &lt; Math.min(v1.length, v2.length); i++) {
    var res = v1[i] - v2[i];
    if (res != 0)
      return res;
  }
  return 0;
}</description>
		<content:encoded><![CDATA[<p>Another version here&#8230; shorter</p>
<p>function compareVersions(a, b) {<br />
  var v1 = a.split(&#8216;.&#8217;);<br />
  var v2 = b.split(&#8216;.&#8217;);<br />
  for(var i = 0; i &lt; Math.min(v1.length, v2.length); i++) {<br />
    var res = v1[i] &#8211; v2[i];<br />
    if (res != 0)<br />
      return res;<br />
  }<br />
  return 0;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raleigh Habersberger</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-336476</link>
		<dc:creator>Raleigh Habersberger</dc:creator>
		<pubDate>Tue, 24 May 2011 00:31:58 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-336476</guid>
		<description>Depending on your needs, another solution is to turn all the dots into zeros which can then be parsed as an integer and very easily compared to other versions as actual numbers. You dont get the option to easily compare major, minor or patch with this method but sometimes depending on your problem, this is more of what  you need.

Example:
var version=&quot;2.1.2&quot;;
console.log(str.replace(/\./g,&quot;0&quot;));

output would be: &quot;20102&quot;

var version=&quot;2.2.2&quot;;
console.log(str.replace(/\./g,&quot;0&quot;));

output would be: &quot;20202&quot;

you may need to add code to handle cases where a period is not present as in. &quot;2.0&quot;</description>
		<content:encoded><![CDATA[<p>Depending on your needs, another solution is to turn all the dots into zeros which can then be parsed as an integer and very easily compared to other versions as actual numbers. You dont get the option to easily compare major, minor or patch with this method but sometimes depending on your problem, this is more of what  you need.</p>
<p>Example:<br />
var version=&#8221;2.1.2&#8243;;<br />
console.log(str.replace(/\./g,&#8221;0&#8243;));</p>
<p>output would be: &#8220;20102&#8243;</p>
<p>var version=&#8221;2.2.2&#8243;;<br />
console.log(str.replace(/\./g,&#8221;0&#8243;));</p>
<p>output would be: &#8220;20202&#8243;</p>
<p>you may need to add code to handle cases where a period is not present as in. &#8220;2.0&#8243;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Carver</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-225432</link>
		<dc:creator>Mark Carver</dc:creator>
		<pubDate>Sat, 17 Jul 2010 19:01:21 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-225432</guid>
		<description>Nice function. Tightened it up a bit by using regex and combined it with the comment above. Hope this helps.

&lt;code&gt;
var versionCompare = function(minimum, current) {
  var minimum = &#039;&#039; + minimum; // Convert number to string
  var current = &#039;&#039; + current;
  var parseVersion = function(version) {
    version = /(\d+)\.?(\d+)?\.?(\d+)?/.exec(version);
    return {
      major: parseInt(version[1]) &#124;&#124; 0,
      minor: parseInt(version[2]) &#124;&#124; 0,
      patch: parseInt(version[3]) &#124;&#124; 0
    }
  };
  minimum = parseVersion(minimum);
  current = parseVersion(current);
  if (minimum.major != current.major)
    return (current.major &gt; minimum.major);
  else {
    if (minimum.minor != current.minor)
      return (current.minor &gt; minimum.minor);
    else {
      if (minimum.patch != current.patch) {
          return (current.patch &gt; minimum.patch);
      }
      else {
        return true;
      }
    }
  } 
};
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Nice function. Tightened it up a bit by using regex and combined it with the comment above. Hope this helps.</p>
<p><code><br />
var versionCompare = function(minimum, current) {<br />
  var minimum = '' + minimum; // Convert number to string<br />
  var current = '' + current;<br />
  var parseVersion = function(version) {<br />
    version = /(\d+)\.?(\d+)?\.?(\d+)?/.exec(version);<br />
    return {<br />
      major: parseInt(version[1]) || 0,<br />
      minor: parseInt(version[2]) || 0,<br />
      patch: parseInt(version[3]) || 0<br />
    }<br />
  };<br />
  minimum = parseVersion(minimum);<br />
  current = parseVersion(current);<br />
  if (minimum.major != current.major)<br />
    return (current.major &gt; minimum.major);<br />
  else {<br />
    if (minimum.minor != current.minor)<br />
      return (current.minor &gt; minimum.minor);<br />
    else {<br />
      if (minimum.patch != current.patch) {<br />
          return (current.patch &gt; minimum.patch);<br />
      }<br />
      else {<br />
        return true;<br />
      }<br />
    }<br />
  }<br />
};<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Carver</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-225431</link>
		<dc:creator>Mark Carver</dc:creator>
		<pubDate>Sat, 17 Jul 2010 19:00:20 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-225431</guid>
		<description>Nice function. Tightened it up a bit by using regex and combined it with the comment above. Hope this helps.

var versionCompare = function(minimum, current) {
  var minimum = &#039;&#039; + minimum; // Convert number to string
  var current = &#039;&#039; + current;
  var parseVersion = function(version) {
    version = /(\d+)\.?(\d+)?\.?(\d+)?/.exec(version);
    return {
      major: parseInt(version[1]) &#124;&#124; 0,
      minor: parseInt(version[2]) &#124;&#124; 0,
      patch: parseInt(version[3]) &#124;&#124; 0
    }
  };
  minimum = parseVersion(minimum);
  current = parseVersion(current);
  if (minimum.major != current.major)
    return (current.major &gt; minimum.major);
  else {
    if (minimum.minor != current.minor)
      return (current.minor &gt; minimum.minor);
    else {
      if (minimum.patch != current.patch) {
          return (current.patch &gt; minimum.patch);
      }
      else {
        return true;
      }
    }
  } 
};</description>
		<content:encoded><![CDATA[<p>Nice function. Tightened it up a bit by using regex and combined it with the comment above. Hope this helps.</p>
<p>var versionCompare = function(minimum, current) {<br />
  var minimum = &#8221; + minimum; // Convert number to string<br />
  var current = &#8221; + current;<br />
  var parseVersion = function(version) {<br />
    version = /(\d+)\.?(\d+)?\.?(\d+)?/.exec(version);<br />
    return {<br />
      major: parseInt(version[1]) || 0,<br />
      minor: parseInt(version[2]) || 0,<br />
      patch: parseInt(version[3]) || 0<br />
    }<br />
  };<br />
  minimum = parseVersion(minimum);<br />
  current = parseVersion(current);<br />
  if (minimum.major != current.major)<br />
    return (current.major &gt; minimum.major);<br />
  else {<br />
    if (minimum.minor != current.minor)<br />
      return (current.minor &gt; minimum.minor);<br />
    else {<br />
      if (minimum.patch != current.patch) {<br />
          return (current.patch &gt; minimum.patch);<br />
      }<br />
      else {<br />
        return true;<br />
      }<br />
    }<br />
  }<br />
};</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Silverstein</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-215918</link>
		<dc:creator>Jesse Silverstein</dc:creator>
		<pubDate>Sun, 30 May 2010 13:31:48 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-215918</guid>
		<description>Thanks for this object parser! Saved me some time as well.

For anyone looking for a minimum version requirement met function that returns a Boolean, something like this should work:

&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;vMinMet = function(vmin, vcurrent) {
    minimum = parseVersionString(vmin);
    running = parseVersionString(vcurrent);
    if (running.major != minimum.major)
        return (running.major &gt; minimum.major);
    else {
        if (running.minor != minimum.minor)
            return (running.minor &gt; minimum.minor);
        else {
            if (running.patch != minimum.patch)
                return (running.patch &gt; minimum.patch);
            else
                return true;
        }
    }
};&lt;/code&gt;&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Thanks for this object parser! Saved me some time as well.</p>
<p>For anyone looking for a minimum version requirement met function that returns a Boolean, something like this should work:</p>
<pre><code class="javascript">vMinMet = function(vmin, vcurrent) {
    minimum = parseVersionString(vmin);
    running = parseVersionString(vcurrent);
    if (running.major != minimum.major)
        return (running.major &gt; minimum.major);
    else {
        if (running.minor != minimum.minor)
            return (running.minor &gt; minimum.minor);
        else {
            if (running.patch != minimum.patch)
                return (running.patch &gt; minimum.patch);
            else
                return true;
        }
    }
};</code></pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: zch</title>
		<link>http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/comment-page-1/#comment-154426</link>
		<dc:creator>zch</dc:creator>
		<pubDate>Mon, 08 Jun 2009 19:23:01 +0000</pubDate>
		<guid isPermaLink="false">http://maymay.net/blog/?p=468#comment-154426</guid>
		<description>Thanks, saved me some time</description>
		<content:encoded><![CDATA[<p>Thanks, saved me some time</p>
]]></content:encoded>
	</item>
</channel>
</rss>

