<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class Object
-  def self.h2o_safe(*attrs)
+  def self.h2o_expose(*attrs)
     @h2o_safe = attrs
   end
   
@@ -7,4 +7,7 @@ class Object
     @h2o_safe
   end
   
+  def to_h2o
+    self
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/core_ext/object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,6 @@ module H2o
 end
 
 require File.dirname(__FILE__) + '/core_ext/object'
-require File.dirname(__FILE__) + '/core_ext/method'
 
 require File.dirname(__FILE__) + '/h2o/constants'
 require File.dirname(__FILE__) + '/h2o/errors'</diff>
      <filename>lib/h2o.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,6 @@ module H2o
 
     def initialize(context ={})
       @stack = [context]
-      
       @filter_env = Filters.build(self)
     end
 
@@ -59,12 +58,12 @@ module H2o
             rescue
               return nil
             end
-            object = result
+            object = result.to_h2o
       
         # Array and Hash like objects
         elsif part.match(/^-?\d+$/)
           if (object.respond_to?(:has_key?) || object.respond_to?(:fetch)) &amp;&amp; value = object[part.to_i]
-            object = value
+            object = value.to_h2o
           else
             return nil
           end
@@ -72,11 +71,11 @@ module H2o
         # H2o::DataObject Type
         elsif (object.is_a?(DataObject) || object.class.h2o_safe_methods &amp;&amp; object.class.h2o_safe_methods.include?(part_sym) )&amp;&amp; \
               object.respond_to?(part_sym)
-          object = object.__send__(part_sym)
+          object = object.__send__(part_sym).to_h2o
         
         # Sweet array shortcuts
         elsif object.respond_to?(part_sym) &amp;&amp; [:first, :length, :size, :last].include?(part_sym)
-          object = object.__send__(part_sym)
+          object = object.__send__(part_sym).to_h2o
         else
           return nil
         end
@@ -102,9 +101,7 @@ module H2o
             arg
           end
         end
-        
-        
-        
+
         object = @filter_env.__send__(name, object, *args)
       end
       object</diff>
      <filename>lib/h2o/context.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,11 @@
 module H2o
   class Node 
     def initialize(parser, position = 0)
+      raise &quot;Subclass should implement initialize method&quot;
     end
     
     def render(context, stream)
+      raise &quot;Subclass should implement method method&quot;
     end
   end
   </diff>
      <filename>lib/h2o/nodes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,19 @@
 require 'spec/spec_helper'
 
 class User
-  h2o_safe :name, :age
+  h2o_expose :name, :age
   attr_accessor :name, :age
+  
   def initialize name, age
     @name, @age = name, age
   end
+  
+  def to_h2o
+    {
+      :name =&gt; self.name,
+      :age =&gt; self.age
+    }
+  end
 end
 
 scope = {
@@ -65,7 +73,6 @@ describe &quot;Resolve name&quot; do
     
       # Cached inline
       context.resolve(:'procs.generation').usec.should == result.usec
-      
       context.resolve(:'procs.generation').usec.should == result.usec
     end
   end</diff>
      <filename>spec/context_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/core_ext/method.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>291ae6e137ba26dec4800aa97396aed940b14093</id>
    </parent>
  </parents>
  <author>
    <name>speedmax</name>
    <email>subjective@gmail.com</email>
  </author>
  <url>http://github.com/speedmax/h2o/commit/8a51bc2a0f668e8f3ad066348a4d6e5b259ee5a1</url>
  <id>8a51bc2a0f668e8f3ad066348a4d6e5b259ee5a1</id>
  <committed-date>2009-08-03T23:11:44-07:00</committed-date>
  <authored-date>2009-08-03T23:11:44-07:00</authored-date>
  <message> - removed previous method core_ext to fix Method#to_proc issue
 - renamed Object#h2o_safe to Object#h2o_expose
 - adding Object#to_h2o method for optional custom template data object</message>
  <tree>5e86117e0ba215f4939ad93cd16ac1804f8a5843</tree>
  <committer>
    <name>speedmax</name>
    <email>subjective@gmail.com</email>
  </committer>
</commit>
