Package net.java.textilej.parser.tag.confluence

Source Code of net.java.textilej.parser.tag.confluence.ConfluenceBlockTagProcessor

package net.java.textilej.parser.tag.confluence;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.java.textilej.parser.tag.BlockTagProcessor;

public abstract class ConfluenceBlockTagProcessor extends BlockTagProcessor {

  protected ConfluenceBlockTag tag;
  protected boolean blockOpened;
  private Pattern endTagPattern;
 
  public void setOptions(String options) {
    String[] opts = options.split("\\s*\\|\\s*");
    for (String optionPair: opts) {
      String[] keyValue = optionPair.split("\\s*=\\s*");
      if (keyValue.length == 2) {
        String key = keyValue[0].trim();
        String value = keyValue[1].trim();
        setOption(key,value);
      }
    }
  }

  protected abstract void setOption(String key, String value);
 
  @Override
  public void process(String text, int offset) {
    if (!blockOpened) {
      openBlock();
      blockOpened = true;
    }
    if (closeBlock(text,offset)) {
      return;
    }
    processContent(text,offset);
    setLineOffset(text.length());
  }

  protected boolean closeBlock(String text,int offset) {
    Matcher matcher = endTagPattern.matcher(text);
    if (offset > 0) {
      matcher.region(offset, text.length());
    }
    if (matcher.matches()) {
      int afterEndOffset = matcher.end(1);
      setLineOffset(afterEndOffset);
      setBlockClosed(true);
      return true;
    }
    return false;
  }


  protected abstract void openBlock();

  protected abstract void processContent(String text, int offset);

  void setEndTagPattern(Pattern endTagPattern) {
    this.endTagPattern = endTagPattern;
  }

  void setTag(ConfluenceBlockTag tag) {
    this.tag = tag;
  }

}
TOP

Related Classes of net.java.textilej.parser.tag.confluence.ConfluenceBlockTagProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.