mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
feat: GetTemplateContent
This commit is contained in:
parent
4f705a100d
commit
4b76c60f45
@ -91,13 +91,11 @@ namespace WXML
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
int offset_0;
|
||||
std::string offset_0;
|
||||
int offset_16;
|
||||
int offset_20;
|
||||
bool offset_28;
|
||||
std::string offset_32;
|
||||
std::string str2;
|
||||
std::string str3;
|
||||
public:
|
||||
Token(/* args */);
|
||||
Token(WXML::DOMLib::Token&&);
|
||||
@ -112,7 +110,11 @@ namespace WXML
|
||||
std::string ToAttrContent();
|
||||
bool IsValidVariableName(std::string const&);
|
||||
bool IsMatch(char const*);
|
||||
bool GetTemplateContent(std::string const&, std::string&);
|
||||
/**
|
||||
* 获取模板内容
|
||||
* {{ exp }}
|
||||
*/
|
||||
int GetTemplateContent(std::string const&, std::string&);
|
||||
};
|
||||
|
||||
class ParseException
|
||||
|
@ -7,7 +7,7 @@ namespace WXML
|
||||
{
|
||||
/*
|
||||
Token
|
||||
00(起点) B6 BF 00(文件内容) 80 CC BF 00 01 00 00 00 01 00 00 00
|
||||
00(起点) B6 BF 00(文件内容) 80 CC BF 00 01 00 00 00(行数?) 01 00 00 00(行长度?)
|
||||
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00(布尔值) F6 97 00
|
||||
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00
|
||||
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00
|
||||
@ -29,6 +29,50 @@ namespace WXML
|
||||
|
||||
Token::~Token()
|
||||
{
|
||||
}
|
||||
int Token::GetTemplateContent(std::string const& templateStr, std::string& result)
|
||||
{
|
||||
int v2 = 0;
|
||||
int v10 = templateStr.length();
|
||||
int v3 = v10 - 1;
|
||||
while (v2 < v10 && templateStr[v2] == ' ')
|
||||
{
|
||||
++v2;
|
||||
}
|
||||
while (v3 > 0 && templateStr[v3] == ' ')
|
||||
{
|
||||
--v3;
|
||||
}
|
||||
int v4 = v2 + 2;
|
||||
if (v2 + 2 >= v10)
|
||||
return -1;
|
||||
if (templateStr[v2] != '{')
|
||||
return -1;
|
||||
if (templateStr[v2 + 1] != '{' || v3 <= 1)
|
||||
return -1;
|
||||
// {{ exp }}
|
||||
if (templateStr[v3] == '}' && templateStr[v3 - 1] == '}')
|
||||
{
|
||||
int v7 = v3 - 2;
|
||||
do
|
||||
{
|
||||
if (templateStr[v4] != ' ')
|
||||
break;
|
||||
++v4;
|
||||
} while (v10 != v4);
|
||||
do
|
||||
{
|
||||
if (templateStr[v7] != ' ')
|
||||
break;
|
||||
} while (v7-- != 0);
|
||||
if (v4 < v7)
|
||||
{
|
||||
result = templateStr.substr(v4, v7 - v4 + 1);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
|
||||
}
|
||||
std::string Token::ToAttrContent()
|
||||
{
|
||||
@ -37,7 +81,7 @@ namespace WXML
|
||||
std::string Token::ToString()
|
||||
{
|
||||
std::string v4 = this->offset_32;
|
||||
if (!this->offset_28)
|
||||
if (this->offset_0.size() > 0 && !this->offset_28)
|
||||
{
|
||||
v4 = this->offset_32.substr(this->offset_16, this->offset_20);
|
||||
this->offset_28 = true;
|
||||
@ -48,7 +92,16 @@ namespace WXML
|
||||
bool Token::IsMatch(char const* str)
|
||||
{
|
||||
bool result = false;
|
||||
// this->offset_20
|
||||
if (this->offset_0.size() > 0)
|
||||
{
|
||||
auto v4 = this->offset_20;
|
||||
for (int i = 0; ; i++)
|
||||
{
|
||||
// if (v4 <= i)
|
||||
// return
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user