Standard Library · meta
class Field
A field of a class, as a rule sees it.
since 0.1.0-alpha.1linuxwindowswasm
Examples
attribute Inspect { }
rule inspect {
match @Inspect(i) on class C
inject `Array<string> types() => [ $for s in C.fields.map((f) => f.name + ":" + f.type) : $s ];` at member of C
}
@Inspect
class Holder {
string name;
int? maybe;
Array<int> items;
Map<string, int> counts;
}
console.writeln(Holder().types().joinToString("; "));
name:string; maybe:int | None; items:Array<int>; counts:Map<string, int>
Fields
attributes
Array<meta::Attr> attributesThe attributes written on the field, with the values of their arguments.
attrs
Array<string> attrsThe names of the attributes written on the field.
name
string nameThe field's name.
type
string typeThe field's type, spelled as the source wrote it. An optional int? reads int | None.
Methods
attr
attr(string n) -> meta::Attr | NoneFind an attribute on the field by name, with its argument values.
Parameters
- n
- The attribute name, without the
@.
Returns
The attribute, or None when the field does not carry it.
Examples
attribute Column { string col = ""; }
attribute Inspect { }
rule inspect {
match @Inspect(i) on class C
inject `Array<string> names() => [ $for s in C.fields.map((f) =>
f.attr("Column")?.argStr(0) ?? f.name) : $s ];` at member of C
}
@Inspect
class User {
@Column("full_name") string name;
int id;
}
console.writeln(User().names().joinToString(","));
full_name,id
See also: Attr
hasAttr
hasAttr(string n) -> boolCheck whether the field carries an attribute of a given name.
Parameters
- n
- The attribute name, without the
@.
Returns
true when the field has that attribute.
Examples
attribute Hidden { }
attribute Inspect { }
rule inspect {
match @Inspect(i) on class C
inject `Array<string> visible() => [ $for s in C.fields.where((f) => !f.hasAttr("Hidden")).map((f) => f.name) : $s ];` at member of C
}
@Inspect
class Account {
string user;
@Hidden string password;
int id;
}
console.writeln(Account().visible().joinToString(","));
user,id
See also
- Class — A class that a rule has matched, as a rule sees it.