bear_lib_terminal/terminal/config/mod.rs
1//! Module containing BLT configuration options.
2//!
3//! # Examples
4//! The following from [the official documentation](http://foo.wyrd.name/en:bearlibterminal:reference#set):
5//!
6//! ```text
7//! window: title='foobar', size=80x25; input.filter='keyboard'
8//! ```
9//!
10//! Is equivalent to
11//!
12//! ```
13//! use bear_lib_terminal::terminal::{self, config};
14//! use bear_lib_terminal::geometry::Size;
15//! # assert!({let result =
16//! terminal::set(config::Window::empty().title("foobar".to_string()).size(Size::new(80, 25)));
17//! # result}); assert!({let result =
18//! terminal::set(vec![config::InputFilter::Group{group: config::InputFilterGroup::Keyboard, both: false}]);
19//! # result});
20//! ```
21
22
23mod section;
24mod input_filter;
25
26pub mod font;
27
28pub use self::section::*;
29pub use self::input_filter::*;
30
31
32/// Trait for generating BLT configuration strings.
33///
34/// Those will get fed directly to the [`terminal_set()` C API function](http://foo.wyrd.name/en:bearlibterminal:reference#set).
35pub trait ConfigPart {
36 fn to_config_str(&self) -> String;
37}
38
39
40/// Escapes `'`s and wraps the strings with `'`s, as per [this](http://foo.wyrd.name/en:bearlibterminal:reference:configuration#configuration_string_format).
41///
42/// # Examples
43/// ```
44/// # use bear_lib_terminal::terminal::config::escape_config_string;
45/// assert_eq!(escape_config_string(&"".to_string()), "''");
46/// ```
47/// ```
48/// # use bear_lib_terminal::terminal::config::escape_config_string;
49/// assert_eq!(escape_config_string(&"'".to_string()), "''''");
50/// ```
51/// ```
52/// # use bear_lib_terminal::terminal::config::escape_config_string;
53/// assert_eq!(escape_config_string(&"asdf'asdf".to_string()), "'asdf''asdf'");
54/// ```
55pub fn escape_config_string(cfg: &String) -> String {
56 format!("'{}'", cfg.replace("'", "''"))
57}