#ini #file-format #file

pretty_ini

Light library to read/write ini files

8 releases

0.1.7 Apr 16, 2023
0.1.6 Feb 13, 2023
0.1.5 Jan 26, 2023
0.1.3 Dec 21, 2022

#12 in #ini


Used in full_logger

MIT license

18KB
451 lines

Pretty INI

Light library to read/write ini files.

Format

[table_name]
key = value

Example

use pretty_ini::{ini, ini_file};

fn main() {
    let mut file = ini_file::IniFile::default();
    file.set_path("demo.ini");

    let mut ini = ini::Ini::default();
    ini.load(&mut file).unwrap();

    let var_iter = ini.get_ref_mut(ini::TABLE_NAME_ROOT, "iter").unwrap();
    var_iter.set(var_iter.parse::<i32>().unwrap() + 1);

    println!("All keys contained in: \"Next\"");
    for key in ini
        .get_all_keys_in_table("next")
        .expect("No key found in Next")
    {
        println!("- {}", key);
    }

    file.save(&mut ini);
}


Pre/Post Process

In the IniFile you can add some process using a ProcessAction.

Pre Process

Called before assigning the file content to the buffer.

let action = Some(Box::new(|buffer| {
    // Do nothing
    return buffer;
}));

ini_file.add_pre_process(action);

Post Process

Called before saving the file.

let action = Some(Box::new(|buffer| {
    // Do nothing
    return buffer;
}));

ini_file.add_post_process(action);

⚠️ Warnings

  • The output when saving will be reformated.
  • Implicit "root" table.

No runtime deps