<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,9 @@
-CSSMin History
+JSMin History
 ================================================================================
 
+Version 1.0.1 (2008-11-10)
+  * Ruby 1.9 compatibility.
+  * Minor performance improvements.
+
 Version 1.0.0 (2008-03-22)
   * First release.</diff>
      <filename>HISTORY</filename>
    </modified>
    <modified>
      <diff>@@ -34,7 +34,7 @@ thoth_gemspec = Gem::Specification.new do |s|
   s.rubyforge_project = 'riposte'
 
   s.name     = 'jsmin'
-  s.version  = '1.0.0'
+  s.version  = '1.0.1'
   s.author   = 'Ryan Grove'
   s.email    = 'ryan@wonko.com'
   s.homepage = 'http://github.com/rgrove/jsmin/'</diff>
      <filename>Rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,19 +5,19 @@
 # as follows:
 #
 # Copyright (c) 2002 Douglas Crockford  (www.crockford.com)
-# 
+#
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
 # in the Software without restriction, including without limitation the rights
 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 # copies of the Software, and to permit persons to whom the Software is
 # furnished to do so, subject to the following conditions:
-# 
+#
 # The above copyright notice and this permission notice shall be included in all
 # copies or substantial portions of the Software.
-# 
+#
 # The Software shall be used for Good, not Evil.
-# 
+#
 # THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -34,7 +34,7 @@ require 'strscan'
 # Ruby implementation of Douglas Crockford's JavaScript minifier, JSMin.
 #
 # Author::    Ryan Grove (mailto:ryan@wonko.com)
-# Version::   1.0.0 (2008-03-22)
+# Version::   1.0.1 (2008-11-10)
 # Copyright:: Copyright (c) 2008 Ryan Grove. All rights reserved.
 # Website::   http://github.com/rgrove/jsmin/
 #
@@ -46,11 +46,27 @@ require 'strscan'
 #   File.open('example.js', 'r') {|file| puts JSMin.minify(file) }
 #
 module JSMin
-  ORD_LF    = &quot;\n&quot;[0].freeze
-  ORD_SPACE = ' '[0].freeze
-  
+  CHR_APOS       = &quot;'&quot;.freeze
+  CHR_ASTERISK   = '*'.freeze
+  CHR_BACKSLASH  = '\\'.freeze
+  CHR_CR         = &quot;\r&quot;.freeze
+  CHR_FRONTSLASH = '/'.freeze
+  CHR_LF         = &quot;\n&quot;.freeze
+  CHR_QUOTE      = '&quot;'.freeze
+  CHR_SPACE      = ' '.freeze
+
+  if RUBY_VERSION &gt;= '1.9'
+    ORD_LF    = &quot;\n&quot;.freeze
+    ORD_SPACE = ' '.freeze
+    ORD_TILDE = '~'.freeze
+  else
+    ORD_LF    = &quot;\n&quot;[0].freeze
+    ORD_SPACE = ' '[0].freeze
+    ORD_TILDE = '~'[0].freeze
+  end
+
   class &lt;&lt; self
-    
+
     # Reads JavaScript from +input+ (which can be a String or an IO object) and
     # returns a String containing minified JS.
     def minify(input)
@@ -60,20 +76,20 @@ module JSMin
       @b         = nil
       @lookahead = nil
       @output    = ''
-      
+
       action_get
-      
+
       while !@a.nil? do
         case @a
-        when ' '
+        when CHR_SPACE
           if alphanum?(@b)
             action_output
           else
             action_copy
           end
-          
-        when &quot;\n&quot;
-          if @b == ' '
+
+        when CHR_LF
+          if @b == CHR_SPACE
             action_get
           elsif @b =~ /[{\[\(+-]/
             action_output
@@ -84,15 +100,15 @@ module JSMin
               action_copy
             end
           end
-          
+
         else
-          if @b == ' '
+          if @b == CHR_SPACE
             if alphanum?(@a)
               action_output
             else
               action_get
             end
-          elsif @b == &quot;\n&quot;
+          elsif @b == CHR_LF
             if @a =~ /[}\]\)\\&quot;+-]/
               action_output
             else
@@ -107,124 +123,124 @@ module JSMin
           end
         end
       end
-      
+
       @output
     end
-    
+
     private
-    
+
     # Corresponds to action(1) in jsmin.c.
     def action_output
       @output &lt;&lt; @a
       action_copy
     end
-    
+
     # Corresponds to action(2) in jsmin.c.
     def action_copy
       @a = @b
-      
-      if @a == '\'' || @a == '&quot;'
+
+      if @a == CHR_APOS || @a == CHR_QUOTE
         loop do
           @output &lt;&lt; @a
           @a = get
-          
+
           break if @a == @b
-          
+
           if @a[0] &lt;= ORD_LF
             raise &quot;JSMin parse error: unterminated string literal: #{@a}&quot;
           end
-          
-          if @a == '\\'
+
+          if @a == CHR_BACKSLASH
             @output &lt;&lt; @a
             @a = get
-            
+
             if @a[0] &lt;= ORD_LF
               raise &quot;JSMin parse error: unterminated string literal: #{@a}&quot;
             end
           end
         end
       end
-      
+
       action_get
     end
-    
+
     # Corresponds to action(3) in jsmin.c.
     def action_get
       @b = nextchar
-      
-      if @b == '/' &amp;&amp; (@a == &quot;\n&quot; || @a =~ /[\(,=:\[!&amp;|?{};]/)
+
+      if @b == CHR_FRONTSLASH &amp;&amp; (@a == CHR_LF || @a =~ /[\(,=:\[!&amp;|?{};]/)
         @output &lt;&lt; @a
         @output &lt;&lt; @b
-        
+
         loop do
           @a = get
-          
-          if @a == '/'
+
+          if @a == CHR_FRONTSLASH
             break
-          elsif @a == '\\'
+          elsif @a == CHR_BACKSLASH
             @output &lt;&lt; @a
             @a = get
           elsif @a[0] &lt;= ORD_LF
             raise &quot;JSMin parse error: unterminated regular expression &quot; +
                 &quot;literal: #{@a}&quot;
           end
-          
+
           @output &lt;&lt; @a
         end
-        
+
         @b = nextchar
       end
     end
-    
+
     # Returns true if +c+ is a letter, digit, underscore, dollar sign,
     # backslash, or non-ASCII character.
     def alphanum?(c)
-      c.is_a?(String) &amp;&amp; !c.empty? &amp;&amp; (c[0] &gt; 126 || c =~ /[0-9a-z_$\\]/i)
+      c.is_a?(String) &amp;&amp; !c.empty? &amp;&amp; (c[0] &gt; ORD_TILDE || c =~ /[0-9a-z_$\\]/i)
     end
-    
+
     # Returns the next character from the input. If the character is a control
     # character, it will be translated to a space or linefeed.
     def get
       c = @lookahead.nil? ? @js.getch : @lookahead
       @lookahead = nil
 
-      return c if c.nil? || c == &quot;\n&quot; || c[0] &gt;= ORD_SPACE
-      return &quot;\n&quot; if c == &quot;\r&quot;
+      return c if c.nil? || c == CHR_LF || c[0] &gt;= ORD_SPACE
+      return &quot;\n&quot; if c == CHR_CR
       return ' '
     end
-    
+
     # Gets the next character, excluding comments.
     def nextchar
       c = get
-      return c unless c == '/'
-      
+      return c unless c == CHR_FRONTSLASH
+
       case peek
-      when '/'
+      when CHR_FRONTSLASH
         loop do
           c = get
           return c if c[0] &lt;= ORD_LF
         end
-      
-      when '*'
+
+      when CHR_ASTERISK
         get
         loop do
           case get
-          when '*'
-            if peek == '/'
+          when CHR_ASTERISK
+            if peek == CHR_FRONTSLASH
               get
               return ' '
             end
-          
+
           when nil
             raise 'JSMin parse error: unterminated comment'
           end
         end
-      
+
       else
         return c
       end
     end
-    
+
     # Gets the next character without getting it.
     def peek
       @lookahead = get</diff>
      <filename>lib/jsmin.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>db6b78d8fa38d4de6a6231dff28a12178ca95b65</id>
    </parent>
  </parents>
  <author>
    <name>Ryan Grove</name>
    <email>ryan@wonko.com</email>
  </author>
  <url>http://github.com/rgrove/jsmin/commit/d524770c3200b71788301bf9779ba8d2903b4cfe</url>
  <id>d524770c3200b71788301bf9779ba8d2903b4cfe</id>
  <committed-date>2008-11-10T22:42:10-08:00</committed-date>
  <authored-date>2008-11-10T22:42:10-08:00</authored-date>
  <message>Fix Ruby 1.9 compatibility; minor performance improvements</message>
  <tree>72a285d4efaca86d67741052b9292915d60ef48e</tree>
  <committer>
    <name>Ryan Grove</name>
    <email>ryan@wonko.com</email>
  </committer>
</commit>
