forked from syndicate-lang/preserves
load_schema_file, load metaschema
This commit is contained in:
parent
e056394ca6
commit
a2ca133983
|
@ -376,32 +376,36 @@ class Compiler:
|
||||||
c._set_schema(self.root, module_path, n, d, None, None)
|
c._set_schema(self.root, module_path, n, d, None, None)
|
||||||
ns[n] = c
|
ns[n] = c
|
||||||
|
|
||||||
|
def load_schema_file(filename):
|
||||||
|
c = Compiler()
|
||||||
|
c.load(filename)
|
||||||
|
return c.root
|
||||||
|
|
||||||
# a decorator
|
# a decorator
|
||||||
def extend(cls):
|
def extend(cls):
|
||||||
return lambda f: setattr(cls, f.__name__, f)
|
return lambda f: setattr(cls, f.__name__, f)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
__metaschema_filename = pathlib.Path(__file__).parent / '../../../schema/schema.bin'
|
||||||
c = Compiler()
|
meta = load_schema_file(__metaschema_filename).schema
|
||||||
schema_bin_filename = pathlib.Path(__file__).parent / '../../../schema/schema.bin'
|
|
||||||
c.load(schema_bin_filename)
|
|
||||||
with open(schema_bin_filename, 'rb') as f:
|
|
||||||
x = Decoder(f.read()).next()
|
|
||||||
print(c.root.schema.Schema.decode(x))
|
|
||||||
|
|
||||||
@extend(c.root.schema.Schema)
|
if __name__ == '__main__':
|
||||||
|
with open(__metaschema_filename, 'rb') as f:
|
||||||
|
x = Decoder(f.read()).next()
|
||||||
|
print(meta.Schema.decode(x))
|
||||||
|
|
||||||
|
@extend(meta.Schema)
|
||||||
def f(self, x):
|
def f(self, x):
|
||||||
return ['yay', self.embeddedType, x]
|
return ['yay', self.embeddedType, x]
|
||||||
print(c.root.schema.Schema.decode(x).f(123))
|
print(meta.Schema.decode(x).f(123))
|
||||||
print(f)
|
print(f)
|
||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
d = Compiler()
|
|
||||||
path_bin_filename = pathlib.Path(__file__).parent / '../../../path/path.bin'
|
path_bin_filename = pathlib.Path(__file__).parent / '../../../path/path.bin'
|
||||||
d.load(path_bin_filename)
|
path = load_schema_file(path_bin_filename).path
|
||||||
with open(path_bin_filename, 'rb') as f:
|
with open(path_bin_filename, 'rb') as f:
|
||||||
x = Decoder(f.read()).next()
|
x = Decoder(f.read()).next()
|
||||||
print(c.root.schema.Schema.decode(x))
|
print(meta.Schema.decode(x))
|
||||||
print(c.root.schema.Schema.decode(x) == c.root.schema.Schema.decode(x))
|
print(meta.Schema.decode(x) == meta.Schema.decode(x))
|
||||||
print()
|
print()
|
||||||
print(d.root)
|
print(path)
|
||||||
|
|
Loading…
Reference in New Issue