edn/sources/appl/Highlight/HighlightPattern.h

85 lines
2.1 KiB
C
Raw Normal View History

/**
* @author Edouard DUPIN
2012-11-25 11:55:06 +01:00
*
* @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file)
*/
#include <Highlight.h>
#ifndef __HIGHLIGHT_PATTERN_H__
#define __HIGHLIGHT_PATTERN_H__
class HighlightPattern;
#include <etk/RegExp.h>
#include <Colorize.h>
#include <etk/Vector.h>
2013-06-24 21:17:45 +02:00
#include <exml/exml.h>
2012-11-19 22:45:55 +01:00
#include <etk/Buffer.h>
typedef enum {
HLP_FIND_ERROR,
HLP_FIND_OK,
HLP_FIND_OK_NO_END,
}resultFind_te;
class HighlightPattern {
public:
// Constructeur
HighlightPattern(void);
~HighlightPattern(void);
2013-10-09 22:00:24 +02:00
void setName(etk::UString& _name) {
m_paternName = _name;
};
etk::UString getName(void) {
return m_paternName;
};
2013-10-09 22:00:24 +02:00
void setPaternStart(etk::UString& _regExp);
void setPaternStop(etk::UString& _regExp);
void setColor(etk::UString& _colorName);
void setEscapeChar(etk::UString& _EscapeChar);
void setMultiline(bool _enable) {
m_multiline = _enable;
};
2013-10-09 22:00:24 +02:00
void setLevel(int32_t _newLevel) {
m_level = _newLevel;
};
int32_t getLevel(void) {
return m_level;
};
2013-10-09 22:00:24 +02:00
bool isEnable(void);
void display(void);
resultFind_te find(int32_t _start, int32_t _stop, colorInformation_ts& _resultat, etk::Buffer& _buffer);
Colorize* getColor(void) {
return m_color;
};
void parseRules(exml::Element* _child, int32_t _level);
2011-08-19 16:09:58 +02:00
2013-10-09 22:00:24 +02:00
void reloadColor(void);
private:
2013-10-09 22:00:24 +02:00
int32_t m_level; //!< Level of the pattern == > this is to overwrite next pattern when we create an higher ....
etk::UString m_paternName; //!< Current style name (like "c++" or "c" or "script Bash")
etk::UString m_colorName; //!< Current color name
Colorize* m_color; //!< Link to the color manager
etk::RegExp<etk::Buffer>* m_regExpStart; //!< Start of Regular expression
etk::RegExp<etk::Buffer>* m_regExpStop; //!< Stop of Regular Expression
bool m_haveStopPatern; //!< Stop patern presence
bool m_multiline; //!< The patern is multiline
etk::UChar m_escapeChar; //!< Escape char to prevent exeit of patern ....
2013-10-09 22:00:24 +02:00
etk::Vector<HighlightPattern*> m_subPatern; //!< Under patern of this one
// etk::Vector<HighlightPattern*> m_subColor; //!< Under Color in the start RegExp ...
};
#endif