x_log/
utils.rs

1use std::path::Path;
2use std::fmt;
3
4cfg_if::cfg_if! {
5    if #[cfg(target_arch = "wasm32")] {
6        use web_sys::console;
7        use wasm_bindgen::{JsValue};
8    } else {
9        use ansi_term::Color;
10        use chrono::{Local, Utc};
11    }
12}
13
14#[derive(Copy, Clone, Debug)]
15pub enum Timezone {
16    None,
17    Utc,
18    Local,
19}
20
21#[cfg(not(target_arch = "wasm32"))]
22static DEFAULT_TIME_FORMAT: &str = "%Y-%m-%d %H:%M:%S";
23
24#[cfg(not(target_arch = "wasm32"))]
25pub fn format_time(timezone: &Timezone) -> String {
26    match timezone {
27        Timezone::None => "".to_string(),
28        Timezone::Local => format!("{} ", Local::now().format(DEFAULT_TIME_FORMAT)),
29        Timezone::Utc => format!("{} ", Utc::now().format(DEFAULT_TIME_FORMAT)),
30    }
31}
32
33
34pub fn format_path(path: &str, line: u32) -> String {
35    let pathname = Path::new(path);
36    let pathname = pathname.to_str().unwrap_or("???");
37    // pathname.to_string().splitn(3, "/");
38    // let pathname = path.file_stem().unwrap().to_owned().into_string().unwrap();
39    // let pathname = pathname.file_name().unwrap().to_owned().into_string().unwrap();
40    let pathname = format!("{}:{}", pathname, line);
41    pathname
42}
43
44pub fn __print_val(path: &str, line: u32, args: fmt::Arguments) {
45    #[cfg(target_arch = "wasm32")]
46    {
47        let path_str = format_path(path, line);
48        let msg = format!("{}", args);
49
50        console::log_4(
51            &JsValue::from(format!("%c{}%c {} %c{}",
52                                   "VALUE", path_str, msg
53            )),
54            &JsValue::from("color: white; background: #b100f3"),
55            &JsValue::from("color: inherit"),
56            &JsValue::from("color: #b100f3"),
57        );
58    }
59
60    #[cfg(not(target_arch = "wasm32"))]
61    {
62        let timestamp = format_time(&Timezone::Local);
63        let mut path_str = format_path(path, line);
64
65        // timestamp = Color::Fixed(250).paint(timestamp).to_string();
66        path_str = Color::Blue.paint(path_str).to_string();
67
68        let mut color_msg = format!("{}", args);
69        color_msg = Color::Purple.paint(color_msg).to_string();
70
71        let message = format!("{}{} {}", timestamp, path_str, color_msg);
72        println!("{}", message);
73    }
74}
75