<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -508,7 +508,9 @@ it was empty&quot; % token
 
                 subname = tokenMap[SUBMODULE][0]
 
-                target[SUBMODULES].append(subname);
+                if not target[SUBMODULES].count(subname):
+                    target[SUBMODULES].append(subname)
+
                 self.subModName = subname;
                 target[SUBDATA][subname] = { NAME: self.currentClass }
 
@@ -524,14 +526,16 @@ it was empty&quot; % token
             if len(self.deferredModuleFiles) &gt; 0:
                 for i in self.deferredModuleFiles:
                     self.data[FILE_MAP][i][MODULE] = self.currentModule
-                    self.data[MODULES][self.currentModule][FILE_LIST].append(i)
+                    if not self.data[MODULES][self.currentModule][FILE_LIST].count(i):
+                        self.data[MODULES][self.currentModule][FILE_LIST].append(i)
 
                 self.deferredModuleFiles = []
 
             if len(self.deferredModuleClasses) &gt; 0:
                 for i in self.deferredModuleClasses:
                     self.data[CLASS_MAP][i][MODULE] = self.currentModule
-                    self.data[MODULES][self.currentModule][CLASS_LIST].append(i)
+                    if not self.data[MODULES][self.currentModule][CLASS_LIST].count(i):
+                        self.data[MODULES][self.currentModule][CLASS_LIST].append(i)
 
                 self.deferredModuleClasses = []
 
@@ -549,11 +553,13 @@ it was empty&quot; % token
 
             if self.currentModule:
                 target[MODULE] = self.currentModule
-                self.data[MODULES][self.currentModule][FILE_LIST].append(file_name)
+                if not self.data[MODULES][self.currentModule][FILE_LIST].count(file_name):
+                    self.data[MODULES][self.currentModule][FILE_LIST].append(file_name)
             else:
                 &quot;&quot;&quot; defer the module assignment until we find the token &quot;&quot;&quot;
                 log.info('deferred module file: ' + file_name)
-                self.deferredModuleFiles.append(file_name);
+                if not self.deferredModuleFiles.count(file_name):
+                    self.deferredModuleFiles.append(file_name)
 
 
             tokenMap.pop(FILE_MARKER)
@@ -569,7 +575,10 @@ it was empty&quot; % token
             
             if self.subModName:
                 # provides a place to link to on the module landing page
-                self.data[MODULES][self.currentModule][SUBDATA][self.subModName][NAME] = longName
+                try:
+                    self.data[MODULES][self.currentModule][SUBDATA][self.subModName][NAME] = longName
+                except:
+                    pass
 
                 # this was overwriting the submodule description
                 # if DESCRIPTION in tokenMap:
@@ -589,23 +598,26 @@ it was empty&quot; % token
             if currentFor and currentFor != longName: # this is an inner class
                 if &quot;innerClasses&quot; not in target:
                     target[&quot;innerClasses&quot;] = []
-
-                target[&quot;innerClasses&quot;].append(currentFor)
+                if not target[&quot;innerClasses&quot;].count(currentFor):
+                    target[&quot;innerClasses&quot;].append(currentFor)
  
             if self.currentModule:
                 
                 target[MODULE] = self.currentModule
-                self.data[MODULES][self.currentModule][CLASS_LIST].append(longName)
+                if not self.data[MODULES][self.currentModule][CLASS_LIST].count(longName):
+                    self.data[MODULES][self.currentModule][CLASS_LIST].append(longName)
             else:
                 &quot;&quot;&quot; defer the module assignment until we find the token &quot;&quot;&quot;
                 log.info('deferred module CLASS: ' + longName)
-                self.deferredModuleClasses.append(longName);
+                if not self.deferredModuleClasses.count(longName):
+                    self.deferredModuleClasses.append(longName)
 
             if self.currentFile:
                 target[FILE] = self.currentFile
 
             try:
-                self.data[FILE_MAP][self.currentFile][CLASS_LIST].append(longName)
+                if not self.data[FILE_MAP][self.currentFile][CLASS_LIST].count(longName):
+                    self.data[FILE_MAP][self.currentFile][CLASS_LIST].append(longName)
             except:
                 pass
 
@@ -620,7 +632,8 @@ it was empty&quot; % token
                 for i in tokenMap[&quot;uses&quot;]:
                     # shortName, longName = self.getClassName(i, self.currentNamespace)
                     longName = i
-                    target[&quot;uses&quot;].append(longName)
+                    if not target[&quot;uses&quot;].count(longName):
+                        target[&quot;uses&quot;].append(longName)
 
             ###############
             # if not CLASS_LIST in self.data:
@@ -808,7 +821,8 @@ the attribute\'s value has changed.' %(config),
             c = self.data[CLASS_MAP][self.currentClass]
             if not CONSTRUCTORS in c: c[CONSTRUCTORS] = []
             constructor = parseParams(tokenMap, { DESCRIPTION: tokenMap[DESCRIPTION][0] })
-            c[CONSTRUCTORS].append(constructor)
+            if not c[CONSTRUCTORS].count(constructor):
+                c[CONSTRUCTORS].append(constructor)
             tokenMap.pop(CONSTRUCTOR)
 
         # process the rest of the tags</diff>
      <filename>bin/yuidoc_parse.py</filename>
    </modified>
    <modified>
      <diff>@@ -23,36 +23,48 @@ src=~/src/yui3/src
 #          $src/queue \
 #          $src/yui&quot;
 #parser_in=&quot;$src&quot;
+
 parser_in=&quot;$src/yui \
            $src/anim \
            $src/attribute \
            $src/base \
+           $src/cache \
            $src/classnamemanager \
+           $src/collection \
            $src/console \
+           $src/console-filters \
            $src/cookie \
+           $src/dataschema \
+           $src/datasource \
+           $src/datatype \
            $src/dd \
            $src/dom \
            $src/dump \
            $src/event \
+           $src/event-custom \
+           $src/event-simulate \
+           $src/history \
+           $src/imageloader \
            $src/io \
            $src/json \
            $src/node \
+           $src/node-focusmanager \
            $src/node-menunav \
            $src/oop \
            $src/overlay \
-           $src/profiler \
            $src/plugin \
+           $src/profiler \
            $src/queue \
            $src/slider \
            $src/stylesheet \
            $src/substitute \
+           $src/test \
            $src/widget \
            $src/widget-position \
            $src/widget-position-ext \
            $src/widget-stdmod \
-           $src/widget-stack \
-	   $src/test&quot;
- 
+           $src/widget-stack&quot;
+
 # The location to output the parser data.  This output is a file containing a 
 # json string, and copies of the parsed files.
 parser_out=build_tmp/yuidoc_tmp</diff>
      <filename>test/apidocs.sh</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ yuidoc_home=..
 
 src=~/src/yui3/src
 
-parser_in=&quot;$src/yui/js $src/event-custom/js $src/event/js $src/dump/js $src/substitute/js $src/anim/js $src/collection/js&quot;
+parser_in=&quot;$src/yui/js $src/event-custom/js $src/event/js $src/dump/js $src/substitute/js $src/anim/js $src/collection/js $src/base/js $src/attribute/js&quot;
  
 # The location to output the parser data.  This output is a file containing a 
 # json string, and copies of the parsed files.</diff>
      <filename>test/event.sh</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f95e78e3aea4d374165da84e8cf34004be9034a7</id>
    </parent>
  </parents>
  <author>
    <name>Adam Moore</name>
    <login>apm</login>
    <email>adamoore@yahoo-inc.com</email>
  </author>
  <url>http://github.com/yui/yuidoc/commit/807cccab0cdf5c1021263c9f9ba0069feccceca3</url>
  <id>807cccab0cdf5c1021263c9f9ba0069feccceca3</id>
  <committed-date>2009-08-10T12:05:36-07:00</committed-date>
  <authored-date>2009-08-10T12:05:36-07:00</authored-date>
  <message>More tolerant of parse order issues.  duplicate module declarations do not result in duplicate submodule/class entries.</message>
  <tree>d83b248a9e1d797ace8b783d6545b43d2b79a992</tree>
  <committer>
    <name>Adam Moore</name>
    <login>apm</login>
    <email>adamoore@yahoo-inc.com</email>
  </committer>
</commit>
