OSDN Git Service

fix for python3
authorousttrue <ousttrue@gmail.com>
Sun, 2 Oct 2011 14:33:16 +0000 (23:33 +0900)
committerousttrue <ousttrue@gmail.com>
Sun, 2 Oct 2011 14:33:16 +0000 (23:33 +0900)
pymeshio/__init__.py
pymeshio/mqo/__init__.py
pymeshio/mqo/reader.py
test/pmd_test.py
test/pmx_test.py

index e69de29..7921d15 100644 (file)
@@ -0,0 +1,8 @@
+\r
+def unicode(src):\r
+    import sys\r
+    if sys.version_info[0]<3:\r
+        return src.decode('utf-8')\r
+    else:\r
+        return src\r
+\r
index 6eeda67..dd9af9d 100644 (file)
@@ -51,30 +51,30 @@ class Material(object):
     def parse(self, line):\r
         offset=0\r
         while True:\r
-            leftParenthesis=line.find("(", offset)\r
+            leftParenthesis=line.find(b"(", offset)\r
             if leftParenthesis==-1:\r
                 break\r
             key=line[offset:leftParenthesis]\r
-            rightParenthesis=line.find(")", leftParenthesis+1)\r
+            rightParenthesis=line.find(b")", leftParenthesis+1)\r
             if rightParenthesis==-1:\r
                 raise ValueError("assert")\r
 \r
             param=line[leftParenthesis+1:rightParenthesis]\r
-            if key=="shader":\r
+            if key==b"shader":\r
                 self.shader=int(param)\r
-            elif key=="col":\r
+            elif key==b"col":\r
                 self.color=pymeshio.common.RGBA(*[float(e) for e in param.split()])\r
-            elif key=="dif":\r
+            elif key==b"dif":\r
                 self.diffuse=float(param)\r
-            elif key=="amb":\r
+            elif key==b"amb":\r
                 self.ambient=float(param)\r
-            elif key=="emi":\r
+            elif key==b"emi":\r
                 self.emit=float(param)\r
-            elif key=="spc":\r
+            elif key==b"spc":\r
                 self.specular=float(param)\r
-            elif key=="power":\r
+            elif key==b"power":\r
                 self.power=float(param)\r
-            elif key=="tex":\r
+            elif key==b"tex":\r
                 self.tex=param[1:-1]\r
             else:\r
                 print(\r
@@ -179,24 +179,24 @@ class Face(object):
         self.index_count=index_count\r
         offset=0\r
         while True:\r
-            leftParenthesis=line.find("(", offset)\r
+            leftParenthesis=line.find(b"(", offset)\r
             if leftParenthesis==-1:\r
                 break\r
             key=line[offset:leftParenthesis]\r
-            rightParenthesis=line.find(")", leftParenthesis+1)\r
+            rightParenthesis=line.find(b")", leftParenthesis+1)\r
             if rightParenthesis==-1:\r
                 raise ValueError("assert")\r
             params=line[leftParenthesis+1:rightParenthesis].split()\r
-            if key=="V":\r
+            if key==b"V":\r
                 self.indices=[int(e) for e in params]\r
-            elif key=="M":\r
+            elif key==b"M":\r
                 self.material_index=int(params[0])\r
-            elif key=="UV":\r
+            elif key==b"UV":\r
                 uv_list=[float(e) for e in params]\r
                 self.uv=[]\r
                 for i in range(0, len(uv_list), 2):\r
                     self.uv.append(pymeshio.common.Vector2(uv_list[i], uv_list[i+1]))\r
-            elif key=="COL":\r
+            elif key==b"COL":\r
                 for n in params:\r
                     d=int(n)\r
                     # R\r
index 1b7e365..b147ce4 100644 (file)
@@ -35,7 +35,7 @@ class Reader(object):
     def getline(self):\r
         line=self.ios.readline()\r
         self.lines+=1\r
-        if line=="":\r
+        if line==b"":\r
             self.eof=True\r
             return None\r
         return line.strip()\r
@@ -50,22 +50,22 @@ class Reader(object):
             if line==None:\r
                 # eof\r
                 break;\r
-            if line=="":\r
+            if line==b"":\r
                 # empty line\r
                 continue\r
 \r
-            if line=="}":\r
+            if line==b"}":\r
                 return obj\r
             else:\r
                 tokens=line.split()\r
                 key=tokens[0]\r
-                if key=="vertex":\r
+                if key==b"vertex":\r
                     if not self.readVertex(obj):\r
                         return False\r
-                elif key=="face":\r
+                elif key==b"face":\r
                     if not self.readFace(obj):\r
                         return False\r
-                elif key=="depth":\r
+                elif key==b"depth":\r
                     obj.depth=int(tokens[1])\r
                 else:\r
                     print(\r
@@ -82,15 +82,15 @@ class Reader(object):
             if line==None:\r
                 # eof\r
                 break;\r
-            if line=="":\r
+            if line==b"":\r
                 # empty line\r
                 continue\r
 \r
-            if line=="}":\r
+            if line==b"}":\r
                 return True\r
             else:\r
                 # face\r
-                tokens=line.split(' ', 1)\r
+                tokens=line.split(b' ', 1)\r
                 try:\r
                     obj.addFace(pymeshio.mqo.Face(int(tokens[0]), tokens[1]))\r
                 except ValueError as ex:\r
@@ -106,11 +106,11 @@ class Reader(object):
             if line==None:\r
                 # eof\r
                 break;\r
-            if line=="":\r
+            if line==b"":\r
                 # empty line\r
                 continue\r
 \r
-            if line=="}":\r
+            if line==b"}":\r
                 return True\r
             else:\r
                 # vertex\r
@@ -126,15 +126,15 @@ class Reader(object):
             if line==None:\r
                 # eof\r
                 break;\r
-            if line=="":\r
+            if line==b"":\r
                 # empty line\r
                 continue\r
 \r
-            if line=="}":\r
+            if line==b"}":\r
                 return materials\r
             else:\r
                 # material\r
-                secondQuaote=line.find('"', 1)                \r
+                secondQuaote=line.find(b'"', 1)                \r
                 material=pymeshio.mqo.Material(line[1:secondQuaote])\r
                 try:\r
                     material.parse(line[secondQuaote+2:])\r
@@ -153,15 +153,15 @@ class Reader(object):
             if line==None:\r
                 # eof\r
                 break;\r
-            if line=="":\r
+            if line==b"":\r
                 # empty line\r
                 continue\r
 \r
-            if line=="}":\r
+            if line==b"}":\r
                 level-=1\r
                 if level==0:\r
                     return True\r
-            elif line.find("{")!=-1:\r
+            elif line.find(b"{")!=-1:\r
                 level+=1\r
 \r
         self.printError("readChunk", "invalid eof")\r
@@ -180,12 +180,12 @@ def read(ios):
     model=pymeshio.mqo.Model()\r
 \r
     line=reader.getline()\r
-    if line!="Metasequoia Document":\r
+    if line!=b"Metasequoia Document":\r
         print("invalid signature")\r
         return False\r
 \r
     line=reader.getline()\r
-    if line!="Format Text Ver 1.0":\r
+    if line!=b"Format Text Ver 1.0":\r
         print("unknown version: %s" % line)\r
 \r
     while True:\r
@@ -193,35 +193,35 @@ def read(ios):
         if line==None:\r
             # eof\r
             break;\r
-        if line=="":\r
+        if line==b"":\r
             # empty line\r
             continue\r
 \r
         tokens=line.split()\r
         key=tokens[0]\r
-        if key=="Eof":\r
+        if key==b"Eof":\r
             return model\r
-        elif key=="Scene":\r
+        elif key==b"Scene":\r
             if not reader.readChunk():\r
                 return\r
-        elif key=="Material":\r
+        elif key==b"Material":\r
             materials=reader.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
+        elif key==b"Object":\r
+            firstQuote=line.find(b'"')\r
+            secondQuote=line.find(b'"', firstQuote+1)\r
             obj=reader.readObject(line[firstQuote+1:secondQuote])\r
             if not obj:\r
                 return\r
             model.objects.append(obj)\r
-        elif key=="BackImage":\r
+        elif key==b"BackImage":\r
             if not reader.readChunk():\r
                 return\r
-        elif key=="IncludeXml":\r
-            firstQuote=line.find('"')\r
-            secondQuote=line.find('"', firstQuote+1)\r
+        elif key==b"IncludeXml":\r
+            firstQuote=line.find(b'"')\r
+            secondQuote=line.find(b'"', firstQuote+1)\r
             print("IncludeXml", line[firstQuote+1:secondQuote])\r
         else:\r
             print("unknown key: %s" % key)\r
index 64eea9d..980ce96 100644 (file)
@@ -7,7 +7,7 @@ import pymeshio.pmd.reader
 import pymeshio.pmd.writer
 
 
-PMD_FILE=u'resources/初音ミクVer2.pmd'
+PMD_FILE=pymeshio.unicode('resources/初音ミクVer2.pmd')
 
 
 class TestPmd(unittest.TestCase):
@@ -18,23 +18,23 @@ class TestPmd(unittest.TestCase):
     def test_read(self):
         model=pymeshio.pmd.reader.read_from_file(PMD_FILE)
         self.assertEqual(pymeshio.pmd.Model,  model.__class__)
-        self.assertEqual(u'初音ミク'.encode('cp932'),  model.name)
-        self.assertEqual(u'Miku Hatsune'.encode('cp932'),  model.english_name)
-        self.assertEqual((
-            u"PolyMo用モデルデータ:初音ミク ver.2.3\n"+
-            u"(物理演算対応モデル)\n"+
-            u"\n"+
-            u"モデリング  :あにまさ氏\n"+
-            u"データ変換  :あにまさ氏\n"+
-            u"Copyright        :CRYPTON FUTURE MEDIA, INC").encode('cp932'),
+        self.assertEqual(pymeshio.unicode('初音ミク').encode('cp932'),  model.name)
+        self.assertEqual(pymeshio.unicode('Miku Hatsune').encode('cp932'),  model.english_name)
+        self.assertEqual(pymeshio.unicode(
+            "PolyMo用モデルデータ:初音ミク ver.2.3\n"+
+            "(物理演算対応モデル)\n"+
+            "\n"+
+            "モデリング   :あにまさ氏\n"+
+            "データ変換   :あにまさ氏\n"+
+            "Copyright :CRYPTON FUTURE MEDIA, INC").encode('cp932'),
             model.comment)
-        self.assertEqual((
-            u"MMD Model: Miku Hatsune ver.2.3\n"+
-            u"(Physical Model)\n"+
-            u"\n"+
-            u"Modeling by      Animasa\n"+
-            u"Converted by     Animasa\n"+
-            u"Copyright                CRYPTON FUTURE MEDIA, INC").encode('cp932'),
+        self.assertEqual(pymeshio.unicode(
+            "MMD Model: Miku Hatsune ver.2.3\n"+
+            "(Physical Model)\n"+
+            "\n"+
+            "Modeling by       Animasa\n"+
+            "Converted by      Animasa\n"+
+            "Copyright         CRYPTON FUTURE MEDIA, INC").encode('cp932'),
             model.english_comment)
         self.assertEqual(12354,  len(model.vertices))
         self.assertEqual(22961 * 3,  len(model.indices))
index dce47b7..1e89b0d 100644 (file)
@@ -1,9 +1,10 @@
 # coding: utf-8\r
-import pymeshio.pmx.reader\r
 import unittest\r
+import pymeshio.pmd\r
+import pymeshio.pmx.reader\r
 \r
 \r
-PMX_FILE=u'resources/初音ミクVer2.pmx'\r
+PMX_FILE=pymeshio.unicode('resources/初音ミクVer2.pmx')\r
 \r
 \r
 class TestPmx(unittest.TestCase):\r
@@ -14,23 +15,23 @@ class TestPmx(unittest.TestCase):
     def test_read(self):\r
         model=pymeshio.pmx.reader.read_from_file(PMX_FILE)\r
         self.assertEqual(pymeshio.pmx.Model,  model.__class__)\r
-        self.assertEqual(u'初音ミク',  model.name)\r
-        self.assertEqual(u'Miku Hatsune',  model.english_name)\r
-        self.assertEqual(\r
-                u"PolyMo用モデルデータ:初音ミク ver.2.3\r\n"+\r
-                u"(物理演算対応モデル)\r\n"+\r
-                u"\r\n"+\r
-                u"モデリング      :あにまさ氏\r\n"+\r
-                u"データ変換      :あにまさ氏\r\n"+\r
-                u"Copyright    :CRYPTON FUTURE MEDIA, INC",\r
+        self.assertEqual(pymeshio.unicode('初音ミク'),  model.name)\r
+        self.assertEqual(pymeshio.unicode('Miku Hatsune'),  model.english_name)\r
+        self.assertEqual(pymeshio.unicode(\r
+                "PolyMo用モデルデータ:初音ミク ver.2.3\r\n"+\r
+                "(物理演算対応モデル)\r\n"+\r
+                "\r\n"+\r
+                "モデリング       :あにまさ氏\r\n"+\r
+                "データ変換       :あにまさ氏\r\n"+\r
+                "Copyright     :CRYPTON FUTURE MEDIA, INC"),\r
                 model.comment)\r
-        self.assertEqual(\r
-                u"MMD Model: Miku Hatsune ver.2.3\r\n"+\r
-                u"(Physical Model)\r\n"+\r
-                u"\r\n"+\r
-                u"Modeling by  Animasa\r\n"+\r
-                u"Converted by Animasa\r\n"+\r
-                u"Copyright            CRYPTON FUTURE MEDIA, INC",\r
+        self.assertEqual(pymeshio.unicode(\r
+                "MMD Model: Miku Hatsune ver.2.3\r\n"+\r
+                "(Physical Model)\r\n"+\r
+                "\r\n"+\r
+                "Modeling by   Animasa\r\n"+\r
+                "Converted by  Animasa\r\n"+\r
+                "Copyright             CRYPTON FUTURE MEDIA, INC"),\r
                 model.english_comment)\r
 \r
         self.assertEqual(12354,  len(model.vertices))\r