Source code for remcall.naming

from .schema import *
from .error import UnknownType

[docs]class IdentityNameConverter:
[docs] def interface_name(self, name): return name
[docs] def method_name(self, name): return name
[docs] def parameter_name(self, name): return name
[docs] def enum_name(self, name): return name
[docs] def enum_field_name(self, name): return name
[docs] def record_name(self, name): return name
[docs] def record_field_name(self, name): return name
[docs] def type_name(self, typ: Type): if isinstance(typ, Interface): return self.interface_name(typ.name) elif isinstance(typ, Enum): return self.enum_name(typ.name) elif isinstance(typ, Record): return self.record_name(typ.name) else: raise ValueError('No name for {!r}'.format(typ))
[docs]class PythonNameConverter(IdentityNameConverter): def _iter_method_name(self, name): for idx, letter in enumerate(name): if letter.isupper() and idx > 0: yield '_' yield letter.lower()
[docs] def method_name(self, name): return ''.join(self._iter_method_name(name))
[docs] def parameter_name(self, name): return self.method_name(name)
[docs] def enum_field_name(self, name): return self.method_name(name).upper()
[docs] def record_field_name(self, name): return self.method_name(name)
[docs] def type_name(self, typ: Type): if isinstance(typ, Primitive): if typ == string: return 'str' elif typ in (int8, int16, int32, int64, uint8, uint16, uint32, uint64): return 'int' elif typ in (float32, float64): return 'float' elif typ == void: return 'None' elif typ == boolean: return 'bool' elif typ == date: return 'datetime.date' elif typ == datetime: return 'datetime.datetime' elif typ == time: return 'datetime.time' else: raise UnknownType(typ) return super().type_name(typ)
[docs]class CSharpNameConverter(IdentityNameConverter):
[docs] def interface_name(self, name): return 'I{}'.format(super().interface_name(name))
[docs] def parameter_name(self, name): return name[0].lower() + name[1:]