OSDN Git Service

refactoring pmd.writer
[meshio/pymeshio.git] / pymeshio / mqo / loader.py
index 561dd67..60f7318 100644 (file)
@@ -23,8 +23,8 @@ class Loader(object):
             "eof", "io", "lines",\r
             "materials", "objects",\r
             ]\r
-    def __init__(self, io):\r
-        self.io=io\r
+    def __init__(self, ios):\r
+        self.ios=ios\r
         self.eof=False\r
         self.lines=0\r
 \r
@@ -33,7 +33,7 @@ class Loader(object):
                 self.lines, len(self.materials), len(self.objects))\r
 \r
     def getline(self):\r
-        line=self.io.readline()\r
+        line=self.ios.readline()\r
         self.lines+=1\r
         if line=="":\r
             self.eof=True\r
@@ -168,59 +168,64 @@ class Loader(object):
         return False\r
 \r
 \r
-def load(path):\r
-    with open(path, 'rb') as io:\r
-        loader=Loader(io)\r
-        model=pymeshio.mqo.Model()\r
+def load_from_file(path):\r
+    with open(path, 'rb') as ios:\r
+        load(ios)\r
 \r
-        line=loader.getline()\r
-        if line!="Metasequoia Document":\r
-            print("invalid signature")\r
-            return False\r
 \r
-        line=loader.getline()\r
-        if line!="Format Text Ver 1.0":\r
-            print("unknown version: %s" % line)\r
+def load(ios):\r
+    assert(isinstance(ios, io.IOBase))\r
+    loader=Loader(ios)\r
+    model=pymeshio.mqo.Model()\r
 \r
-        while True:\r
-            line=loader.getline()\r
-            if line==None:\r
-                # eof\r
-                break;\r
-            if line=="":\r
-                # empty line\r
-                continue\r
+    line=loader.getline()\r
+    if line!="Metasequoia Document":\r
+        print("invalid signature")\r
+        return False\r
 \r
-            tokens=line.split()\r
-            key=tokens[0]\r
-            if key=="Eof":\r
-                return model\r
-            elif key=="Scene":\r
-                if not loader.readChunk():\r
-                    return\r
-            elif key=="Material":\r
-                materials=loader.readMaterial()\r
-                if not materials:\r
-                    return\r
-                model.materials=materials\r
-            elif key=="Object":\r
-                firstQuote=line.find('"')\r
-                secondQuote=line.find('"', firstQuote+1)\r
-                obj=loader.readObject(line[firstQuote+1:secondQuote])\r
-                if not obj:\r
-                    return\r
-                model.objects.append(obj)\r
-            elif key=="BackImage":\r
-                if not loader.readChunk():\r
-                    return\r
-            elif key=="IncludeXml":\r
-                firstQuote=line.find('"')\r
-                secondQuote=line.find('"', firstQuote+1)\r
-                print("IncludeXml", line[firstQuote+1:secondQuote])\r
-            else:\r
-                print("unknown key: %s" % key)\r
-                if not loader.readChunk():\r
-                    return\r
-        # error not reach here\r
-        raise ParseException("invalid eof")\r
+    line=loader.getline()\r
+    if line!="Format Text Ver 1.0":\r
+        print("unknown version: %s" % line)\r
+\r
+    while True:\r
+        line=loader.getline()\r
+        if line==None:\r
+            # eof\r
+            break;\r
+        if line=="":\r
+            # empty line\r
+            continue\r
+\r
+        tokens=line.split()\r
+        key=tokens[0]\r
+        if key=="Eof":\r
+            return model\r
+        elif key=="Scene":\r
+            if not loader.readChunk():\r
+                return\r
+        elif key=="Material":\r
+            materials=loader.readMaterial()\r
+            if not materials:\r
+                return\r
+            model.materials=materials\r
+        elif key=="Object":\r
+            firstQuote=line.find('"')\r
+            secondQuote=line.find('"', firstQuote+1)\r
+            obj=loader.readObject(line[firstQuote+1:secondQuote])\r
+            if not obj:\r
+                return\r
+            model.objects.append(obj)\r
+        elif key=="BackImage":\r
+            if not loader.readChunk():\r
+                return\r
+        elif key=="IncludeXml":\r
+            firstQuote=line.find('"')\r
+            secondQuote=line.find('"', firstQuote+1)\r
+            print("IncludeXml", line[firstQuote+1:secondQuote])\r
+        else:\r
+            print("unknown key: %s" % key)\r
+            if not loader.readChunk():\r
+                return\r
+    # error not reach here\r
+    raise ParseException("invalid eof")\r
 \r