diff options
author | SoniEx2 <endermoneymod@gmail.com> | 2021-06-26 12:53:52 -0300 |
---|---|---|
committer | SoniEx2 <endermoneymod@gmail.com> | 2021-06-26 13:11:38 -0300 |
commit | 42e6fa41a8f3903e2b8b05baf212b6d2c405d950 (patch) | |
tree | 4ca0b96d43914a103a48fa1a8b13f4bbd9e25829 /src/infoid.rs | |
parent | b0dcbe6e3ee505009278826d0a9e651497c7182f (diff) |
Clean up a bit
Diffstat (limited to 'src/infoid.rs')
-rw-r--r-- | src/infoid.rs | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/infoid.rs b/src/infoid.rs new file mode 100644 index 0000000..d39f059 --- /dev/null +++ b/src/infoid.rs @@ -0,0 +1,85 @@ +// This file is part of Hexchat Plugin API Bindings for Rust +// Copyright (C) 2018, 2021 Soni L. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program 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 Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +use std::borrow::Cow; + +/// A hexchat_get_info key. +#[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Copy, Clone)] +pub enum InfoId<'a> { + /// Returns the away message, or `None` if the user is not away. + Away, + /// Returns the current channel name. + Channel, + /// Returns the current charset. + Charset, + /// Returns the hexchat configuration directory, e.g. `/home/user/.config/hexchat`. + Configdir, + /// Returns the text event format string for the given text event name. + EventText(&'a str), + /// Returns the (real) hostname of the current server. + Host, + /// Returns the contents of the input box. + Inputbox, + // TODO replace with a get_libdirfs function! + // /// Returns the library directory, e.g. `/usr/lib/hexchat`. + // /// + // /// May not always work, as this string isn't necessarily UTF-8, but local file system + // /// encoding. + // Libdirfs, + /// Returns the channel modes, if known, or `None`. + Modes, + /// Returns the current network name, or `None`. + Network, + /// Returns the user's current nick. + Nick, + /// Returns the user's nickserv password, if any, or `None` + Nickserv, + /// Returns the current server name, or `None` if you are not connected. + Server, + /// Returns the current channel topic. + Topic, + /// Returns the HexChat version string. + Version, + /// Returns the window status: "active", "hidden" or "normal". + WinStatus, +} + +impl<'a> InfoId<'a> { + pub fn name(&self) -> Cow<'static, str> { + match *self { + InfoId::EventText(s) => { + let mut eventtext: String = "event_text ".into(); + eventtext.push_str(&s); + eventtext.into() + }, + InfoId::Away => "away".into(), + InfoId::Channel => "channel".into(), + InfoId::Charset => "charset".into(), + InfoId::Configdir => "configdir".into(), + InfoId::Host => "host".into(), + InfoId::Inputbox => "inputbox".into(), + //InfoId::Libdirfs => "libdirfs".into(), + InfoId::Modes => "modes".into(), + InfoId::Network => "network".into(), + InfoId::Nick => "nick".into(), + InfoId::Nickserv => "nickserv".into(), + InfoId::Server => "server".into(), + InfoId::Topic => "topic".into(), + InfoId::Version => "version".into(), + InfoId::WinStatus => "win_status".into(), + } + } +} |