⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 templateanalyzer.java

📁 实现了从Google
💻 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 + -