diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-03-31 02:33:23 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-03-31 02:33:23 -0400 |
| commit | 54e65e2f1c944a861a823641ef1b8fe194c7b0d8 (patch) | |
| tree | 3ded7ce508fb94313974895ca8d75ec95e9fc3c8 /src/stdlib/patterns.c | |
| parent | da94f2bc8ceadcec014d8e5b4819f96ab34fecfb (diff) | |
Fully move all pattern code into patterns.c
Diffstat (limited to 'src/stdlib/patterns.c')
| -rw-r--r-- | src/stdlib/patterns.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/stdlib/patterns.c b/src/stdlib/patterns.c index e274cba9..b7891f88 100644 --- a/src/stdlib/patterns.c +++ b/src/stdlib/patterns.c @@ -1271,12 +1271,30 @@ public Pattern_t Pattern$escape_text(Text_t text) return ret; } +static Text_t Pattern$as_text(const void *obj, bool colorize, const TypeInfo_t *info) +{ + (void)info; + if (!obj) return Text("Pattern"); + + Pattern_t pat = *(Pattern_t*)obj; + Text_t quote = Text$has(pat, Pattern("/")) && !Text$has(pat, Pattern("|")) ? Text("|") : Text("/"); + return Text$concat( colorize ? Text("\x1b[1m$\033[m") : Text("$"), Text$quoted(pat, colorize, quote)); +} + public const TypeInfo_t Pattern$info = { .size=sizeof(Pattern_t), .align=__alignof__(Pattern_t), .tag=TextInfo, .TextInfo={.lang="Pattern"}, - .metamethods=Text$metamethods, + .metamethods={ + .as_text=Pattern$as_text, + .hash=Text$hash, + .compare=Text$compare, + .equal=Text$equal, + .is_none=Text$is_none, + .serialize=Text$serialize, + .deserialize=Text$deserialize, + }, }; static const TypeInfo_t _text_array = { |
