summaryrefslogtreecommitdiffstats
path: root/src/actions/list.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions/list.rs')
-rw-r--r--src/actions/list.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/actions/list.rs b/src/actions/list.rs
new file mode 100644
index 0000000..01289f6
--- /dev/null
+++ b/src/actions/list.rs
@@ -0,0 +1,23 @@
+use selectors::SelectFilters;
+use utils::fileutil as utils;
+
+pub fn list_by_args(filenames: &mut Iterator<Item = String>, args: &[String]) {
+ let filters = match SelectFilters::parse_from_args_with_range(args) {
+ Err(error) => { println!("{}", error); return; },
+ Ok(parsed_filters) => parsed_filters,
+ };
+
+ let cals = utils::read_calendars_from_files(filenames).unwrap();
+
+ let events = cals.into_iter()
+ .map(|cal| cal.get_principal_event())
+ .enumerate()
+ .filter(|(index, event)| filters.is_selected_index(*index, event));
+
+ for (_, event) in events {
+ if let Some(line) = event.get_khaleesi_line() {
+ println!("{}", line);
+ }
+ }
+}
+