2007/9/27, why the lucky stiff <[EMAIL PROTECTED]>:
> Well, case-sensitiveness would be a prob with 1.5 as well.  Since
> @env.HTTP_HOST will work and @env.http_host will not.

True. So what do you think of the attached patch ? It removes roughly
50 octets to camping.rb and seems to work pretty well, except for apps
that used :symbols to access H members.

-- 
Cheers,
  zimbatm
Index: lib/camping.rb
===================================================================
--- lib/camping.rb	(revision 232)
+++ lib/camping.rb	(working copy)
@@ -1,7 +1,7 @@
-%w[active_support markaby tempfile uri].map{|l|require l};module Camping;C=self
-S=IO.read(__FILE__)rescue nil;P="Cam\ping Problem!";H=HashWithIndifferentAccess
-class H;def method_missing m,*a;m.to_s=~/=$/?self[$`]=a[0]:a==[]?self[m]:super
-end;alias u regular_update;end;module Helpers def R c,*g;p,h=/\(.+?\)/,g.
+%w[markaby tempfile uri].map{|l|require l};module Camping;C=self
+S=IO.read(__FILE__)rescue nil;P="Cam\ping Problem!";class H<Hash;
+def method_missing m,*a;m.to_s=~/=$/?self[$`]=a[0]:a==[]?self[m.to_s]:super
+end;alias u merge!;end;module Helpers def R c,*g;p,h=/\(.+?\)/,g.
 grep(Hash);(g-=h).inject(c.urls.find{|x|x.scan(p).size==g.size}.dup){|s,a|s.
 sub p,C.escape((a[a.class.primary_key]rescue a))}+(h.any?? "?"+h[0].
 map{|x|x.map{|z|C.escape z}*"="}*"&": "")end;def /(p);p[/^\//[EMAIL PROTECTED]:p
@@ -17,11 +17,11 @@
 match e.CONTENT_TYPE;b=/(?:\r?\n|\A)#{Regexp::quote"--#$1"}(?:--)?\r$/;until
 @in.eof?;fh=H[];for l [EMAIL PROTECTED];case l;when Z;break;when/^Content-D.+?: form-data;/
 fh.u H[*$'.scan(/(?:\s(\w+)="([^"]+)")/).flatten];when
-/^Content-Type: (.+?)(\r$|\Z)/m;fh[:type]=$1;end;end;fn=fh[:name];o=if fh[
-:filename];o=fh[:tempfile]=Tempfile.new(:C);o.binmode;else;fh=""end;s=8192;k=''
+/^Content-Type: (.+?)(\r$|\Z)/m;fh.type=$1;end;end;fn=fh.name;o=if fh.
+filename;o=fh.tempfile=Tempfile.new(:C);o.binmode;else;fh=""end;s=8192;k=''
 [EMAIL PROTECTED](s*2);while l;if(k<<l)=~b;o<<$`.chomp;@in.seek(-$'.size,IO::SEEK_CUR)
-break;end;o<<k.slice!(0...s);[EMAIL PROTECTED](s);end;C.qsp(fn,'&;',fh,q)if fn;fh[
-:tempfile].rewind if fh.is_a?H;end;[EMAIL PROTECTED]"post" && e.CONTENT_TYPE==
+break;end;o<<k.slice!(0...s);[EMAIL PROTECTED](s);end;C.qsp(fn,'&;',fh,q)if fn;fh.
+tempfile.rewind if fh.is_a?H;end;[EMAIL PROTECTED]"post" && e.CONTENT_TYPE==
 "application/x-www-form-urlencoded";q.u C.qsp(@in.read)end;@cookies,@[EMAIL PROTECTED]
 dup,q.dup end;def service*a;@body=send(@method,*a)if [EMAIL PROTECTED]
 headers["Set-Cookie"]=cookies.map{|k,v|"#{k}=#{C.escape v}; path=#{self/'/'}"if
Index: lib/camping-unabridged.rb
===================================================================
--- lib/camping-unabridged.rb	(revision 232)
+++ lib/camping-unabridged.rb	(working copy)
@@ -28,7 +28,7 @@
 # http://rubyforge.org/projects/mongrel  Mongrel comes with examples
 # in its <tt>examples/camping</tt> directory. 
 #
-%w[active_support markaby tempfile uri].map { |l| require l }
+%w[markaby tempfile uri].map { |l| require l }
 
 # == Camping 
 #
@@ -85,8 +85,7 @@
   C = self
   S = IO.read(__FILE__) rescue nil
   P = "Cam\ping Problem!"
-  H = HashWithIndifferentAccess
-  # An object-like Hash, based on ActiveSupport's HashWithIndifferentAccess.
+  # An object-like Hash.
   # All Camping query string and cookie variables are loaded as this.
   # 
   # To access the query string, for instance, use the <tt>@input</tt> variable.
@@ -109,7 +108,7 @@
   #
   # Use the <tt>@cookies</tt> variable in the same fashion to access cookie variables.
   # Also, the <tt>@env</tt> variable is an H containing the HTTP headers and server info.
-  class H
+  class H < Hash
     # Gets or sets keys in the hash.
     #
     #   @cookies.my_favorite = :macadamian
@@ -117,9 +116,9 @@
     #   => :macadamian
     #
     def method_missing(m,*a)
-        m.to_s=~/=$/?self[$`]=a[0]:a==[]?self[m]:super
+        m.to_s=~/=$/?self[$`]=a[0]:a==[]?self[m.to_s]:super
     end
-    alias u regular_update
+    alias u merge!
   end
 
   # Helpers contains methods available in your controllers and views.  You may add
@@ -368,12 +367,12 @@
             when /^Content-D.+?: form-data;/
               fh.u H[*$'.scan(/(?:\s(\w+)="([^"]+)")/).flatten]
             when /^Content-Type: (.+?)(\r$|\Z)/m
-              fh[:type] = $1
+              fh.type = $1
             end
           end
-          fn=fh[:name]
-          o=if fh[:filename]
-            o=fh[:tempfile]=Tempfile.new(:C)
+          fn=fh.name
+          o=if fh.filename
+            o=fh.tempfile=Tempfile.new(:C)
             o.binmode
           else
             fh=""
@@ -391,7 +390,7 @@
             [EMAIL PROTECTED](s) 
           end
           C.qsp(fn,'&;',fh,q) if fn
-          fh[:tempfile].rewind if fh.is_a?H
+          fh.tempfile.rewind if fh.is_a?H
         end
       elsif @method == "post" and e.CONTENT_TYPE == "application/x-www-form-urlencoded"
         q.u(C.qsp(@in.read))
@@ -673,7 +672,7 @@
     #   Blog.post(:Login, :input => {'username' => 'admin', 'password' => 'camping'})
     #   #=> #<Blog::Controllers::Login @user=... >
     #
-    #   Blog.get(:Info, :env => {:HTTP_HOST => 'wagon'})
+    #   Blog.get(:Info, :env => {'HTTP_HOST' => 'wagon'})
     #   #=> #<Blog::Controllers::Info @env={'HTTP_HOST'=>'wagon'} ...>
     #
     def method_missing(m, c, *a)
_______________________________________________
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Reply via email to