From f186a7345dfc99347673f46e0daff0cb63ac8492 Mon Sep 17 00:00:00 2001 From: Kaiden Fey Date: Sun, 21 Feb 2021 14:56:11 +0100 Subject: k-office: initial code dump --- apps/koffice/libko/src/cass/format/gen.rs | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 apps/koffice/libko/src/cass/format/gen.rs (limited to 'apps/koffice/libko/src/cass/format/gen.rs') diff --git a/apps/koffice/libko/src/cass/format/gen.rs b/apps/koffice/libko/src/cass/format/gen.rs new file mode 100644 index 000000000000..f77bcdc90e84 --- /dev/null +++ b/apps/koffice/libko/src/cass/format/gen.rs @@ -0,0 +1,32 @@ +//! Cassiopeia line generator +//! +//! This module takes a set of IR lines, and generates strings from +//! them that are in accordance with the way that the parser of the +//! same version expects them. + +use crate::cass::format::ir::{IrItem, IrType}; + +/// Take a line of IR and generate a string to print into a file +pub(crate) fn line(ir: &IrItem) -> String { + let IrItem { tt, lo } = ir; + match tt { + IrType::Ignore => "".into(), + IrType::Header(map) => format!( + "HEADER {}", + map.iter() + .map(|(k, v)| format!("{}={},", k, v)) + .collect::>() + .join("") + ), + IrType::Start(time) => format!("START {}", time.to_string()), + + // FIXME: find a better way to align the lines here rather + // than having to manually having to pad the 'STOP' commands + IrType::Stop(time) => format!("STOP {}", time.to_string()), + IrType::Invoice(date) => format!("INVOICE {}", date.to_string()), + } +} + +pub(crate) fn head_comment() -> String { + ";; generated by cassiopeia, be careful about editing by hand!".into() +} -- cgit v1.2.3