<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/yard/handlers/base.rb</filename>
    </added>
    <added>
      <filename>spec/handlers/base_spec.rb</filename>
    </added>
    <added>
      <filename>spec/handlers/spec_helper.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -22,6 +22,7 @@ end
   code_objects/base 
   code_objects/namespace_object
   code_objects/*
+  handlers/*
   parser/**/*
   registry
   tag_library</diff>
      <filename>lib/yard.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,6 +7,7 @@ module YARD
       attr_reader :name
       attr_accessor :namespace
       attr_reader :source, :file, :line, :docstring
+      attr_reader :tags
       
       class &lt;&lt; self
         attr_accessor :instances
@@ -28,6 +29,8 @@ module YARD
         end
 
         @name = name
+        @tags = []
+        @docstring = &quot;&quot;
         self.namespace = namespace
         yield(self) if block_given?
       end</diff>
      <filename>lib/yard/code_objects/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,11 @@ module YARD::CodeObjects
       @mixins = []
     end
     
+    def mixins=(mixin)
+      log.warning &quot;Do not use #mixins= to add mixins, use #add_mixin instead.&quot;
+      add_mixin(mixin)
+    end
+    
     def add_mixin(mixin)
       if mixin.is_a? NamespaceObject
         @mixins &lt;&lt; mixin</diff>
      <filename>lib/yard/code_objects/namespace_object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,5 @@
 module YARD
   module Parser
-    class NameStruct
-      attr_accessor :object, :attributes
-      def initialize(object)
-        @object, @attributes = object, { :visibility =&gt; :public, :scope =&gt; :instance }
-      end
-    end
-
     # Responsible for parsing a source file into the namespace
     class SourceParser 
       attr_reader :file
@@ -19,10 +12,12 @@ module YARD
         new.parse(StringIO.new(content))
       end
 
-      attr_accessor :current_namespace
+      attr_accessor :namespace, :visibility, :scope
 
       def initialize
-        @current_namespace = NameStruct.new(Namespace.root)
+        @namespace = YARD::Registry.root
+        @visibility = :public
+        @scope = :instance
       end
 
       ##
@@ -57,17 +52,17 @@ module YARD
                 begin
                   handler.new(self, stmt).process
                 rescue =&gt; e
-                  STDERR.puts &quot;#{handler.to_s} error in `#{file}`:#{stmt.tokens.first.line_no}: #{stmt.tokens.to_s}&quot;
-                  STDERR.puts &quot;Exception message: #{e.message}&quot;
-                  STDERR.puts e.backtrace[0, 5].map {|x| &quot;\t#{x}&quot; }
-                  STDERR.puts
+                  log.error &quot;#{handler.to_s} error in `#{file}`:#{stmt.tokens.first.line_no}: #{stmt.tokens.to_s}&quot;
+                  log.error &quot;Exception message: #{e.message}&quot;
+                  log.error e.backtrace[0, 5].map {|x| &quot;\t#{x}&quot; }
+                  log.error 
                 end
               end
             end
         end
 
         def find_handlers(stmt)
-          CodeObjectHandler.subclasses.find_all {|sub| sub.handles? stmt.tokens }
+          Handlers::Base.subclasses.find_all {|sub| sub.handles? stmt.tokens }
         end
     end
   end</diff>
      <filename>lib/yard/parser/source_parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,33 +9,33 @@ describe YARD::CodeObjects::Base do
     obj.object_id.should == obj2.object_id
     
     obj3 = ModuleObject.new(obj, :Too)
-    obj4 = Base.new(obj3, :Hello)
+    obj4 = CodeObjects::Base.new(obj3, :Hello)
     obj4.parent = obj
     
-    obj5 = Base.new(obj3, :hello)
+    obj5 = CodeObjects::Base.new(obj3, :hello)
     obj4.object_id.should_not == obj5.object_id
   end
   
   it &quot;should allow namespace to be nil and not register in the Registry&quot; do
-    obj = Base.new(nil, :Me)
+    obj = CodeObjects::Base.new(nil, :Me)
     obj.namespace.should == nil
     Registry.at(:Me).should == nil
   end
 
   it &quot;should allow namespace to be a NamespaceObject&quot; do
     ns = ModuleObject.new(:root, :Name)
-    obj = Base.new(ns, :Me)
+    obj = CodeObjects::Base.new(ns, :Me)
     obj.namespace.should == ns
   end
   
   it &quot;should allow :root to be the shorthand namespace of `Registry.root`&quot; do
-    obj = Base.new(:root, :Me)
+    obj = CodeObjects::Base.new(:root, :Me)
     obj.namespace.should == Registry.root
   end
   
   
   it &quot;should not allow any other types as namespace&quot; do
-    lambda { Base.new(&quot;ROOT!&quot;, :Me) }.should raise_error(ArgumentError)
+    lambda { CodeObjects::Base.new(&quot;ROOT!&quot;, :Me) }.should raise_error(ArgumentError)
   end
   
   it &quot;should register itself in the registry if namespace is supplied&quot; do
@@ -53,7 +53,7 @@ describe YARD::CodeObjects::Base do
   end
   
   it &quot;#[]= should use the accessor method if available&quot; do
-    obj = Base.new(:root, :YARD)
+    obj = CodeObjects::Base.new(:root, :YARD)
     obj[:source] = &quot;hello&quot;
     obj.source.should == &quot;hello&quot;
     obj.source = &quot;unhello&quot;</diff>
      <filename>spec/code_objects/base_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>710e67fead778a6adb0029e886a4bf9de0e2e95c</id>
    </parent>
  </parents>
  <author>
    <name>Loren Segal</name>
    <email>lsegal@soen.ca</email>
  </author>
  <url>http://github.com/lsegal/yard/commit/568a1db52b96f4d9c4d1f967c29324ff9f2287a0</url>
  <id>568a1db52b96f4d9c4d1f967c29324ff9f2287a0</id>
  <committed-date>2008-05-09T19:59:06-07:00</committed-date>
  <authored-date>2008-05-09T19:59:06-07:00</authored-date>
  <message>Add Base handler and some specs, clean up ambiguity in specs for 'Base' classes</message>
  <tree>94303d9f29a0de14def884afb585cbcebfc46d06</tree>
  <committer>
    <name>Loren Segal</name>
    <email>lsegal@soen.ca</email>
  </committer>
</commit>
