Ich habe verschiedene Dateiformate verwendet, aber die Lesbarkeit ist mit Ausnahme von json, yaml und toml gering. Json war unzufrieden damit, keine Kommentare schreiben zu können, und unzufrieden damit, keine Lambda-Ausdrücke eingeben zu können, also habe ich es gemacht.
pyson.py
import sys
import argparse
class File(dict):
    @classmethod
    def Load(cls,path):
        data = None
        with open(path,'r',encoding="utf-8") as fln:
            var = []
            for f in fln.read():
                if(f.strip() == "" or f.strip()[0:1] == '#' or f.strip().split('(')[0] == '__import__'):
                    continue
                else:
                    var.append(f)
            data = cls.__Ld(var)
        ret = eval(data)
        return ret
    @classmethod
    def __Ld(cls,var):
        ret = ""
        for val in var:
            ret += val
        return ret
load = File.Load
Classes.pyson
{
    "Vector3":lambda:[0 for var in range(3)],
    "Vector4":lambda:[0 for var in range(4)],
    "Matrix3x3":lambda:[[0 for x in range(3)]for y in range(3)],
    "Matrix4x4":lambda:[[0 for x in range(4)]for y in range(4)],
    #Einheitsmatrix
    "Identity":lambda mat:[[1 if x==y else 0 for x in range(len(mat[y]))]for y in range(len(mat))],
    "is_liveing":True
}
Setting.pyson
(
    "1",True,3.5
)
app.py
import pyson
ldfil = pyson.load("Classes.pyson")
stngfil = pyson.load("Setting.pyson")
mat = ldfil["Identity"](ldfil["Matrix4x4"]())
print("Einheitsmatrix(4x4):",mat)
print("Kann eingestellt werden?:",stngfil[1])
Einheitsmatrix(4x4):[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
Kann eingestellt werden?:True
Ich bin froh, dass ich etwas machen konnte, das ziemlich befriedigend war. Ich möchte es auch verbessern.
Recommended Posts