📄 vcalparser.java
字号:
return sum;
}
private int parseTodoentity(int offset)
{
int ret = 0;
int sum = 0;
ret = parseString(offset, "BEGIN", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseString(offset, ":", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseString(offset, "VTODO", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.startRecord("VTODO");
ret = parseCrlf(offset);
if(-1 == ret)
return -1;
offset += ret;
for(sum += ret; -1 != (ret = parseCrlf(offset)); sum += ret)
offset += ret;
ret = parseEntprops(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
for(sum += ret; -1 != (ret = parseCrlf(offset)); sum += ret)
offset += ret;
ret = parseString(offset, "END", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseString(offset, ":", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseString(offset, "VTODO", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.endRecord();
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseCrlf(offset);
if(-1 == ret)
return -1;
offset += ret;
for(sum += ret; -1 != (ret = parseCrlf(offset)); sum += ret)
offset += ret;
return sum;
}
private int parseEntprops(int offset)
{
int ret = 0;
int sum = 0;
if(mBuilder != null)
mBuilder.startProperty();
ret = parseEntprop(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.endProperty();
do
{
while(-1 != (ret = parseCrlf(offset)))
{
offset += ret;
sum += ret;
}
if(mBuilder != null)
mBuilder.startProperty();
ret = parseEntprop(offset);
if(-1 == ret)
break;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.endProperty();
} while(true);
return sum;
}
private int parseEntprop(int offset)
{
int ret = 0;
ret = parseEntprop0(offset);
if(-1 != ret)
return ret;
ret = parseEntprop1(offset);
if(-1 != ret)
return ret;
else
return -1;
}
private int parseParams(int offset)
{
int ret = 0;
int sum = 0;
ret = parseString(offset, ";", true);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseParamlist(offset);
if(-1 == ret)
{
return -1;
} else
{
sum += ret;
return sum;
}
}
private int parseParamlist(int offset)
{
int ret = 0;
int sum = 0;
ret = parseParam(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
int offsetTemp = offset;
int sumTemp = sum;
do
{
ret = removeWs(offsetTemp);
offsetTemp += ret;
sumTemp += ret;
ret = parseString(offsetTemp, ";", false);
if(-1 == ret)
return sum;
offsetTemp += ret;
sumTemp += ret;
ret = removeWs(offsetTemp);
offsetTemp += ret;
sumTemp += ret;
ret = parseParam(offsetTemp);
if(-1 != ret)
{
offsetTemp += ret;
sumTemp += ret;
sum = sumTemp;
} else
{
return sum;
}
} while(true);
}
private int parseParam(int offset)
{
int ret = 0;
ret = parseParam0(offset);
if(-1 != ret)
return ret;
ret = parseParam1(offset);
if(-1 != ret)
return ret;
ret = parseParam2(offset);
if(-1 != ret)
return ret;
ret = parseParam3(offset);
if(-1 != ret)
return ret;
ret = parseParam4(offset);
if(-1 != ret)
return ret;
ret = parseParam5(offset);
if(-1 != ret)
return ret;
ret = parseParam6(offset);
if(-1 != ret)
return ret;
ret = parseParam7(offset);
if(-1 != ret)
return ret;
int start = offset;
ret = parseKnownType(offset);
if(-1 == ret)
return -1;
offset += ret;
if(mBuilder != null)
{
mBuilder.propertyParamType(null);
mBuilder.propertyParamValue(mBuffer.substring(start, offset));
}
return ret;
}
private int parseEntprop0(int offset)
{
int ret = 0;
int sum = 0;
int start = 0;
ret = removeWs(offset);
offset += ret;
sum += ret;
String propName = getWord(offset).toUpperCase();
if(!mEvtPropNameGroup1.contains(propName) && -1 == parseXWord(offset))
return -1;
ret = propName.length();
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.propertyName(propName);
ret = parseParams(offset);
if(-1 != ret)
{
offset += ret;
sum += ret;
}
ret = parseString(offset, ":", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
start = offset;
ret = parseValue(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
{
ArrayList v = new ArrayList();
v.add(exportEntpropValue(propName, mBuffer.substring(start, offset)));
mBuilder.propertyValues(v);
if(-1 == valueFilter(propName, v))
return -1;
}
ret = parseCrlf(offset);
if(-1 == ret)
{
return -1;
} else
{
sum += ret;
return sum;
}
}
private int parseEntprop1(int offset)
{
int ret = 0;
int sum = 0;
ret = removeWs(offset);
offset += ret;
sum += ret;
String propName = getWord(offset).toUpperCase();
if(!mEvtPropNameGroup2.contains(propName))
return -1;
ret = propName.length();
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.propertyName(propName);
ret = parseParams(offset);
if(-1 != ret)
{
offset += ret;
sum += ret;
}
ret = parseString(offset, ":", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
int start = offset;
ret = parseValue(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
{
int end = 0;
ArrayList v = new ArrayList();
Pattern p = Pattern.compile("([^;\\\\]*(\\\\[\\\\;:,])*[^;\\\\]*)(;?)");
Matcher m = p.matcher(mBuffer.substring(start, offset));
do
{
if(!m.find())
break;
String s = exportEntpropValue(propName, m.group(1));
v.add(s);
end = m.end();
if(offset != start + end)
continue;
String endValue = m.group(3);
if(";".equals(endValue))
v.add("");
break;
} while(true);
mBuilder.propertyValues(v);
if(-1 == valueFilter(propName, v))
return -1;
}
ret = parseCrlf(offset);
if(-1 == ret)
{
return -1;
} else
{
sum += ret;
return sum;
}
}
private int parseParam0(int offset)
{
int ret = 0;
int sum = 0;
int start = offset;
ret = parseString(offset, "TYPE", true);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.propertyParamType(mBuffer.substring(start, offset));
ret = removeWs(offset);
offset += ret;
sum += ret;
ret = parseString(offset, "=", false);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
ret = removeWs(offset);
offset += ret;
sum += ret;
start = offset;
ret = parsePtypeval(offset);
if(-1 == ret)
return -1;
offset += ret;
sum += ret;
if(mBuilder != null)
mBuilder.propertyParamValue(mBuffer.substring(start, offset));
return sum;
}
private int parseParam1(int offset)
{
int ret = 0;
int sum = 0;
int start = offset;
boolean flag = false;
ret = parseString(offset, "VALUE", true);
if(-1 != ret)
{
offset += ret;
sum += ret;
flag = true;
}
if(flag && mBuilder != null)
mBuilder.propertyParamType(mBuffer.substring(start, offset));
ret = removeWs(offset);
offset += ret;
sum += ret;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -