Mercurial > irccd
annotate irccdctl/alias.cpp @ 862:6b65493d97cf
plugin logger: rename path configuration to file, closes #1670
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 25 Jul 2019 21:10:00 +0000 |
parents | 06cc2f95f479 |
children | 5e25439fe98d |
rev | line source |
---|---|
348 | 1 /* |
2 * alias.cpp -- create irccdctl aliases | |
3 * | |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
773
diff
changeset
|
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
348 | 5 * |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <cassert> | |
20 #include <regex> | |
21 | |
22 #include "alias.hpp" | |
23 | |
24 namespace irccd { | |
25 | |
527
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
26 namespace ctl { |
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
27 |
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
28 alias_arg::alias_arg(std::string value) |
348 | 29 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
30 assert(!value.empty()); |
348 | 31 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
32 if ((is_placeholder_ = std::regex_match(value, std::regex("^%\\d+$")))) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
33 value_ = value.substr(1); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
34 else |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
35 value_ = std::move(value); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
36 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
37 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
38 auto alias_arg::is_placeholder() const noexcept -> bool |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
39 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
40 return is_placeholder_; |
348 | 41 } |
42 | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
43 unsigned alias_arg::get_index() const noexcept |
348 | 44 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
45 assert(is_placeholder_); |
348 | 46 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
47 return std::stoi(value_); |
348 | 48 } |
49 | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
50 const std::string& alias_arg::get_value() const noexcept |
348 | 51 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
52 assert(!is_placeholder_); |
348 | 53 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
54 return value_; |
348 | 55 } |
56 | |
527
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
57 std::ostream& operator<<(std::ostream& out, const alias_arg& arg) |
348 | 58 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
59 if (arg.is_placeholder()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
60 out << "%" << arg.get_value(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
61 else |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
62 out << arg.get_value(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
63 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
64 return out; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
65 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
66 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
67 alias_command::alias_command(std::string command, std::vector<alias_arg> args) noexcept |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
68 : command_(std::move(command)) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
69 , args_(std::move(args)) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
70 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
71 } |
348 | 72 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
73 auto alias_command::get_command() const noexcept -> const std::string& |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
74 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
75 return command_; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
76 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
77 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
78 auto alias_command::get_args() const noexcept -> const std::vector<alias_arg>& |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
79 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
80 return args_; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
81 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
82 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
83 alias::alias(std::string name) noexcept |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
84 : name_(std::move(name)) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
85 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
86 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
87 |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
88 auto alias::get_name() const noexcept -> const std::string& |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
89 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
628
diff
changeset
|
90 return name_; |
348 | 91 } |
92 | |
527
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
93 } // !ctl |
a88796ed040a
Irccdctl: switch to Boost.Asio, closes #697
David Demelier <markand@malikania.fr>
parents:
511
diff
changeset
|
94 |
348 | 95 } // !irccd |