mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
feat: ToAttrContent
This commit is contained in:
parent
00d7fb6fb0
commit
2a5e556538
@ -91,11 +91,13 @@ namespace WXML
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
std::string offset_0;
|
||||
int offset_16;
|
||||
int offset_20;
|
||||
std::string offset_0; // content
|
||||
int offset_16; // pos
|
||||
int offset_20; // size
|
||||
bool offset_28;
|
||||
std::string offset_32;
|
||||
bool offset_84;
|
||||
std::string offset_88;
|
||||
public:
|
||||
Token(/* args */);
|
||||
Token(WXML::DOMLib::Token&&);
|
||||
|
@ -7,12 +7,12 @@ namespace WXML
|
||||
{
|
||||
/*
|
||||
Token
|
||||
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
|
||||
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00
|
||||
00 00 00 00 00 F2 97 00 70 F0 97 00 00 00 00 00
|
||||
00(起点) B6 BF 00(文件内容) 80 CC BF 00 01 00 00 00(行数?) 01 00 00 00(行长度?) // 15
|
||||
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00(布尔值) F6 97 00 // 31
|
||||
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00 // 47
|
||||
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00 // 63
|
||||
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00 // 79
|
||||
00 00 00 00 00(?) F2 97 00 70 F0 97 00 00 00 00 00
|
||||
00 00 00 00 62 00 00 40 F8 F1 97 00 7A 15 46 00
|
||||
*/
|
||||
Token::Token(/* args */)
|
||||
@ -30,6 +30,7 @@ namespace WXML
|
||||
Token::~Token()
|
||||
{
|
||||
}
|
||||
|
||||
int Token::GetTemplateContent(std::string const& templateStr, std::string& result)
|
||||
{
|
||||
int v2 = 0;
|
||||
@ -74,10 +75,83 @@ namespace WXML
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
std::string Token::ToAttrContent()
|
||||
{
|
||||
return "";
|
||||
// 有缓存(offset_84),直接返回
|
||||
if( this->offset_0.size() == 0 || this->offset_84)
|
||||
return this->offset_88;
|
||||
char * v6 = &this->offset_0[0] + this->offset_16;
|
||||
int v8 = this->offset_20;
|
||||
int v7 = *v6 == '\''/*39*/ || *v6 == '"'/*34*/;
|
||||
if ( v8 > 0 )
|
||||
{
|
||||
char v1 = v6[v8 - 1];
|
||||
if ( v1 == '"'/*34*/ || v1 == '\''/*39*/ )
|
||||
--v8;
|
||||
}
|
||||
int v2 = 0;
|
||||
int v3 = 0;
|
||||
char Src[30];
|
||||
// 重写
|
||||
for (; v7 < v8; v7++)
|
||||
{
|
||||
char v4 = v6[v7];
|
||||
if ( v4 == '\\'/*92*/ )
|
||||
{
|
||||
if ( !v2 )
|
||||
{
|
||||
v2 = 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if ( v2 )
|
||||
{
|
||||
switch ( v4 )
|
||||
{
|
||||
case 'n':
|
||||
Src[v3] = 10;// \n "\\n" -> "\n"
|
||||
break;
|
||||
case 't':
|
||||
Src[v3] = 9; // \t "\\t" -> "\t"
|
||||
break;
|
||||
case 'r':
|
||||
Src[v3] = 13; // \r "\\r" -> "\r"
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Src[v3] = v4;
|
||||
}
|
||||
++v3;
|
||||
v2 = 0;
|
||||
Src[v3] = 0;
|
||||
if ( v3 == 30 ) // buffer
|
||||
{
|
||||
// v10[0] = v11;
|
||||
// std::string::_M_construct<char const*>(v10, Src, (size_t)&Size);
|
||||
// std::string::append((_DWORD *)(a1 + 88), (int)v10);
|
||||
// std::string::_M_dispose(v10);
|
||||
this->offset_88.append(Src, v3);
|
||||
Src[0] = 0;
|
||||
v2 = 0;
|
||||
v3 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( v3 )
|
||||
{
|
||||
// v10[0] = v11;
|
||||
// std::string::_M_construct<char const*>(v10, Src, (size_t)&Src[v3]);
|
||||
// std::string::append((_DWORD *)(a1 + 88), (int)v10);
|
||||
// std::string::_M_dispose(v10);
|
||||
this->offset_88.append(Src, v3);
|
||||
}
|
||||
this->offset_84 = true;
|
||||
return this->offset_88;
|
||||
}
|
||||
|
||||
bool Token::IsValidVariableName(std::string const& a1)
|
||||
{
|
||||
char v1 = a1[0];
|
||||
@ -119,6 +193,7 @@ namespace WXML
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string Token::ToString()
|
||||
{
|
||||
std::string v4 = this->offset_32;
|
||||
|
Loading…
x
Reference in New Issue
Block a user