summaryrefslogtreecommitdiffstats
path: root/lib/entry/libimagentrytag/src/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/entry/libimagentrytag/src/ui.rs')
-rw-r--r--lib/entry/libimagentrytag/src/ui.rs125
1 files changed, 0 insertions, 125 deletions
diff --git a/lib/entry/libimagentrytag/src/ui.rs b/lib/entry/libimagentrytag/src/ui.rs
deleted file mode 100644
index 734708b3..00000000
--- a/lib/entry/libimagentrytag/src/ui.rs
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// imag - the personal information management suite for the commandline
-// Copyright (C) 2015, 2016 Matthias Beyer <mail@beyermatthias.de> and contributors
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; version
-// 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-use clap::{Arg, ArgMatches, App, SubCommand};
-
-use tag::Tag;
-use tag::is_tag;
-
-/// Generates a `clap::SubCommand` to be integrated in the commandline-ui builder for building a
-/// "tags --add foo --remove bar" subcommand to do tagging action.
-pub fn tag_subcommand<'a, 'b>() -> App<'a, 'b> {
- SubCommand::with_name(tag_subcommand_name())
- .author("Matthias Beyer <mail@beyermatthias.de>")
- .version("0.1")
- .about("Add or remove tags")
- .arg(tag_add_arg())
- .arg(tag_remove_arg())
-}
-
-pub fn tag_add_arg<'a, 'b>() -> Arg<'a, 'b> {
- Arg::with_name(tag_subcommand_add_arg_name())
- .short("a")
- .long("add")
- .takes_value(true)
- .value_name("tags")
- .multiple(true)
- .validator(is_tag)
- .help("Add tags, seperated by comma or by specifying multiple times")
-}
-
-pub fn tag_remove_arg<'a, 'b>() -> Arg<'a, 'b> {
- Arg::with_name(tag_subcommand_remove_arg_name())
- .short("r")
- .long("remove")
- .takes_value(true)
- .value_name("tags")
- .multiple(true)
- .validator(is_tag)
- .help("Remove tags, seperated by comma or by specifying multiple times")
-}
-
-pub fn tag_subcommand_name() -> &'static str {
- "tags"
-}
-
-pub fn tag_subcommand_add_arg_name() -> &'static str {
- "add-tags"
-}
-
-pub fn tag_subcommand_remove_arg_name() -> &'static str {
- "remove-tags"
-}
-
-pub fn tag_subcommand_names() -> Vec<&'static str> {
- vec![tag_subcommand_add_arg_name(), tag_subcommand_remove_arg_name()]
-}
-
-/// Generates a `clap::Arg` which can be integrated into the commandline-ui builder for building a
-/// "-t" or "--tags" argument which takes values for tagging actions (add, remove)
-pub fn tag_argument<'a, 'b>() -> Arg<'a, 'b> {
- Arg::with_name(tag_argument_name())
- .short("t")
- .long("tags")
- .takes_value(true)
- .multiple(true)
- .validator(is_tag)
- .help("Add or remove tags, prefixed by '+' (for adding) or '-' (for removing)")
-}
-
-pub fn tag_argument_name() -> &'static str {
- "specify-tags"
-}
-
-/// Get the tags which should be added from the commandline
-///
-/// Returns none if the argument was not specified
-pub fn get_add_tags(matches: &ArgMatches) -> Option<Vec<Tag>> {
- let add = tag_subcommand_add_arg_name();
- extract_tags(matches, add, '+')
- .or_else(|| matches.values_of(add).map(|values| values.map(String::from).collect()))
-}
-
-/// Get the tags which should be removed from the commandline
-///
-/// Returns none if the argument was not specified
-pub fn get_remove_tags(matches: &ArgMatches) -> Option<Vec<Tag>> {
- let rem = tag_subcommand_remove_arg_name();
- extract_tags(matches, rem, '+')
- .or_else(|| matches.values_of(rem).map(|values| values.map(String::from).collect()))
-}
-
-fn extract_tags(matches: &ArgMatches, specifier: &str, specchar: char) -> Option<Vec<Tag>> {
- if let Some(submatch) = matches.subcommand_matches("tags") {
- submatch.values_of(specifier)
- .map(|values| values.map(String::from).collect())
- } else {
- matches.values_of("specify-tags")
- .map(|argmatches| {
- argmatches
- .map(String::from)
- .filter(|s| s.starts_with(specchar))
- .map(|s| {
- String::from(s.split_at(1).1)
- })
- .collect()
- })
- }
-}
-