feat: add some object methods

This commit is contained in:
Shunsuke Shibayama 2024-04-26 12:39:58 +09:00
parent 2887a77f70
commit e220381fa2
3 changed files with 48 additions and 0 deletions

View file

@ -63,6 +63,26 @@ impl Context {
8,
);
obj.register_py_builtin(FUNDAMENTAL_STR, fn0_met(Obj, Str), Some(FUNDAMENTAL_STR), 9);
obj.register_py_builtin(FUNDAMENTAL_CLASS, ClassType, Some(FUNDAMENTAL_CLASS), 10);
obj.register_py_builtin(FUNDAMENTAL_DOC, ClassType, Some(FUNDAMENTAL_DOC), 11);
obj.register_py_builtin(
FUNDAMENTAL_DIR,
fn0_met(Obj, unknown_len_list_t(Str)),
Some(FUNDAMENTAL_GETATTRIBUTE),
12,
);
obj.register_py_builtin(
FUNDAMENTAL_GETATTRIBUTE,
fn1_met(Obj, Str, Obj),
Some(FUNDAMENTAL_GETATTRIBUTE),
13,
);
obj.register_py_builtin(
FUNDAMENTAL_FORMAT,
fn1_met(Obj, Str, Str),
Some(FUNDAMENTAL_FORMAT),
14,
);
// Obj does not implement Eq
let mut complex = Self::builtin_mono_class(COMPLEX, 2);
complex.register_superclass(Obj, &obj);
@ -885,6 +905,20 @@ impl Context {
Some(FUNC_ENCODE),
60,
);
str_.register_py_builtin(FUNC_CASEFOLD, fn0_met(Str, Str), Some(FUNC_CASEFOLD), 23);
str_.register_py_builtin(
FUNC_CENTER,
fn_met(
Str,
vec![kw(KW_WIDTH, Nat)],
None,
vec![kw(KW_FILLCHAR, Str)],
None,
Str,
),
Some(FUNC_CENTER),
33,
);
str_.register_builtin_erg_impl(
FUNC_FORMAT,
fn_met(

View file

@ -178,6 +178,8 @@ const MUT_BOOL: &str = "Bool!";
const STR: &str = "Str";
const MUT_STR: &str = "Str!";
const FUNC_REPLACE: &str = "replace";
const FUNC_CASEFOLD: &str = "casefold";
const FUNC_CENTER: &str = "center";
const FUNC_ENCODE: &str = "encode";
const FUNC_FORMAT: &str = "format";
const FUNC_LOWER: &str = "lower";
@ -585,6 +587,11 @@ const FUNDAMENTAL_FILE: &str = "__file__";
const FUNDAMENTAL_PACKAGE: &str = "__package__";
const FUNDAMENTAL_HASH: &str = "__hash__";
const FUNDAMENTAL_STR: &str = "__str__";
const FUNDAMENTAL_GETATTRIBUTE: &str = "__getattribute__";
const FUNDAMENTAL_CLASS: &str = "__class__";
const FUNDAMENTAL_DOC: &str = "__doc__";
const FUNDAMENTAL_DIR: &str = "__dir__";
const FUNDAMENTAL_FORMAT: &str = "__format__";
const FUNDAMENTAL_INT: &str = "__int__";
const FUNDAMENTAL_BOOL: &str = "__bool__";
const FUNDAMENTAL_FLOAT: &str = "__float__";
@ -668,6 +675,8 @@ const KW_PAT: &str = "pat";
const KW_INTO: &str = "into";
const KW_ENCODING: &str = "encoding";
const KW_ERRORS: &str = "errors";
const KW_FILLCHAR: &str = "fillchar";
const KW_WIDTH: &str = "width";
const KW_ARGS: &str = "args";
const KW_KWARGS: &str = "kwargs";
const KW_IDX: &str = "idx";

View file

@ -7,3 +7,8 @@
__repr__: (self: .Obj) -> Str
__sizeof__: (self: .Obj) -> Nat
__str__: (self: .Obj) -> Str
__class__: ClassType
__doc__: Str
__dir__: (self: .Obj) -> [Str; _]
__getattribute__: (self: .Obj, name: Str) -> .Obj
__format__: (self: .Obj, format_spec: Str) -> Str