From 646dec44064b0637a3ef1ac620bbc30d11e10c34 Mon Sep 17 00:00:00 2001 From: Neur1n Date: Tue, 27 Sep 2022 19:07:13 +0800 Subject: [PATCH] feat: added coloring/hl.nu, a highlighting module (#299) --- coloring/hl.nu | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 coloring/hl.nu diff --git a/coloring/hl.nu b/coloring/hl.nu new file mode 100644 index 0000000..960302f --- /dev/null +++ b/coloring/hl.nu @@ -0,0 +1,56 @@ +export def combine [txt: string, fg: record, bg: record] { + { + txt: $txt, + fg: $fg.fg, + bg: $bg.fg, + bli: ($fg.bli || $bg.bli), + bol: ($fg.bol || $bg.bol), + dim: ($fg.dim || $bg.dim), + hid: ($fg.hid || $bg.hid), + ita: ($fg.ita || $bg.ita), + rev: ($fg.rev || $bg.rev), + stk: ($fg.stk || $bg.stk), + und: ($fg.und || $bg.und) + } +} + +export def create [txt: string, + fg = "n", bg = "n", + bli = false, bol = false, dim = false, hid = false, + ita = false, rev = false, stk = false, und = false] { + { + txt: $txt, + fg: $fg, + bg: $bg, + bli: $bli, + bol: $bol, + dim: $dim, + hid: $hid, + ita: $ita, + rev: $rev, + stk: $stk, + und: $und + } +} + +export def render [obj: record] { + let attr = "" + let attr = $"($attr)(if $obj.bli {'l'})" + let attr = $"($attr)(if $obj.bol {'b'})" + let attr = $"($attr)(if $obj.dim {'d'})" + let attr = $"($attr)(if $obj.hid {'h'})" + let attr = $"($attr)(if $obj.ita {'i'})" + let attr = $"($attr)(if $obj.rev {'r'})" + let attr = $"($attr)(if $obj.stk {'s'})" + let attr = $"($attr)(if $obj.und {'u'})" + + let color = {fg: $obj.fg, bg: $obj.bg, attr: $attr} + + $"(ansi $color)($obj.txt)(ansi reset)" +} + +export def reverse [obj: record] { + let r = ($obj | update fg $obj.bg) + let r = ($r | update bg $obj.fg) + $r +}