Source code for ramble.util.colors

# Copyright 2022-2026 The Ramble Authors
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.

config_color = "@*Y"
header_color = "@*b"
level1_color = "@*g"
level2_color = "@*r"
level3_color = "@*c"
level4_color = "@*m"
plain_format = "@."


[docs] def escape_str(s): return s.replace("@@", "@").replace("@", "@@")
[docs] def level_func(level): if level < 0: return str elif level == 0: return section_title elif level == 1: return nested_1 elif level == 2: return nested_2 elif level == 3: return nested_3 elif level >= 4: return nested_4
[docs] def config_title(s): return config_color + escape_str(s) + plain_format
[docs] def section_title(s): return header_color + escape_str(s) + plain_format
[docs] def nested_1(s): return level1_color + escape_str(s) + plain_format
[docs] def nested_2(s): return level2_color + escape_str(s) + plain_format
[docs] def nested_3(s): return level3_color + escape_str(s) + plain_format
[docs] def nested_4(s): return level4_color + escape_str(s) + plain_format
[docs] def title_color(title: str, n_indent: int = 0): """Set the appropriate color for titles based on indentation""" if n_indent == 0: out_str = section_title(f"{title}") elif n_indent == 4: out_str = nested_1(f"{title}") elif n_indent == 8: out_str = nested_2(f"{title}") elif n_indent == 12: out_str = nested_3(f"{title}") else: out_str = nested_4(f"{title}") return out_str
[docs] def plaintext(s): """Escapes `@` characters to print plaintext with cprint""" return escape_str(s)