1
0
Fork 0
mirror of https://github.com/polybar/polybar.git synced 2024-10-27 05:23:39 -04:00
polybar/include/components/parser.hpp

41 lines
964 B
C++
Raw Normal View History

2016-06-14 23:32:35 -04:00
#pragma once
#include "common.hpp"
2016-11-25 07:55:15 -05:00
#include "errors.hpp"
2016-06-14 23:32:35 -04:00
2016-11-19 00:22:44 -05:00
POLYBAR_NS
2016-06-14 23:32:35 -04:00
class signal_emitter;
class logger;
2016-11-21 09:07:00 -05:00
struct bar_settings;
enum class attribute : uint8_t;
enum class mousebtn : uint8_t;
2016-11-24 22:10:26 -05:00
DEFINE_ERROR(parser_error);
DEFINE_CHILD_ERROR(unrecognized_token, parser_error);
DEFINE_CHILD_ERROR(unrecognized_attribute, parser_error);
DEFINE_CHILD_ERROR(unclosed_actionblocks, parser_error);
2016-06-14 23:32:35 -04:00
class parser {
public:
explicit parser(signal_emitter& emitter, const logger& logger, const bar_settings& bar);
2016-11-02 15:22:45 -04:00
void operator()(string data);
void codeblock(string data);
size_t text(string data);
2016-06-14 23:32:35 -04:00
protected:
2016-11-21 09:07:00 -05:00
uint32_t parse_color(string s, uint32_t fallback = 0);
int8_t parse_fontindex(string s);
2016-11-25 07:55:15 -05:00
attribute parse_attr(const char attr);
2016-11-02 15:22:45 -04:00
mousebtn parse_action_btn(string data);
2016-11-25 07:55:15 -05:00
string parse_action_cmd(const string& data);
2016-06-14 23:32:35 -04:00
private:
signal_emitter& m_sig;
const logger& m_log;
2016-06-14 23:32:35 -04:00
const bar_settings& m_bar;
vector<int> m_actions;
};
2016-11-19 00:22:44 -05:00
POLYBAR_NS_END