-
Notifications
You must be signed in to change notification settings - Fork 7
/
HtmlTextNode.cpp
124 lines (108 loc) · 3.01 KB
/
HtmlTextNode.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "stdafx.h"
#include "HtmlTextNode.h"
IMPLEMENT_CUSTOM_CLASS(HtmlTextNode, HtmlElement)
HtmlTextNode::HtmlTextNode()
{
}
HtmlTextNode::~HtmlTextNode()
{
}
bool HtmlTextNode::InitClass(const HandleContext&context)
{
if (HtmlElement::GetPrototype_s().IsNull())
{
HtmlElement::InitClass(context);
}
return InitClass_s(context, "HTMLText", HtmlElement::GetPrototype_s());
}
bool HtmlTextNode::OnGetProperty(GetPropertyArgs&args)
{
const char*name = args.GetName();
if (!PROPCMP(name, "data"))
{
args.SetRetValue(LocalValue(args.GetContext()).SetString(args.GetContext(), m_szText.c_str()));
return true;
}
else if (!PROPCMP(name, "length"))
{
args.SetRetValue(ValueBase().SetInt(m_szText.length()));
return true;
}
// else if (!PROPCMP(name, "nodeValue"))
// {
// args.SetRetValue(LocalValue(args.GetContext()).SetString(args.GetContext(), m_data.c_str()));
// }
return HtmlElement::OnGetProperty(args);
}
bool HtmlTextNode::OnSetProperty(SetPropertyArgs&args)
{
const char*name = args.GetName();
if (!PROPCMP(name, "data"))
{
m_szText = args.GetValue().GetString(args.GetContext());
return true;
}
else if (!PROPCMP(name, "length"))
{
return true;
}
// if (!PROPCMP(name, "nodeValue"))
// {
// m_szText = args.GetValue().GetString(args.GetContext());
// return true;
// }
return HtmlElement::OnSetProperty(args);
}
bool HtmlTextNode::appendData(IFunctionCallbackArgs&args)
{
CHECK_ARGS_COUNT(1, "HtmlTextNode::appendData");
std::string &&str = args[0].GetString(args.getContext());
m_szText += str;
return true;
}
bool HtmlTextNode::deleteData(IFunctionCallbackArgs&args)
{
CHECK_ARGS_COUNT(2, "HtmlTextNode::deleteData");
int start = args[0].GetInt();
int length = args[1].GetInt();
m_szText = m_szText.substr(0, start) + m_szText.substr(start + length);
return true;
}
bool HtmlTextNode::insertData(IFunctionCallbackArgs&args)
{
CHECK_ARGS_COUNT(2, " HtmlTextNode::insertData");
int start = args[0].GetInt();
std::string &&str = args[1].GetString(args.getContext());
m_szText.insert(start, str);
return true;
}
bool HtmlTextNode::replaceData(IFunctionCallbackArgs&args)
{
CHECK_ARGS_COUNT(3, "HtmlTextNode::replaceData");
int start = args[0].GetInt();
int length = args[1].GetInt();
std::string &&str = args[2].GetString(args.getContext());
m_szText = m_szText.substr(0, start) + str + m_szText.substr(start + length);
return true;
}
bool HtmlTextNode::splitText(IFunctionCallbackArgs&args)
{
assert(0);
return true;
}
bool HtmlTextNode::substringData(IFunctionCallbackArgs&args)
{
CHECK_ARGS_COUNT(2, "HtmlTextNode::substringData");
int start = args[0].GetInt();
int length = args[1].GetInt();
std::string str = m_szText.substr(start, length);
args.setReturnValue(LocalValue(args.getContext()).SetString(args.getContext(), str.c_str()));
return true;
}
bool HtmlTextNode::OnConstructor(IFunctionCallbackArgs&args)
{
bool ret=HtmlElement::OnConstructor(args);
if (!ret)return false;
// args.thisObj().SetProperty(args.getContext(),"nodeType", ValueBase().SetInt(3));
return true;
}