view src/org/nwoca/ssdt/tools/html2wiki/TagTransformer.java @ 4:22ed6d93442c

Start modifying transformers to Confluence wiki syntax
author smith@nwoca.org
date Tue, 25 Jan 2011 21:59:31 -0500
parents f8b1ea49d065
children
line wrap: on
line source
package org.nwoca.ssdt.tools.html2wiki;

import java.util.regex.*;

class TagTransformer implements Transformer {

    private Pattern tagPattern;
    private String replacementBegin;
    private String replacementEnd;

    public TagTransformer(String regexp, String replacementBegin, String replacementEnd) {
        this(regexp, false, replacementBegin, replacementEnd);
    }

    public TagTransformer(String regexp, boolean multiline, String replacementBegin, String replacementEnd) {
        tagPattern = multiline
                ? Pattern.compile(regexp, Pattern.MULTILINE + Pattern.DOTALL)
                : Pattern.compile(regexp);

        this.replacementBegin = replacementBegin;
        this.replacementEnd = replacementEnd;

    }

    public TagTransformer(String regexp, String replacement) {
        this(regexp, replacement, replacement);
    }

    public void apply(StringBuffer buffer) {
        Matcher matcher = tagPattern.matcher(buffer);

        boolean first = true;
        while (matcher.find(first ? 0 : matcher.start())) {
            buffer.replace(matcher.start(), matcher.end(), replacementBegin + matcher.group(1) + replacementEnd);
            first = false;
        }

    }

    public String toString() {
        return "Replace: " + tagPattern.pattern() + " with " + replacementBegin + "..." + replacementEnd;
    }
}