diff --git a/data/languages/bash/highlight.xml b/data/languages/bash/highlight.xml
index 2e8452e..59f06be 100644
--- a/data/languages/bash/highlight.xml
+++ b/data/languages/bash/highlight.xml
@@ -4,19 +4,19 @@
commentDoxygen
- #!(\\[\\\n]|.)*?$
+ #!(.|\\[\\\n])*?$
comment
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
- '(\\[\\']|.)*?'
+ '(.|\\[\\'])*?'
diff --git a/data/languages/boo/highlight.xml b/data/languages/boo/highlight.xml
index 392599d..e394fa0 100644
--- a/data/languages/boo/highlight.xml
+++ b/data/languages/boo/highlight.xml
@@ -16,11 +16,11 @@
doubleQuoteText
- "(\\[\\"]|.)*?$
+ "(.|\\[\\"])*?$
doubleQuoteText
- \b'(\\[\\']|.)*?$
+ \b'(.|\\[\\'])*?$
diff --git a/data/languages/c/highlight.xml b/data/languages/c/highlight.xml
index 92241c4..48b8370 100644
--- a/data/languages/c/highlight.xml
+++ b/data/languages/c/highlight.xml
@@ -28,7 +28,7 @@
preprocesseur
- #(\\[\\\n]|.)*
+ #(.|\\[\\\n])*
commentDoxygen
@@ -44,11 +44,11 @@
doubleQuoteText
- "(\\[\\"]|.)*"
+ "(.|\\[\\"])*"
doubleQuoteText
- '((\\[\\'])|.){1,2}'
+ '\\?.'
@@ -70,7 +70,7 @@
storageKeyword
- \b(inline|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\b
+ \b(inline|const|class|namespace|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\b
commonDefine
@@ -90,11 +90,11 @@
memberClass
- \b(m_[A-Za-z_0-9]*)\b
+ \bm_\w+\b
inputFunction
- \b(_[A-Za-z_0-9]*)\b
+ \b_\w+\b
false
diff --git a/data/languages/cmake/highlight.xml b/data/languages/cmake/highlight.xml
index 4d7ea84..e9989a8 100644
--- a/data/languages/cmake/highlight.xml
+++ b/data/languages/cmake/highlight.xml
@@ -9,15 +9,15 @@
SYNTAX_ERROR
- #[ \t]TODO[ \t]*:(\\[\\\n]|.)*?$
+ #[ \t]TODO[ \t]*:(.|\\[\\\n])*?$
comment
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?$
+ "(.|\\[\\"])*?$
diff --git a/data/languages/glsl/highlight.xml b/data/languages/glsl/highlight.xml
index 97d4c06..0f7bbb7 100644
--- a/data/languages/glsl/highlight.xml
+++ b/data/languages/glsl/highlight.xml
@@ -15,23 +15,23 @@
preprocesseur
- #[ \t]*if 0(\\[\\\n]|.)*#(endif|else)
+ #[ \t]*if 0(.|\\[\\\n])*#(endif|else)
preprocesseur
- #(\\[\\\n]|.)*$
+ #(.|\\[\\\n])*$
commentDoxygen
- //!(\\[\\\n]|.)*$
+ //!(.|\\[\\\n])*$
SYNTAX_ERROR
- //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*$
+ //[ \t]*TODO[ \t]*:(.|\\[\\\n])*$
comment
- //(\\[\\\n]|.)*$
+ //(.|\\[\\\n])*$
diff --git a/data/languages/in/highlight.xml b/data/languages/in/highlight.xml
index 4245674..1dc5000 100644
--- a/data/languages/in/highlight.xml
+++ b/data/languages/in/highlight.xml
@@ -4,15 +4,15 @@
preprocesseur
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?$
+ "(.|\\[\\"])*?$
doubleQuoteText
- '(\\[\\']|.)*?$
+ '(.|\\[\\'])*?$
diff --git a/data/languages/java/highlight.xml b/data/languages/java/highlight.xml
index 257bcb8..500a002 100644
--- a/data/languages/java/highlight.xml
+++ b/data/languages/java/highlight.xml
@@ -12,23 +12,23 @@
commentDoxygen
- //!(\\[\\\n]|.)*?$
+ //!(.|\\[\\\n])*?$
SYNTAX_ERROR
- //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*?$
+ //[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$
comment
- //(\\[\\\n]|.)*?$
+ //(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
- '(\\[\\']|.)*?'
+ '(.|\\[\\'])*?'
diff --git a/data/languages/json/highlight.xml b/data/languages/json/highlight.xml
index 4646777..fd54150 100644
--- a/data/languages/json/highlight.xml
+++ b/data/languages/json/highlight.xml
@@ -4,7 +4,7 @@
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
diff --git a/data/languages/lua/highlight.xml b/data/languages/lua/highlight.xml
index 9291441..45753de 100644
--- a/data/languages/lua/highlight.xml
+++ b/data/languages/lua/highlight.xml
@@ -8,19 +8,19 @@
SYNTAX_ERROR
- \-\-[ \t]*TODO[ \t]*:(\\[\\\n]|.)*?$
+ \-\-[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$
comment
- \-\-(\\[\\\n]|.)*?$
+ \-\-(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
- '(\\[\\']|.)*?'
+ '(.|\\[\\'])*?'
diff --git a/data/languages/makefile/highlight.xml b/data/languages/makefile/highlight.xml
index 9878720..995beb6 100644
--- a/data/languages/makefile/highlight.xml
+++ b/data/languages/makefile/highlight.xml
@@ -6,15 +6,15 @@
preprocesseur
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
- '(\\[\\']|.)*?'
+ '(.|\\[\\'])*?'
diff --git a/data/languages/matlab/highlight.xml b/data/languages/matlab/highlight.xml
index b6036df..1ef733c 100644
--- a/data/languages/matlab/highlight.xml
+++ b/data/languages/matlab/highlight.xml
@@ -5,11 +5,11 @@
commentDoxygen
- %%(\\[\\\n]|.)*?$
+ %%(.|\\[\\\n])*?$
comment
- %(\\[\\\n]|.)*?$
+ %(.|\\[\\\n])*?$
doubleQuoteText
@@ -21,7 +21,7 @@
preprocesseur
- global( |\t)+(\\[\\\n]|.)*?$
+ global( |\t)+(.|\\[\\\n])*?$
diff --git a/data/languages/php/highlight.xml b/data/languages/php/highlight.xml
index 0514b6e..a7a8b7b 100644
--- a/data/languages/php/highlight.xml
+++ b/data/languages/php/highlight.xml
@@ -11,23 +11,23 @@
SYNTAX_ERROR
- //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*?$
+ //[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$
comment
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
comment
- //(\\[\\\n]|.)*?$
+ //(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
- '(\\[\\']|.)*?'
+ '(.|\\[\\'])*?'
diff --git a/data/languages/python/highlight.xml b/data/languages/python/highlight.xml
index d2900d3..8e2b67e 100644
--- a/data/languages/python/highlight.xml
+++ b/data/languages/python/highlight.xml
@@ -12,15 +12,15 @@
commentDoxygen
- ##(\\[\\\n]|.)*?$
+ ##(.|\\[\\\n])*?$
comment
- #(\\[\\\n]|.)*?$
+ #(.|\\[\\\n])*?$
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\\[\\"])*?"
doubleQuoteText
diff --git a/data/languages/xml/highlight.xml b/data/languages/xml/highlight.xml
index eb05e3d..039d80c 100644
--- a/data/languages/xml/highlight.xml
+++ b/data/languages/xml/highlight.xml
@@ -5,33 +5,31 @@
comment
- ]]>
+ ]]>
doubleQuoteText
- "(\\[\\"]|.)*?"
+ "(.|\r|\n|\\\\|\\")*?"
doubleQuoteText
- \b'.*?('|\n)
+ \b'(.|\r|\n)*?('|\n)
+
+
+ macro
+ ]]>
error
- <\?\w*|\?>
+ ]]>
+
-
-
- functionName
-
-
+ |>)?]]>
diff --git a/sources/appl/HighlightPattern.cpp b/sources/appl/HighlightPattern.cpp
index a9b8c9f..f40dc47 100644
--- a/sources/appl/HighlightPattern.cpp
+++ b/sources/appl/HighlightPattern.cpp
@@ -30,13 +30,14 @@ appl::HighlightPattern::~HighlightPattern() {
void appl::HighlightPattern::setPatern(const std::string& _regExp, bool forceMaximize) {
m_regexValue = _regExp;
+ APPL_DEBUG("parse regex='" << _regExp << "'");
try {
m_regExp.assign(_regExp, std::regex_constants::optimize | std::regex_constants::ECMAScript);
//m_regExp.assign(_regExp, std::regex_constants::optimize | std::regex_constants::extended);
m_hasParsingError = false;
} catch (std::regex_error e) {
m_hasParsingError = true;
- APPL_ERROR("can not parse regExp : '" << e.what() << "' for : " << _regExp);
+ APPL_ERROR("can not parse regex : '" << e.what() << "' for : " << _regExp);
}
//m_regExp.setMaximize(forceMaximize);
}
@@ -54,7 +55,7 @@ void appl::HighlightPattern::display() {
APPL_INFO("patern : '" << m_paternName << "' level=" << m_level );
APPL_INFO(" == > colorName '" << m_colorName << "'");
//APPL_INFO(" == > regExp '" << m_regExp.getRegExp() << "'");
- APPL_INFO(" == > regExp '" << m_regexValue << "'");
+ APPL_INFO(" == > regex '" << m_regexValue << "'");
}
void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level, bool forceMaximize) {
@@ -126,8 +127,27 @@ enum resultFind appl::HighlightPattern::find(int32_t _start,
*/
std::smatch resultMatch;
+ std::regex_constants::match_flag_type flags = std::regex_constants::match_continuous;
+
//APPL_DEBUG("find data at : start=" << _start << " stop=" << _stop << " regex='" << m_regexValue << "'");
- std::regex_search(_buffer.begin() + _start, _buffer.begin() + _stop, resultMatch, m_regExp, std::regex_constants::match_continuous);
+ if ((int64_t)_stop <= (int64_t)_buffer.size()) {
+ char val = _buffer[_stop];
+ if ( val != '\n'
+ && val != '\r') {
+ //after last char ==> not end of line ($ would not work))
+ flags |= std::regex_constants::match_not_eol;
+ }
+ if (!( ('a' <= val && val <= 'z')
+ || ('A' <= val && val <= 'Z')
+ || ('0' <= val && val <= '9')
+ || val == '_')) {
+ flags |= std::regex_constants::match_not_eow;
+ }
+ }
+ if (_start>0) {
+ flags |= std::regex_constants::match_prev_avail;
+ }
+ std::regex_search(_buffer.begin() + _start, _buffer.begin() + _stop, resultMatch, m_regExp, flags);
if (resultMatch.size() > 0) {
_resultat.start = std::distance(_buffer.begin(), resultMatch[0].first);;
_resultat.stop = std::distance(_buffer.begin(), resultMatch[0].second);
diff --git a/test/cpp.cpp b/test/cpp.cpp
index e69de29..6ab7374 100644
--- a/test/cpp.cpp
+++ b/test/cpp.cpp
@@ -0,0 +1,164 @@
+/**
+ * @author Edouard DUPIN
+ *
+ * @copyright 2011, Edouard DUPIN, all right reserved
+ *
+ * @license BSD v3 (see license file)
+ */
+
+#ifndef __EWOL_WIDGET_H__
+#define __EWOL_WIDGET_H__
+
+#include
+#include
+'dfgd\'fg'
+'e' sdfsdf '\e'
+
+"dqf\"gsdfg" // \\ \n "
+// TODO : sqdkfjsdldkqfj
+
+
+example_param
+
+=_param
+
+_
+_s
+_3RTDRsdfqsd
+
+m_
+
+m_d6
+
+
+namespace ewol {
+ class Widget;
+ namespace widget {
+ class Manager;
+ class Windows;
+ };
+};
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define ULTIMATE_MAX_SIZE (99999999)
+
+namespace ewol {
+#if 0
+ /**
+ * @not-in-doc
+ */
+#endif
+ class DrawProperty{
+ /*
+ /--> m_windowsSize
+ *--------------------------------------------------*
+ | g |
+ | |
+ | m_size |
+ | / |
+ | o-------------------o |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | o-------------------o |
+ | / |
+ | m_origin |
+ | |
+ *--------------------------------------------------*
+ /
+ (0,0)
+ */
+ public :
+ ivec2 m_windowsSize; //!< Windows compleate size
+ ivec2 m_origin; //!< Windows clipping upper widget (can not be <0)
+ ivec2 m_size; //!< Windows clipping upper widget (can not be <0 and >m_windowsSize)
+ void limit(const vec2& _origin, const vec2& _size);
+ };
+ std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj);
+ /**
+ * @brief Gravity of the widget property
+ * @not-in-doc
+ */
+ enum gravity {
+ gravityCenter=0x00, //!< gravity is in certer
+ gravityTopLeft=0x05,
+ gravityTop=0x01,
+ gravityTopRight=0x03,
+ gravityRight=0x02,
+ gravityButtomRight=0x06,
+ gravityButtom=0x04,
+ gravityButtomLeft=0x0C,
+ gravityLeft=0x08,
+ };
+ std::ostream& operator <<(std::ostream& _os, const enum ewol::gravity _obj);
+ std::string gravityToString(const enum ewol::gravity _obj);
+ enum ewol::gravity stringToGravity(const std::string& _obj);
+ /**
+ * @not-in-doc
+ */
+ class EventShortCut {
+ public:
+ bool broadcastEvent; //!< if it is true, then the message is sent to all the system
+ const char* generateEventId; //!< Local generated event
+ std::string eventData; //!< data link with the event
+ ewol::key::Special specialKey; //!< special board key
+ char32_t unicodeValue; //!< 0 if not used
+ enum ewol::key::keyboard keyboardMoveValue; //!< ewol::EVENT_KB_MOVE_TYPE_NONE if not used
+ EventShortCut(void) {
+ broadcastEvent = false;
+ generateEventId = NULL;
+ eventData = "";
+ unicodeValue = 0;
+ keyboardMoveValue = ewol::key::keyboardUnknow;
+ };
+ ~EventShortCut(void) { };
+ };
+ /**
+ * @brief Widget class is the main widget interface, it hase some generic properties:
+ * :** known his parent
+ * :** Can be display at a special position with a special scale
+ * :** Can get focus
+ * :** Receive Event (keyboard / mouse / ...)
+ *
+ */
+ class Widget : public ewol::Object {
+ public:
+ // Config list of properties
+ static const char* const configFill;
+ static const char* const configExpand;
+ static const char* const configHide;
+ static const char* const configFocus;
+ static const char* const configMinSize;
+ static const char* const configMaxSize;
+ static const char* const configGravity;
+ public:
+ /**
+ * @brief Constructor of the widget classes
+ * @return (no execption generated (not managed in embended platform))
+ */
+ Widget(void);
+ /**
+ * @brief Destructor of the widget classes
+ */
+ virtual ~Widget(void) {
+ vec2 plop = vec2(15.2, 56.6f);
+ }
+ };
+};
+
+
+#endif
diff --git a/test/xml.xml b/test/xml.xml
index a0bb143..cbcf34f 100644
--- a/test/xml.xml
+++ b/test/xml.xml
@@ -1,6 +1,6 @@
-
+
-
+
direct data