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