Commits

John Chandler committed cc7b85e

Started fleshing out hierarchy code

Comments (0)

Files changed (2)

qadpid/hierarchy.py

+"""
+Parser Code
+
+Copyright 2011 John Chandler
+This software is distributed under the terms of the GNU General Public License version 3
+"""
+import os
+
+class PHPHierarchyCreator( object ):
+    """ Hierarchy Creator for PHP files """
+    hierarchy = {}
+
+    def add( self, directory ):
+        """ Takes a (dirpath, dirs, files) tuple (e.g. as returned by os.walk)
+            Adds .php files to the hierarchy
+        """
+        dirpath, _, files = directory
+        for filepath in [ os.path.join( dirpath, x ) for x in files if x.endswith(".php") ]:
+            self.hierarchy[ filepath ] = None
+            
+    

tests/test_hierarchy.py

+"""
+File hierarchy tests
+
+Copyright 2011 John Chandler
+This software is distributed under the terms of the GNU General Public License version 3
+"""
+
+import unittest
+
+from qadpid.hierarchy import PHPHierarchyCreator
+
+
+class TestHierarchyCreator( unittest.TestCase ):
+    """ Tests the HierarchyCreator """
+    def test_no_hierarchy( self ):
+        """ Tests result when we have nothing to do """
+        self.assertEquals( PHPHierarchyCreator().hierarchy, {} )
+
+    def test_no_php( self ):
+        """ Tests result when we add a dir with no PHP files """
+        creator = PHPHierarchyCreator()
+        creator.add( ('.', [], ["foo.js", "bar.py"]) )
+        
+        self.assertEquals( PHPHierarchyCreator().hierarchy, {} )
+
+    def test_php( self ):
+        """ Tests result when we add a dir with PHP files """
+        creator = PHPHierarchyCreator()
+        creator.add( ('.', [], ["foo.php", "bar.php"]) )
+        
+        self.assertEquals( PHPHierarchyCreator().hierarchy, { "./foo.php": None, "./bar.php": None } )
+
+
+if __name__ == "__main__":
+    unittest.main()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.