Update version tag: 1.2.3
This commit is contained in:
@@ -24,7 +24,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
|
||||
return *this;
|
||||
}
|
||||
if (m_data != nullptr) {
|
||||
if (m_current < m_data->m_data.size() ) {
|
||||
if (m_current < (int64_t)m_data->m_data.size() ) {
|
||||
int8_t nbChar = utf8::theoricLen(m_data->m_data[m_current]);
|
||||
if (nbChar != 0) {
|
||||
m_current+=nbChar;
|
||||
@@ -32,7 +32,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
|
||||
m_current++;
|
||||
}
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
m_current = m_data->m_data.size();
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ char32_t appl::Buffer::Iterator::operator* () {
|
||||
return m_value;
|
||||
}
|
||||
if ( m_current < 0
|
||||
|| m_current >= m_data->m_data.size()) {
|
||||
|| m_current >= (int64_t)m_data->m_data.size()) {
|
||||
APPL_ERROR("request an element out of bounding !!! 0 <= " << m_current << " < " << m_data->m_data.size());
|
||||
return m_value;
|
||||
}
|
||||
@@ -77,7 +77,7 @@ char32_t appl::Buffer::Iterator::operator* () {
|
||||
memset(tmpVal, 0, sizeof(tmpVal));
|
||||
tmpVal[0] = m_data->m_data[m_current];
|
||||
int8_t nbChar = utf8::theoricLen(tmpVal[0]);
|
||||
for (int32_t iii=1; iii<nbChar && m_current+iii<m_data->m_data.size(); ++iii) {
|
||||
for (int32_t iii=1; iii<nbChar && m_current+iii<(int64_t)m_data->m_data.size(); ++iii) {
|
||||
tmpVal[iii] = m_data->m_data[m_current+iii];
|
||||
}
|
||||
// transform ...
|
||||
@@ -152,13 +152,20 @@ bool appl::Buffer::loadFile(const std::string& _name) {
|
||||
m_cursorPos = 0;
|
||||
setHighlightType("");
|
||||
m_nbLines = 0;
|
||||
if (m_data.dumpFrom(m_fileName) == true ) {
|
||||
countNumberofLine();
|
||||
tryFindHighlightType();
|
||||
m_isModify = false;
|
||||
return true;
|
||||
if (file.exist() == false) {
|
||||
APPL_ERROR("File : '" << m_fileName << "' does not exist...");
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
if (file.fileOpenRead() == false) {
|
||||
APPL_ERROR("File : '" << m_fileName << "' Fail to open in read mode");
|
||||
return false;
|
||||
}
|
||||
m_data = file.fileReadAllString();
|
||||
file.fileClose();
|
||||
countNumberofLine();
|
||||
tryFindHighlightType();
|
||||
m_isModify = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void appl::Buffer::setFileName(const std::string& _name) {
|
||||
@@ -175,12 +182,16 @@ void appl::Buffer::setFileName(const std::string& _name) {
|
||||
}
|
||||
|
||||
bool appl::Buffer::storeFile() {
|
||||
if (m_data.dumpIn(m_fileName) == true) {
|
||||
APPL_INFO("saving file : " << m_fileName);
|
||||
setModification(false);
|
||||
return true;
|
||||
etk::FSNode file(m_fileName);
|
||||
if (file.fileOpenWrite() == false) {
|
||||
APPL_ERROR("File : '" << m_fileName << "' Fail to open in write mode");
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
file.fileWriteAll(m_data);
|
||||
file.fileClose();
|
||||
APPL_INFO("saving file : " << m_fileName);
|
||||
setModification(false);
|
||||
return true;
|
||||
}
|
||||
|
||||
void appl::Buffer::setModification(bool _status) {
|
||||
@@ -638,7 +649,7 @@ bool appl::Buffer::write(const std::string& _data, const appl::Buffer::Iterator&
|
||||
position = 0;
|
||||
}
|
||||
APPL_VERBOSE("write at pos: " << (int64_t)_pos << " ==> " << position << " data : " << _data);
|
||||
m_data.insert(position, (int8_t*)(_data.c_str()), _data.size());
|
||||
m_data.insert((size_t)position, _data);
|
||||
if (m_cursorPos < 0) {
|
||||
m_cursorPos = 0;
|
||||
}
|
||||
@@ -655,7 +666,7 @@ bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterato
|
||||
if (position < 0){
|
||||
position = 0;
|
||||
}
|
||||
m_data.replace(position, (int64_t)_posEnd-(int64_t)_pos, (int8_t*)(_data.c_str()), _data.size());
|
||||
m_data.replace(m_data.begin() + position, m_data.begin() + (int64_t)_posEnd, _data.begin(), _data.end());
|
||||
regenerateHighLightAt(position, (int64_t)_posEnd-(int64_t)_pos, _data.size());
|
||||
m_selectMode = false;
|
||||
moveCursor(position+_data.size());
|
||||
@@ -670,7 +681,7 @@ void appl::Buffer::removeSelection() {
|
||||
}
|
||||
int64_t startPos = getStartSelectionPos();
|
||||
int64_t endPos = getStopSelectionPos();
|
||||
m_data.remove(startPos, endPos-startPos);
|
||||
m_data.erase(startPos, endPos-startPos);
|
||||
regenerateHighLightAt(startPos, endPos-startPos, 0);
|
||||
m_selectMode = false;
|
||||
moveCursor(startPos);
|
||||
@@ -680,7 +691,7 @@ void appl::Buffer::removeSelection() {
|
||||
|
||||
void appl::Buffer::tryFindHighlightType() {
|
||||
etk::FSNode file(m_fileName);
|
||||
std::string type = appl::highlightManager::getTypeExtention(file.fileGetExtention());
|
||||
std::string type = appl::highlightManager::getTypeFile(file.getNameFile());
|
||||
if (type.size() == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -712,7 +723,7 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
|
||||
return;
|
||||
}
|
||||
// normal case
|
||||
//APPL_INFO("(pos="<<pos<<", nbDeleted="<<nbDeleted<<", nbAdded=" << nbAdded << "\");");
|
||||
APPL_VERBOSE("(_pos="<<_pos<<", _nbDeleted="<<_nbDeleted<<", _nbAdded=" << _nbAdded << "\");");
|
||||
int64_t posEnd = _pos + _nbDeleted;
|
||||
// search position of the old element to reparse IT...
|
||||
int64_t startId;
|
||||
@@ -725,32 +736,45 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
|
||||
}
|
||||
// find element previous
|
||||
findMainHighLightPosition(_pos, posEnd, startId, stopId, true);
|
||||
|
||||
|
||||
APPL_VERBOSE(" list old parse:");
|
||||
for (auto &elem : m_HLDataPass1) {
|
||||
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
|
||||
}
|
||||
// Remove previous element to prevent many errors like parsing of // for example
|
||||
startId--;
|
||||
APPL_VERBOSE("Find startId=" << startId << " stopId=" << stopId << " list size=" << m_HLDataPass1.size());
|
||||
|
||||
// remove deprecated element
|
||||
if ( startId == -1
|
||||
&& stopId == -1) {
|
||||
if ( startId <= -1
|
||||
&& stopId <= -1) {
|
||||
m_HLDataPass1.clear();
|
||||
} else if (startId == -1) {
|
||||
APPL_VERBOSE("1 * clear");
|
||||
} else if (startId <= -1) {
|
||||
if (stopId == 0){
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin());
|
||||
//APPL_DEBUG("1 * Erase 0");
|
||||
APPL_VERBOSE("1 * Erase 0");
|
||||
} else {
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin(), m_HLDataPass1.begin()+stopId);
|
||||
//APPL_DEBUG("2 * Erase 0->" << stopId);
|
||||
APPL_VERBOSE("2 * Erase 0->" << stopId);
|
||||
}
|
||||
} else if (stopId == -1) {
|
||||
//APPL_DEBUG("3 * Erase " << startId+1 << "-> end");
|
||||
} else if (stopId <= -1) {
|
||||
APPL_VERBOSE("3 * Erase " << startId+1 << "-> end");
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.end());
|
||||
stopId = -1;
|
||||
} else {
|
||||
int32_t currentSize = m_HLDataPass1.size();
|
||||
//APPL_DEBUG("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId);
|
||||
APPL_VERBOSE("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId+1);
|
||||
if (stopId == currentSize-1) {
|
||||
stopId = -1;
|
||||
}
|
||||
}
|
||||
//APPL_DEBUG("new size=" << (int32_t)m_HLDataPass1.size()-1);
|
||||
APPL_VERBOSE(" list afterRemove:");
|
||||
for (auto &elem : m_HLDataPass1) {
|
||||
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
|
||||
}
|
||||
|
||||
// update position after the range position :
|
||||
int64_t elemStart;
|
||||
if (startId == -1) {
|
||||
@@ -764,18 +788,18 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
|
||||
it->stop += _nbAdded - _nbDeleted;
|
||||
}
|
||||
//Regenerate Element inside range
|
||||
if ( startId == -1
|
||||
&& stopId == -1) {
|
||||
//APPL_DEBUG("******* Regenerate ALL");
|
||||
if ( startId <= -1
|
||||
&& stopId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate ALL");
|
||||
generateHighLightAt(0, m_data.size());
|
||||
} else if(-1 == startId) {
|
||||
//APPL_DEBUG("******* Regenerate START");
|
||||
} else if(startId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate START");
|
||||
generateHighLightAt(0, m_HLDataPass1[0].start, 0);
|
||||
} else if(-1 == stopId) {
|
||||
//APPL_DEBUG("******* Regenerate STOP");
|
||||
} else if(stopId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate STOP");
|
||||
generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].stop, m_data.size(), m_HLDataPass1.size());
|
||||
} else {
|
||||
//APPL_DEBUG("******* Regenerate RANGE");
|
||||
APPL_VERBOSE("******* Regenerate RANGE");
|
||||
generateHighLightAt(m_HLDataPass1[startId].stop, m_HLDataPass1[startId+1].start, startId+1);
|
||||
}
|
||||
}
|
||||
@@ -914,22 +938,24 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap
|
||||
" start=" << HLStartPos <<
|
||||
" stop=" << m_HLDataPass1[kkk].start );
|
||||
m_highlight->parse2(HLStartPos,
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
} // else : nothing to do ...
|
||||
} else {
|
||||
APPL_VERBOSE(" == > (empty section 2 ) kkk=" << kkk <<
|
||||
" start=" << m_HLDataPass1[kkk-1].stop <<
|
||||
" stop=" << m_HLDataPass1[kkk].start );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
// under section :
|
||||
//APPL_DEBUG(" == > (under section ) k="<<k<<" start="<<m_HLDataPass1[k].beginStart<<" stop="<<m_HLDataPass1[k].endStop << " subSectionOfID=" << 99999999);
|
||||
// TODO : ...
|
||||
APPL_VERBOSE(" == > (under section ) kkk="<<kkk<<" start="<<m_HLDataPass1[kkk].start<<" stop="<<m_HLDataPass1[kkk].stop << " subSectionOfID=" << 99999999);
|
||||
m_highlight->parseSubElement(m_HLDataPass1[kkk],
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
if (endSearch == (int32_t)m_HLDataPass1.size() ){
|
||||
//if( k < (int32_t)m_HLDataPass1.size()) {
|
||||
@@ -938,16 +964,16 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap
|
||||
" start=" << m_HLDataPass1[kkk-1].stop <<
|
||||
" stop=" << HLStop );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
} else {
|
||||
APPL_VERBOSE(" == > (empty section 4 ) kkk=" << kkk <<
|
||||
" start=0 stop=" << HLStop );
|
||||
m_highlight->parse2(0,
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
@@ -82,7 +82,7 @@ namespace appl {
|
||||
if (m_data == nullptr) {
|
||||
return false;
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
return false;
|
||||
}
|
||||
if (m_current < 0) {
|
||||
@@ -101,8 +101,8 @@ namespace appl {
|
||||
if (m_current < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current > m_data->m_data.size()) {
|
||||
return m_data->m_data.size();
|
||||
if (m_current > (int64_t)m_data->m_data.size()) {
|
||||
return (int64_t)m_data->m_data.size();
|
||||
}
|
||||
return m_current;
|
||||
};
|
||||
@@ -224,7 +224,7 @@ namespace appl {
|
||||
if (m_current < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
return m_data->m_data.size()-1;
|
||||
}
|
||||
return m_current;
|
||||
@@ -348,9 +348,9 @@ namespace appl {
|
||||
*/
|
||||
void setModification(bool _status);
|
||||
protected:
|
||||
etk::Buffer m_data; //!< copy of the file buffer
|
||||
std::string m_data; //!< copy of the file buffer
|
||||
public:
|
||||
etk::Buffer& getData() {
|
||||
std::string& getData() {
|
||||
return m_data;
|
||||
};
|
||||
protected:
|
||||
|
@@ -390,31 +390,13 @@ void MainWindows::displayProperty() {
|
||||
} else {
|
||||
#ifdef SDGSDFGSDFGSDFGSDFGSTERGDHFGHFDS
|
||||
std::string menuDescription = "<title>Properties</title>\n";
|
||||
menuDescription += "<group>\n";
|
||||
menuDescription += " <title>Editor</title>\n";
|
||||
menuDescription += " <menu>\n";
|
||||
menuDescription += " <title>Editor Interface</title>\n";
|
||||
menuDescription += " <short-title>Editor</short-title>\n";
|
||||
menuDescription += " <widget>appl-text-viewer</widget>\n";
|
||||
menuDescription += " </menu>\n";
|
||||
menuDescription += "<group title='Editor'>\n";
|
||||
menuDescription += " <menu title='Editor Interface' short-title='Editor' widget='appl-text-viewer'>\n";
|
||||
menuDescription += "</group>\n";
|
||||
menuDescription += "<group>\n";
|
||||
menuDescription += " <title>Gui</title>\n";
|
||||
menuDescription += " <menu>\n";
|
||||
menuDescription += " <title>Font selection</title>\n";
|
||||
menuDescription += " <short-title>Font</short-title>\n";
|
||||
menuDescription += " <widget></widget>\n";
|
||||
menuDescription += " </menu>\n";
|
||||
menuDescription += " <menu>\n";
|
||||
menuDescription += " <title>Color selection</title>\n";
|
||||
menuDescription += " <short-title>Color</short-title>\n";
|
||||
menuDescription += " <widget></widget>\n";
|
||||
menuDescription += " </menu>\n";
|
||||
menuDescription += " <menu>\n";
|
||||
menuDescription += " <title>Theme selection</title>\n";
|
||||
menuDescription += " <short-title>Theme</short-title>\n";
|
||||
menuDescription += " <widget></widget>\n";
|
||||
menuDescription += " </menu>\n";
|
||||
menuDescription += "<group title='Gui'>\n";
|
||||
menuDescription += " <menu title='Font selection' short-title='Font' widget=''>\n";
|
||||
menuDescription += " <menu title='Color selection' short-title='Color' widget=''>\n";
|
||||
menuDescription += " <menu title='Theme selection' short-title='Theme' widget=''>\n";
|
||||
menuDescription += "</group>\n";
|
||||
|
||||
tmpWidget->setMenu(menuDescription);
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <appl/global.h>
|
||||
#include <appl/Highlight.h>
|
||||
#include <exml/exml.h>
|
||||
#include <ewol/ewol.h>
|
||||
#include <ewol/resource/Manager.h>
|
||||
|
||||
|
||||
@@ -24,18 +25,6 @@
|
||||
//#define HL2_DEBUG APPL_INFO
|
||||
#define HL2_DEBUG APPL_VERBOSE
|
||||
|
||||
void appl::Highlight::parseRules(exml::Element* _child,
|
||||
std::vector<std::unique_ptr<HighlightPattern>>& _mListPatern,
|
||||
int32_t _level,
|
||||
bool forceMaximize) {
|
||||
// Create the patern ...
|
||||
HighlightPattern *myPattern = new HighlightPattern(m_paintingProperties);
|
||||
// parse under Element
|
||||
myPattern->parseRules(_child, _level, forceMaximize);
|
||||
// add element in the list
|
||||
_mListPatern.push_back(std::unique_ptr<HighlightPattern>(myPattern));
|
||||
}
|
||||
|
||||
appl::Highlight::Highlight() {
|
||||
addObjectType("appl::Highlight");
|
||||
}
|
||||
@@ -83,7 +72,8 @@ void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _
|
||||
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" );
|
||||
continue;
|
||||
}
|
||||
parseRules(passChild, m_listHighlightPass1, level1++);
|
||||
// Create the patern in list
|
||||
m_listHighlightPass1.push_back(HighlightPattern(m_paintingProperties, passChild, level1++));
|
||||
}
|
||||
} else if (child->getValue() == "pass2") {
|
||||
// get sub Nodes ...
|
||||
@@ -96,7 +86,30 @@ void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _
|
||||
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" );
|
||||
continue;
|
||||
}
|
||||
parseRules(passChild, m_listHighlightPass2, level2++, true);
|
||||
// Create the patern in list
|
||||
m_listHighlightPass2.push_back(HighlightPattern(m_paintingProperties, passChild, level2++));
|
||||
}
|
||||
} else if (child->getValue() == "pass") {
|
||||
std::string attributeName = child->getAttribute("name");
|
||||
if (attributeName == "") {
|
||||
APPL_ERROR("Can not parse an element pass with no attribute name ... ligne=" << child->getPos());
|
||||
continue;
|
||||
}
|
||||
m_listHighlightNamed.insert(std::pair<std::string, std::vector<HighlightPattern>>(attributeName, std::vector<HighlightPattern>()));
|
||||
auto it = m_listHighlightNamed.find(attributeName);
|
||||
int32_t level3=0;
|
||||
// get sub Nodes ...
|
||||
for(size_t jjj=0; jjj< child->size(); jjj++) {
|
||||
exml::Element* passChild = child->getElement(jjj);
|
||||
if (passChild == nullptr) {
|
||||
continue;
|
||||
}
|
||||
if (passChild->getValue() != "rule") {
|
||||
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" );
|
||||
continue;
|
||||
}
|
||||
// add element in the list
|
||||
it->second.push_back(HighlightPattern(m_paintingProperties, passChild, level3++));
|
||||
}
|
||||
} else {
|
||||
APPL_ERROR("(l "<< child->getPos() << ") node not suported : \""<< child->getValue() << "\" must be [ext,pass1,pass2]" );
|
||||
@@ -113,13 +126,28 @@ appl::Highlight::~Highlight() {
|
||||
m_listExtentions.clear();
|
||||
}
|
||||
|
||||
bool appl::Highlight::hasExtention(const std::string& _ext) {
|
||||
bool appl::Highlight::isCompatible(const std::string& _name) {
|
||||
for (auto &it : m_listExtentions) {
|
||||
APPL_VERBOSE(" check : " << it << "=?=" << _ext);
|
||||
if ( it == "*." + _ext
|
||||
|| it == _ext) {
|
||||
return true;
|
||||
APPL_VERBOSE(" check : " << it << "=?=" << _name);
|
||||
std::regex expression;
|
||||
try {
|
||||
expression.assign(it, std::regex_constants::optimize | std::regex_constants::ECMAScript);
|
||||
} catch (std::regex_error e) {
|
||||
APPL_ERROR("can not parse regex : '" << e.what() << "' for : " << it);
|
||||
continue;
|
||||
}
|
||||
std::smatch resultMatch;
|
||||
std::regex_search(_name.begin(), _name.end(), resultMatch, expression, std::regex_constants::match_continuous);
|
||||
if (resultMatch.size() <= 0) {
|
||||
continue;
|
||||
}
|
||||
if (resultMatch[0].first != _name.begin()) {
|
||||
continue;
|
||||
}
|
||||
if (resultMatch[0].second != _name.end()) {
|
||||
continue;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -151,13 +179,20 @@ void appl::Highlight::display() {
|
||||
}
|
||||
// display all elements
|
||||
for (auto &it : m_listHighlightPass1) {
|
||||
APPL_INFO(" Pass 1 : " << it->getName() );
|
||||
//m_listHighlightPass1[iii]->display();
|
||||
APPL_INFO(" Pass 1 : " << it.getName() );
|
||||
//it.display();
|
||||
}
|
||||
// display all elements
|
||||
for (auto &it : m_listHighlightPass2) {
|
||||
APPL_INFO(" pass 2 : " << it->getName() );
|
||||
//m_listHighlightPass2[iii]->display();
|
||||
APPL_INFO(" pass 2 : " << it.getName() );
|
||||
//it.display();
|
||||
}
|
||||
for (auto &it : m_listHighlightNamed) {
|
||||
APPL_INFO(" pass * : " << it.first << " : ");
|
||||
for (auto &it2 : it.second) {
|
||||
APPL_INFO(" " << it2.getName() );
|
||||
//it.display();
|
||||
}
|
||||
//it.display();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +203,7 @@ void appl::Highlight::parse(int64_t _start,
|
||||
int64_t _stop,
|
||||
std::vector<appl::HighlightInfo> & _metaData,
|
||||
int64_t _addingPos,
|
||||
etk::Buffer & _buffer) {
|
||||
std::string& _buffer) {
|
||||
if (0 > _addingPos) {
|
||||
_addingPos = 0;
|
||||
}
|
||||
@@ -176,16 +211,26 @@ void appl::Highlight::parse(int64_t _start,
|
||||
int64_t elementStart = _start;
|
||||
int64_t elementStop = _stop;
|
||||
appl::HighlightInfo resultat;
|
||||
int64_t startTime = ewol::getTime();
|
||||
while (elementStart <= elementStop) {
|
||||
HL_DEBUG("Parse element in the buffer pos=" << elementStart);
|
||||
//HL_DEBUG("Parse element in the buffer pos=" << elementStart);
|
||||
int64_t currentTime = ewol::getTime();
|
||||
//try to fond the HL in ALL of we have
|
||||
for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass1.size(); jjj++){
|
||||
enum resultFind ret = HLP_FIND_OK;
|
||||
HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='" << _buffer[elementStart] << "' " << m_listHighlightPass1[jjj]->getPaternString());
|
||||
/*
|
||||
if (_buffer[elementStart] == '\n') {
|
||||
HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='\\n' " << m_listHighlightPass1[jjj].getPaternString());
|
||||
} else {
|
||||
HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='" << _buffer[elementStart] << "' " << m_listHighlightPass1[jjj].getPaternString());
|
||||
}
|
||||
*/
|
||||
// Stop the search to the end (to get the end of the pattern)
|
||||
ret = m_listHighlightPass1[jjj]->find(elementStart, _buffer.size(), resultat, _buffer);
|
||||
ret = m_listHighlightPass1[jjj].find(elementStart, _buffer.size(), resultat, _buffer);
|
||||
if (HLP_FIND_ERROR != ret) {
|
||||
HL_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" );
|
||||
int64_t currentTimeEnd = ewol::getTime();
|
||||
int64_t deltaTime = currentTimeEnd - currentTime;
|
||||
HL_DEBUG("Find Pattern in the Buffer : time=" << (float)deltaTime/1000.0f << " ms (" << resultat.start << "," << resultat.stop << ") startPos=" << elementStart << " for=" << m_listHighlightPass1[jjj].getPaternString());
|
||||
// remove element in the current List where the current Element have a end inside the next...
|
||||
int64_t kkk=_addingPos;
|
||||
while(kkk < (int64_t)_metaData.size() ) {
|
||||
@@ -195,7 +240,7 @@ void appl::Highlight::parse(int64_t _start,
|
||||
_metaData.erase(_metaData.begin()+kkk, _metaData.begin()+kkk+1);
|
||||
// Increase the end of search
|
||||
if (kkk < (int64_t)_metaData.size()) {
|
||||
// just befor the end of the next element
|
||||
// just before the end of the next element
|
||||
elementStop = _metaData[kkk].start-1;
|
||||
} else {
|
||||
// end of the buffer
|
||||
@@ -220,17 +265,25 @@ void appl::Highlight::parse(int64_t _start,
|
||||
// Go to the next element (and search again ...).
|
||||
elementStart++;
|
||||
}
|
||||
int64_t stopTime = ewol::getTime();
|
||||
int64_t deltaTimeGlobal = stopTime - startTime;
|
||||
APPL_DEBUG("parse in time=" << (float)deltaTimeGlobal/1000.0f << " ms ");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief second pass of the hightlight
|
||||
*
|
||||
* @param[in] _start Start searching data
|
||||
* @param[in] _stop End searching data
|
||||
* @param[out] _metaData Output list of all find patern
|
||||
* @param[in] _buffer buffer where we need to search data
|
||||
*/
|
||||
void appl::Highlight::parse2(int64_t _start,
|
||||
int64_t _stop,
|
||||
std::vector<appl::HighlightInfo> &_metaData,
|
||||
etk::Buffer &_buffer) {
|
||||
std::string&_buffer) {
|
||||
HL2_DEBUG("Parse element 0 => " << m_listHighlightPass2.size() <<
|
||||
" == > position search: (" << _start << "," << _stop << ")" );
|
||||
int64_t elementStart = _start;
|
||||
@@ -244,18 +297,15 @@ void appl::Highlight::parse2(int64_t _start,
|
||||
//HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" );
|
||||
//try to fond the HL in ALL of we have
|
||||
for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass2.size(); jjj++){
|
||||
enum resultFind ret = HLP_FIND_OK;
|
||||
enum resultFind ret;
|
||||
HL2_DEBUG("Parse HL id=" << jjj << " position search: (" <<
|
||||
elementStart << "," << elementStop << ") in='"
|
||||
<< _buffer[elementStart] << "' " << m_listHighlightPass2[jjj]->getPaternString());
|
||||
elementStart << "," << elementStop << ") in='"
|
||||
<< _buffer[elementStart] << "' " << m_listHighlightPass2[jjj].getPaternString());
|
||||
// Stop the search to the end (to get the end of the pattern)
|
||||
ret = m_listHighlightPass2[jjj]->find(elementStart, elementStop, resultat, _buffer);
|
||||
ret = m_listHighlightPass2[jjj].find(elementStart, elementStop, resultat, _buffer);
|
||||
if (ret != HLP_FIND_ERROR) {
|
||||
HL2_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" );
|
||||
// add curent element in the list ...
|
||||
_metaData.push_back(resultat);
|
||||
elementStart = resultat.stop-1;
|
||||
// Exit current cycle
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -263,3 +313,46 @@ void appl::Highlight::parse2(int64_t _start,
|
||||
elementStart++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief second pass of the hightlight pattern (have found something before)
|
||||
* @param[in] _upper upper pattern to find the data
|
||||
* @param[out] _metaData Output list of all find patern
|
||||
* @param[in] _buffer buffer where we need to search data
|
||||
*/
|
||||
void appl::Highlight::parseSubElement(const appl::HighlightInfo& _upper,
|
||||
std::vector<appl::HighlightInfo> &_metaData,
|
||||
std::string &_buffer) {
|
||||
if (_upper.patern->getSubPatternName().size() == 0) {
|
||||
return;
|
||||
}
|
||||
HL2_DEBUG("Parse element 0 => " << m_listHighlightNamed.size() <<
|
||||
" == > position search: (" << _upper.start << "," << _upper.stop << ")" );
|
||||
int64_t elementStart = _upper.start;
|
||||
int64_t elementStop = _upper.stop;
|
||||
appl::HighlightInfo resultat;
|
||||
// Find element in the list:
|
||||
auto itHL = m_listHighlightNamed.find(_upper.patern->getSubPatternName());
|
||||
if (itHL == m_listHighlightNamed.end()) {
|
||||
APPL_ERROR("Patern does not exist : " << _upper.patern->getSubPatternName() << " note : Removing it ...");
|
||||
_upper.patern->setSubPatternName("");
|
||||
return;
|
||||
}
|
||||
|
||||
while (elementStart < elementStop) {
|
||||
//try to fond the HL in ALL of we have
|
||||
for (auto &it : itHL->second){
|
||||
enum resultFind ret;
|
||||
HL2_DEBUG("Parse HL position search: (" << elementStart << "," << elementStop << ") in='" << _buffer[elementStart] << "' " << it.getPaternString());
|
||||
// Stop the search to the end (to get the end of the pattern)
|
||||
ret = it.find(elementStart, elementStop, resultat, _buffer);
|
||||
if (ret != HLP_FIND_ERROR) {
|
||||
_metaData.push_back(resultat);
|
||||
elementStart = resultat.stop-1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Go to the next element (and search again ...).
|
||||
elementStart++;
|
||||
}
|
||||
}
|
@@ -19,7 +19,7 @@ namespace appl {
|
||||
int32_t start;
|
||||
int32_t stop;
|
||||
bool notEnded;
|
||||
appl::HighlightPattern* patern; // pointer on class :
|
||||
appl::HighlightPattern* patern;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -44,31 +44,35 @@ namespace appl {
|
||||
private:
|
||||
std::string m_typeName; //!< descriptive string type like "C/C++"
|
||||
public:
|
||||
/**
|
||||
* @brief Get the Type of the Hightlight like c++/Bash/...
|
||||
* @return descriptive string
|
||||
*/
|
||||
const std::string& getTypeName() {
|
||||
return m_typeName;
|
||||
}
|
||||
public:
|
||||
bool hasExtention(const std::string& _ext);
|
||||
bool isCompatible(const std::string& _name);
|
||||
bool fileNameCompatible(const std::string& _fileName);
|
||||
void display();
|
||||
void parse(int64_t _start,
|
||||
int64_t _stop,
|
||||
std::vector<appl::HighlightInfo> &_metaData,
|
||||
std::vector<appl::HighlightInfo>& _metaData,
|
||||
int64_t _addingPos,
|
||||
etk::Buffer &_buffer);
|
||||
std::string& _buffer);
|
||||
void parse2(int64_t _start,
|
||||
int64_t _stop,
|
||||
std::vector<appl::HighlightInfo> &_metaData,
|
||||
etk::Buffer &_buffer);
|
||||
std::vector<appl::HighlightInfo>& _metaData,
|
||||
std::string& _buffer);
|
||||
void parseSubElement(const appl::HighlightInfo& _upper,
|
||||
std::vector<appl::HighlightInfo>& _metaData,
|
||||
std::string &_buffer);
|
||||
private:
|
||||
void parseRules(exml::Element* _child,
|
||||
std::vector<std::unique_ptr<HighlightPattern>> &_mListPatern,
|
||||
int32_t _level,
|
||||
bool forceMaximize=false);
|
||||
std::string m_styleName; //!< curent style name (like "c++" or "c" or "script Bash")
|
||||
std::vector<std::string> m_listExtentions; //!< List of possible extention for this high-light, like : ".c", ".cpp", ".h"
|
||||
std::vector<std::unique_ptr<HighlightPattern>> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer)
|
||||
std::vector<std::unique_ptr<HighlightPattern>> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) )
|
||||
std::vector<HighlightPattern> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer)
|
||||
std::vector<HighlightPattern> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) )
|
||||
std::map<std::string, std::vector<HighlightPattern>> m_listHighlightNamed; //!< list of all sub partern to parse...
|
||||
public: // herited function :
|
||||
virtual void updateContext() {
|
||||
// no upfate to do ...
|
||||
|
@@ -70,19 +70,19 @@ void appl::highlightManager::unInit() {
|
||||
hlList.clear();
|
||||
}
|
||||
|
||||
std::string appl::highlightManager::getTypeExtention(const std::string& _extention) {
|
||||
if (_extention.size() == 0) {
|
||||
std::string appl::highlightManager::getTypeFile(const std::string& _fileName) {
|
||||
if (_fileName.size() == 0) {
|
||||
return "";
|
||||
}
|
||||
APPL_DEBUG("Try to find type for extention : '" << _extention << "' in " << s_list().size() << " types");
|
||||
APPL_DEBUG("Try to find type for extention : '" << _fileName << "' in " << s_list().size() << " types");
|
||||
std::vector<std::shared_ptr<Highlight>>& hlList = s_list();
|
||||
for (auto &it : hlList) {
|
||||
if (it == nullptr) {
|
||||
continue;
|
||||
}
|
||||
APPL_DEBUG(" check : " << it->getTypeName());
|
||||
if (it->hasExtention(_extention) == true) {
|
||||
APPL_DEBUG("Find type for extention : " << _extention
|
||||
if (it->isCompatible(_fileName) == true) {
|
||||
APPL_DEBUG("Find type for extention : " << _fileName
|
||||
<< " type : " << it->getTypeName());
|
||||
return it->getTypeName();
|
||||
}
|
||||
|
@@ -27,10 +27,10 @@ namespace appl {
|
||||
void unInit();
|
||||
/**
|
||||
* @brief Un-Init the Highlight manager
|
||||
* @param[in] extention of the file
|
||||
* @param[in] _fileName name of the file
|
||||
* @return type of highlight
|
||||
*/
|
||||
std::string getTypeExtention(const std::string& _extention);
|
||||
std::string getTypeFile(const std::string& _fileName);
|
||||
/**
|
||||
* @brief Get filename with type.
|
||||
* @param[in] _type Type name of the highlight.
|
||||
|
@@ -13,31 +13,49 @@
|
||||
#undef __class__
|
||||
#define __class__ "HighlightPattern"
|
||||
|
||||
appl::HighlightPattern::HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting) :
|
||||
appl::HighlightPattern::HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting, exml::Element* _child, int32_t _level) :
|
||||
m_glyphPainting(_glyphPainting),
|
||||
m_paternName(""),
|
||||
m_regExp(nullptr),
|
||||
m_hasParsingError(true),
|
||||
m_regexValue(""),
|
||||
m_regExp(),
|
||||
m_colorName(""),
|
||||
m_level(0) {
|
||||
m_regExp = std::unique_ptr<etk::RegExp<etk::Buffer>>(new etk::RegExp<etk::Buffer>());
|
||||
parseRules(_child, _level);
|
||||
}
|
||||
|
||||
appl::HighlightPattern::HighlightPattern() :
|
||||
m_glyphPainting(),
|
||||
m_paternName(""),
|
||||
m_hasParsingError(true),
|
||||
m_regexValue(""),
|
||||
m_regExp(),
|
||||
m_colorName(""),
|
||||
m_level(0) {
|
||||
|
||||
}
|
||||
|
||||
appl::HighlightPattern::~HighlightPattern() {
|
||||
|
||||
}
|
||||
|
||||
void appl::HighlightPattern::setPatern(std::string& _regExp, bool forceMaximize) {
|
||||
if (m_regExp == nullptr) {
|
||||
return;
|
||||
void appl::HighlightPattern::setPatern(const std::string& _regExp) {
|
||||
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 regex : '" << e.what() << "' for : " << _regExp);
|
||||
}
|
||||
m_regExp->compile(_regExp);
|
||||
m_regExp->setMaximize(forceMaximize);
|
||||
}
|
||||
std::string appl::HighlightPattern::getPaternString() {
|
||||
return m_regExp->getRegExDecorated();
|
||||
return m_regexValue;
|
||||
}
|
||||
|
||||
void appl::HighlightPattern::setColorGlyph(std::string& _colorName) {
|
||||
void appl::HighlightPattern::setColorGlyph(const std::string& _colorName) {
|
||||
m_colorName = _colorName;
|
||||
m_colorId = m_glyphPainting->request(m_colorName);
|
||||
APPL_VERBOSE("Resuest color name '" << m_colorName << "' => id=" << m_colorId);
|
||||
@@ -46,20 +64,21 @@ void appl::HighlightPattern::setColorGlyph(std::string& _colorName) {
|
||||
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_regExp.getRegExp() << "'");
|
||||
APPL_INFO(" == > regex '" << m_regexValue << "'");
|
||||
}
|
||||
|
||||
void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level, bool forceMaximize) {
|
||||
void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) {
|
||||
//--------------------------------------------------------------------------------------------
|
||||
/*
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
<regex>#</regex>
|
||||
<max>false</max>
|
||||
<sub>namexxx</sub>
|
||||
</rule>
|
||||
*/
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// process attribute
|
||||
// process attribute
|
||||
std::string highLightName = _child->getAttribute("name");
|
||||
std::string myEdnDataTmp = "???";
|
||||
if (highLightName.size()!=0) {
|
||||
@@ -73,42 +92,79 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level, b
|
||||
std::string myData = xChild->getText();
|
||||
if (myData.size() != 0) {
|
||||
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData);
|
||||
std::string myEdnData = myData;
|
||||
setColorGlyph(myEdnData);
|
||||
setColorGlyph(myData);
|
||||
}
|
||||
}
|
||||
xChild = _child->getNamed("max");
|
||||
if (nullptr != xChild) {
|
||||
forceMaximize = etk::string_to_bool(xChild->getText());
|
||||
}
|
||||
xChild = _child->getNamed("regex");
|
||||
if (nullptr != xChild) {
|
||||
std::string myData = xChild->getText();
|
||||
if (myData.size() != 0) {
|
||||
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData);
|
||||
std::string myEdnData = myData;
|
||||
setPatern(myEdnData, forceMaximize);
|
||||
setPatern(myData);
|
||||
}
|
||||
}
|
||||
xChild = _child->getNamed("sub");
|
||||
if (nullptr != xChild) {
|
||||
std::string myData = xChild->getText();
|
||||
if (myData.size() != 0) {
|
||||
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData);
|
||||
setSubPatternName(myData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
enum resultFind appl::HighlightPattern::find(int32_t _start,
|
||||
int32_t _stop,
|
||||
appl::HighlightInfo& _resultat,
|
||||
etk::Buffer& _buffer) {
|
||||
int32_t _stop,
|
||||
appl::HighlightInfo& _resultat,
|
||||
const std::string& _buffer) {
|
||||
//APPL_DEBUG(" try to find the element");
|
||||
_resultat.start = -1;
|
||||
_resultat.stop = -1;
|
||||
_resultat.notEnded = false;
|
||||
_resultat.patern = this;
|
||||
if (m_hasParsingError == true) {
|
||||
return HLP_FIND_ERROR;
|
||||
}
|
||||
|
||||
// when we have only one element:
|
||||
if (true == m_regExp->processOneElement(_buffer, _start, _stop)) {
|
||||
_resultat.start = m_regExp->start();
|
||||
_resultat.stop = m_regExp->stop();
|
||||
std::smatch resultMatch;
|
||||
std::regex_constants::match_flag_type flags = std::regex_constants::match_continuous; // check only the match at the first character.
|
||||
|
||||
//APPL_DEBUG("find data at : start=" << _start << " stop=" << _stop << " regex='" << m_regexValue << "'");
|
||||
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);
|
||||
//APPL_DEBUG("find data at : start=" << _resultat.start << " stop=" << _resultat.stop << " data='" <<std::string(_buffer, _resultat.start, _resultat.stop-_resultat.start) << "'" );
|
||||
/*
|
||||
if (true){
|
||||
//TK_DEBUG("in line : '" << etk::to_string(_buffer) << "'");
|
||||
TK_DEBUG(" Find " << resultMatch.size() << " elements");
|
||||
for (size_t iii=0; iii<resultMatch.size(); ++iii) {
|
||||
int32_t posStart = std::distance(_buffer.begin(), resultMatch[iii].first);
|
||||
int32_t posStop = std::distance(_buffer.begin(), resultMatch[iii].second);
|
||||
TK_DEBUG(" [" << iii << "] " << posStart << " to " << posStop);
|
||||
}
|
||||
}
|
||||
*/
|
||||
return HLP_FIND_OK;
|
||||
}
|
||||
//APPL_DEBUG("NOT find hightlightpatern ...");
|
||||
return HLP_FIND_ERROR;
|
||||
}
|
||||
|
@@ -14,9 +14,9 @@
|
||||
class HighlightPattern;
|
||||
|
||||
|
||||
#include <etk/RegExp.h>
|
||||
#include <appl/GlyphPainting.h>
|
||||
#include <vector>
|
||||
#include <regex>
|
||||
#include <exml/exml.h>
|
||||
#include <etk/Buffer.h>
|
||||
|
||||
@@ -32,27 +32,39 @@ namespace appl {
|
||||
std::shared_ptr<appl::GlyphPainting> m_glyphPainting;
|
||||
public:
|
||||
// Constructeur
|
||||
HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting);
|
||||
HighlightPattern();
|
||||
HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting, exml::Element* _child, int32_t _level);
|
||||
virtual ~HighlightPattern();
|
||||
private:
|
||||
std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash")
|
||||
public:
|
||||
void setName(std::string& _name) {
|
||||
void setName(const std::string& _name) {
|
||||
m_paternName = _name;
|
||||
};
|
||||
std::string getName() {
|
||||
const std::string& getName() {
|
||||
return m_paternName;
|
||||
};
|
||||
private:
|
||||
std::unique_ptr<etk::RegExp<etk::Buffer>> m_regExp; //!< Start of Regular expression
|
||||
std::string m_paternSubName; //!< Sub patern name if needed
|
||||
public:
|
||||
void setPatern(std::string& _regExp, bool forceMaximize=false);
|
||||
void setSubPatternName(const std::string& _name) {
|
||||
m_paternSubName = _name;
|
||||
};
|
||||
const std::string& getSubPatternName() {
|
||||
return m_paternSubName;
|
||||
};
|
||||
private:
|
||||
bool m_hasParsingError;
|
||||
std::string m_regexValue;
|
||||
std::regex m_regExp; //!< Start of Regular expression
|
||||
public:
|
||||
void setPatern(const std::string& _regExp);
|
||||
std::string getPaternString();
|
||||
private:
|
||||
std::string m_colorName; //!< Current color name
|
||||
int32_t m_colorId; //!< Id of the the glyph painting
|
||||
public:
|
||||
void setColorGlyph(std::string& _colorName);
|
||||
void setColorGlyph(const std::string& _colorName);
|
||||
const appl::GlyphDecoration& getColorGlyph() {
|
||||
return (*m_glyphPainting)[m_colorId];
|
||||
};
|
||||
@@ -82,9 +94,9 @@ namespace appl {
|
||||
enum resultFind find(int32_t _start,
|
||||
int32_t _stop,
|
||||
appl::HighlightInfo& _resultat,
|
||||
etk::Buffer& _buffer);
|
||||
const std::string& _buffer);
|
||||
|
||||
void parseRules(exml::Element* _child, int32_t _level, bool forceMaximize=false);
|
||||
void parseRules(exml::Element* _child, int32_t _level);
|
||||
};
|
||||
};
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
1.2.2
|
||||
1.2.3
|
@@ -1 +1 @@
|
||||
6
|
||||
7
|
Reference in New Issue
Block a user