package com.qxueyou.scc.exercise.service.impl.parser;
|
|
import java.util.List;
|
|
import com.qxueyou.scc.exercise.service.impl.Node;
|
import com.qxueyou.scc.exercise.service.impl.ParseResult;
|
import com.qxueyou.scc.exercise.service.impl.Parser;
|
import com.qxueyou.scc.exercise.service.impl.node.Doc;
|
import com.qxueyou.scc.exercise.service.impl.node.ItemType;
|
|
/**
|
* Îĵµ½âÎöÆ÷
|
* @author µÂ»¢
|
*
|
*/
|
public class DocParser extends Parser {
|
|
@Override
|
public ParseResult parse(Node node, String str) {
|
return parse((Doc)node,str);
|
}
|
|
/**
|
* ½âÎö Doc
|
* @param doc
|
* @param str
|
* @return
|
*/
|
private ParseResult parse(Doc doc, String str) {
|
|
if(str.contains("µ¥Ñ¡")||str.contains("µ¥ÏîÑ¡Ôñ")){
|
return tryNextNodeParser(doc,ItemType.TYPE_SINGLE);
|
}
|
|
if(str.contains("¶àÑ¡")||str.contains("¶àÏîÑ¡Ôñ")){
|
return tryNextNodeParser(doc,ItemType.TYPE_MULTI);
|
}
|
|
if(str.contains("ÅжÏ")){
|
return tryNextNodeParser(doc,ItemType.TYPE_TRUE_OR_FALSE);
|
}
|
|
return new ParseResult(false,ParseResult.STEP_CUR,null);
|
}
|
|
private ParseResult tryNextNodeParser(Doc doc,String type) {
|
|
List<Node> children = doc.getChildren();
|
Node child = null;
|
|
if(children!=null && !children.isEmpty()){
|
child = doc.getChild("TYPE",type);
|
}
|
|
if(child==null){
|
child = new ItemType(type);
|
doc.addNode(child);
|
}
|
|
return new ParseResult(false,ParseResult.STEP_NEXT,child);
|
}
|
|
}
|