📄 templateanalyzer.java
字号:
package com.ct.hotweb.util;
import java.io.*;
import java.util.regex.*;
import java.util.*;
/**
* 分析给定的模板
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class TemplateAnalyzer {
protected BufferedReader template;
private ArrayList blockNames = new ArrayList();
private ArrayList blocks = new ArrayList();
private Pattern pattern = Pattern.compile(ConstParameter.BLOCK_REG_STR);
private boolean analyzered = false;
public TemplateAnalyzer(BufferedReader template) {
this.template = template;
}
public boolean isAnalyzered() {
return this.analyzered;
}
public void analyzer() throws Exception {
if (analyzered) return;
String line, blockStr = "", blockName = "";
BlockAnalyzer ba = null;
int i = 0;
while((line = template.readLine())!= null) {
if (line.indexOf(ConstParameter.BLOCK_LEFT) < 0) {
blockStr += line + "\n";
} else {
if (pattern.matcher(line).matches()) {
if (0 == i) {
//the first
i ++;
blockName = getBlockName(line);
continue;
} else {
//save block
BufferedReader br = new BufferedReader(new StringReader(blockStr));
ba = new BlockAnalyzer(br);
ba.prepareAnalyzer();
ba.anlyzer();
ba.afterAnlyzer();
blockNames.add(blockName);
blocks.add(ba);
blockStr = "";
blockName = getBlockName(line);
i ++;
continue;
}
} else {
blockStr += line + "\n";
}
}
}
if (blockStr.trim().length() > 0) {
BufferedReader br = new BufferedReader(new StringReader(blockStr));
ba = new BlockAnalyzer(br);
ba.prepareAnalyzer();
ba.anlyzer();
ba.afterAnlyzer();
blockNames.add(blockName);
blocks.add(ba);
}
this.analyzered = true;
}
String getBlockName(String line) {
int posStart, posEnd;
posStart = line.indexOf(ConstParameter.BLOCK_NAME_EQUAL_FLAGE)
+ ConstParameter.BLOCK_NAME_EQUAL_FLAGE.length();
posEnd = line.indexOf(ConstParameter.BLOCK_RIGHT);
return line.substring(posStart, posEnd).trim();
}
public ArrayList getBlockNames() {
return blockNames;
}
public ArrayList getBlocks() {
return blocks;
}
public BlockAnalyzer getBlock(int index) {
return (BlockAnalyzer)(blocks.get(index));
}
public static void main(String[] args) {
try {
TemplateAnalyzer ta = new TemplateAnalyzer(new BufferedReader(new FileReader("d:/hotweb/conf/itemplate.html")));
ta.analyzer();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -