posh_transient/
lib.rs

1use serde_json::Value;
2
3pub fn get_last_segment(blocks: &Value) -> Option<&Value> {
4    let prompt_left_blocks = blocks
5        .as_array()?
6        .iter()
7        .filter(|block| block["alignment"] == "left" || block["type"] == "prompt")
8        .map(|block| &block["segments"]);
9    prompt_left_blocks.last()?.as_array()?.last()
10}
11
12pub fn alter_omp_json(json: &mut Value) {
13    let last_segment = get_last_segment(&json["blocks"])
14        .expect("Cannot find last segment for given ")
15        .clone();
16    json.as_object_mut()
17        .unwrap()
18        .insert("transient_prompt".to_owned(), last_segment);
19}