All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xmlet.regex.visitor.RegexVisitor Maven / Gradle / Ivy

Go to download

A library that provides a fluent interface to write regular expressions.

The newest version!
package org.xmlet.regex.visitor;

import org.xmlet.regexapi.*;

public class RegexVisitor extends ElementVisitor {

    private StringBuilder stringBuilder = new StringBuilder();

    public void visitElement(Element var1) {

    }

    public void visitAttribute(String var1, String var2) {

    }

    public void visitParent(Element var1) {

    }

    public  void visitText(Text var1) {
        stringBuilder.append(var1.getValue());
    }

    public  void visitComment(Text var1) {

    }

    public String getRegex() {
        return stringBuilder.toString();
    }

    /* ************************* */
    /* Character Escape Elements */
    /* ************************* */

    public  void visitElementBell(Bell var1) {
        stringBuilder.append("\\a");
    }

    public  void visitElementBackspace(Backspace var1) {
        stringBuilder.append("\u0008");
    }

    public  void visitElementTab(Tab var1) {
        stringBuilder.append('\t');
    }

    public  void visitElementCarriageReturn(CarriageReturn var1) {
        stringBuilder.append("\\r");
    }

    public  void visitElementVerticalTab(VerticalTab var1) {
        stringBuilder.append("\\v");
    }

    public  void visitElementFormFeed(FormFeed var1) {
        stringBuilder.append("\\f");
    }

    public  void visitElementNewLine(NewLine var1) {
        stringBuilder.append("\\n");
    }

    public  void visitElementEscape(Escape var1) {
        stringBuilder.append("\\e");
    }

    public  void visitElementOctal(Octal var1) {
        stringBuilder.append('\\');
    }

    public  void visitElementHexadecimal(Hexadecimal var1) {
        stringBuilder.append("\\x");
    }

    public  void visitElementControlChar(ControlChar var1) {
        stringBuilder.append("\\c");
    }

    public  void visitElementUnicode(Unicode var1) {
        stringBuilder.append("\\u");
    }

    public  void visitElementOtherChar(OtherChar var1) {
        stringBuilder.append("\\");
    }

    /* *************************** */
    /* Character Escape Attributes */
    /* *************************** */

    public void visitAttributeOneChar(String oneChar) {
        stringBuilder.append(oneChar);
    }

    public void visitAttributeTwoDigits(String twoDigits) {
        stringBuilder.append(fillStringToNumberOfDigits(twoDigits, 2));
    }

    public void visitAttributeThreeDigits(String threeDigits) {
        stringBuilder.append(fillStringToNumberOfDigits(threeDigits, 3));
    }

    public void visitAttributeFourDigits(String fourDigits) {
        stringBuilder.append(fillStringToNumberOfDigits(fourDigits, 4));
    }

    /* ************************** */
    /* Character Classes Elements */
    /* ************************** */

    public  void visitElementCharacterGroup(CharacterGroup var1) {
        stringBuilder.append('[');
    }

    public  void visitElementCharacterNotGroup(CharacterNotGroup var1) {
        stringBuilder.append("[^");
    }

    public  void visitElementFromFirstUntilLast(FromFirstUntilLast var1) {
        stringBuilder.append('[');
    }

    public  void visitElementAnyChar(AnyChar var1) {
        stringBuilder.append('.');
    }

    public  void visitElementUnicodeBlock(UnicodeBlock var1) {
        stringBuilder.append("\\p{");
    }

    public  void visitElementUnicodeNotBlock(UnicodeNotBlock var1) {
        stringBuilder.append("\\P{");
    }

    public  void visitElementAnyLetterOrDigit(AnyLetterOrDigit var1) {
        stringBuilder.append("\\w");
    }

    public  void visitElementAnyNonLetterOrDigit(AnyNonLetterOrDigit var1) {
        stringBuilder.append("\\W");
    }

    public  void visitElementAnyWhiteSpace(AnyWhiteSpace var1) {
        stringBuilder.append("\\s");
    }

    public  void visitElementAnyNonWhiteSpace(AnyNonWhiteSpace var1) {
        stringBuilder.append("\\S");
    }

    public  void visitElementAnyDigit(AnyDigit var1) {
        stringBuilder.append("\\d");
    }

    public  void visitElementAnyNonDigit(AnyNonDigit var1) {
        stringBuilder.append("\\D");
    }

    /* **************************** */
    /* Character Classes Attributes */
    /* **************************** */

    public void visitAttributeCharGroup(String charGroup){
        stringBuilder.append(charGroup).append(']');
    }

    public void visitAttributeBlock(String block) {
        stringBuilder.append(block).append('}');
    }

    public void visitAttributeFirst(String first) {
        stringBuilder.append(first);
    }

    public void visitAttributeLast(String last) {
        stringBuilder.append('-').append(last).append(']');
    }

    /* **************************** */
    /*            Anchors           */
    /* **************************** */

    public  void visitElementAtBeginning(AtBeginning var1) {
        stringBuilder.append('^');
    }

    public  void visitElementAtEnd(AtEnd var1) {
        stringBuilder.append('$');
    }

    public  void visitElementAtStringBeginning(AtStringBeginning var1) {
        stringBuilder.append("\\A");
    }

    public  void visitElementAtStringEndOrNewline(AtStringEndOrNewline var1) {
        stringBuilder.append("\\Z");
    }

    public  void visitElementAtStringEnd(AtStringEnd var1) {
        stringBuilder.append("\\z");
    }

    public  void visitElementConsecutiveMatch(ConsecutiveMatch var1) {
        stringBuilder.append("\\G");
    }

    public  void visitElementBoundary(Boundary var1) {
        stringBuilder.append("\\b");
    }

    public  void visitElementNoBoundary(NoBoundary var1) {
        stringBuilder.append("\\B");
    }

    /* **************************** */
    /*     Grouping Constructs      */
    /* **************************** */

    public  void visitElementSubExpression(SubExpression expression) {
        stringBuilder.append('(');
    }

    public  void visitElementNamedSubExpression(NamedSubExpression var1) {
        stringBuilder.append("(?<");
    }

    public  void visitElementNonCapturingGroup(NonCapturingGroup expression) {
        stringBuilder.append("(?:");
    }

    public  void visitElementPositiveLookAhead(PositiveLookAhead expression) {
        stringBuilder.append("(?=");
    }

    public  void visitElementNegativeLookAhead(NegativeLookAhead expression) {
        stringBuilder.append("(?!");
    }

    public  void visitElementPositiveLookBehind(PositiveLookBehind expression) {
        stringBuilder.append("(?<=");
    }

    public  void visitElementNegativeLookBehind(NegativeLookBehind expression) {
        stringBuilder.append("(? void visitElementNonBackTracking(NonBackTracking expression) {
        stringBuilder.append("(?>");
    }

    /* ****************************** */
    /* Grouping Constructs Attributes */
    /* ****************************** */

    public void visitAttributeSubExpr(String expression) {
        stringBuilder.append(expression).append(')');
    }

    public void visitAttributeOptionsSubExpr(String expression) {
        stringBuilder.append(':').append(expression).append(')');
    }

    public  void visitElementExpression(Expression var1) {
        stringBuilder.append('>');
    }

    public  void visitParentExpression(Expression var1) {
        stringBuilder.append(')');
    }

    /* ****************************** */
    /*           Quantifiers          */
    /* ****************************** */

    public  void visitElementZeroOrMore(ZeroOrMore var1) {
        stringBuilder.append('*');
    }

    public  void visitElementOneOrMore(OneOrMore var1) {
        stringBuilder.append('+');
    }

    public  void visitElementZeroOrOne(ZeroOrOne var1) {
        stringBuilder.append('?');
    }

    public  void visitElementMatchPreviousNTimes(MatchPreviousNTimes var1) {
        stringBuilder.append('{');
    }

    public  void visitElementMatchPreviousAtLeast(MatchPreviousAtLeast var1) {
        stringBuilder.append('{');
    }

    public  void visitElementMatchPreviousBetween(MatchPreviousBetween var1) {
        stringBuilder.append('{');
    }

    public  void visitElementMinMatchZeroOrMore(MinMatchZeroOrMore var1) {
        stringBuilder.append("*?");
    }

    public  void visitElementMinMatchOneOrMore(MinMatchOneOrMore var1) {
        stringBuilder.append("+?");
    }

    public  void visitElementMinMatchZeroOrOne(MinMatchZeroOrOne var1) {
        stringBuilder.append("??");
    }

    public  void visitElementMinMatchPreviousNTimes(MinMatchPreviousNTimes var1) {
        stringBuilder.append('{');
    }

    public  void visitElementMinMatchPreviousAtLeast(MinMatchPreviousAtLeast var1) {
        stringBuilder.append('{');
    }

    public  void visitElementMinMatchPreviousBetween(MinMatchPreviousBetween var1) {
        stringBuilder.append('{');
    }

    /* ****************************** */
    /*     Quantifiers Attributes     */
    /* ****************************** */

    public void visitAttributeN(String n) {
        stringBuilder.append(n).append('}');
    }

    public void visitAttributeNTimes(String expression) {
        stringBuilder.append(expression).append(",}");
    }

    public  void visitParentN(N var1) {
        stringBuilder.append(',');
    }

    public  void visitParentM(M var1) {
        stringBuilder.append('}');
    }

    public void visitAttributeMinN(String expression) {
        stringBuilder.append(expression).append("}?");
    }

    public void visitAttributeMinNTimes(String expression) {
        stringBuilder.append(expression).append(",}?");
    }

    public  void visitParentMinM(MinM var1) {
        stringBuilder.append("}?");
    }

    /* ****************************** */
    /*    BackReference Constructs    */
    /* ****************************** */

    public  void visitElementBackReference(BackReference var1) {
        stringBuilder.append('\\');
    }

    public  void visitElementNamedBackReference(NamedBackReference var1) {
        stringBuilder.append("\\k<");
    }

    /* **************************************** */
    /*    BackReference Constructs Attributes   */
    /* **************************************** */

    public void visitAttributeName(String name) {
        stringBuilder.append(name).append('>');
    }

    public void visitAttributeNumber(String number) {
        stringBuilder.append(number);
    }

    /* *************************** */
    /*    Alternation Constructs   */
    /* *************************** */

    public  void visitElementAnd(And var1) {
        stringBuilder.append("&&");
    }

    public  void visitElementOr(Or var1) {
        stringBuilder.append('|');
    }

    public  void visitElementIfMatch(IfMatch var1) {
        stringBuilder.append("(?(?=");
    }

    public  void visitElementConditionalNamedExpression(ConditionalNamedExpression expression) {
        stringBuilder.append('(');
    }

    public  void visitParentConditionalNamedExpressionComplete(ConditionalNamedExpressionComplete expression) {
        stringBuilder.append(')');
    }

    public  void visitElementIfGroupMatch(IfGroupMatch var1) {
        stringBuilder.append("(?(");
    }

    public  void visitParentIfGroupMatchComplete(IfGroupMatchComplete var1) {
        stringBuilder.append(')');
    }

    /* ************************************* */
    /*    Alternation Constructs Attributes  */
    /* ************************************* */

    public  void visitElementThenExpression(ThenExpression then) {
        stringBuilder.append(')');
    }

    public  void visitElementElseExpression(ElseExpression var1) {
        stringBuilder.append('|');
    }

    public  void visitParentElseExpression(ElseExpression var1) {
        stringBuilder.append(')');
    }

    public  void visitElementCondNameFirst(CondNameFirst expression) {
        stringBuilder.append('{');
    }

    public  void visitParentCondNameFirst(CondNameFirst expression) {
        stringBuilder.append('}');
    }

    /* ****************** */
    /*    Substitutions   */
    /* ****************** */

    public  void visitElementNumberSubstitution(NumberSubstitution expression) {
        stringBuilder.append('$');
    }

    public  void visitElementNameSubstitution(NameSubstitution expression) {
        stringBuilder.append("${");
    }

    /* **************************** */
    /*    Substitutions Attributes  */
    /* **************************** */

    public void visitAttributeSubstitutionName(String expression) {
        stringBuilder.append(expression).append('}');
    }

    /* ******************** */
    /*    Options Elements  */
    /* ******************** */

    public  void visitElementCaseInsensitive(CaseInsensitive var1) {
        stringBuilder.append('i');
    }

    public  void visitElementMultilineMode(MultilineMode var1) {
        stringBuilder.append('m');
    }

    public  void visitElementNoUnnamedModes(NoUnnamedModes var1) {
        stringBuilder.append('n');
    }

    public  void visitElementSingleLineMode(SingleLineMode var1) {
        stringBuilder.append('s');
    }

    public  void visitElementIgnoreUnescapedWhiteSpaces(IgnoreUnescapedWhiteSpaces var1) {
        stringBuilder.append('x');
    }

    /* **************************** */
    /*    Miscellaneous Constructs  */
    /* **************************** */

    public  void visitElementActivateOption(ActivateOption var1) {
        stringBuilder.append("(?");
    }

    public  void visitElementRegexComment(RegexComment var1) {
        stringBuilder.append("(?#");
    }

    public  void visitParentRegexComment(RegexComment var1) {
        stringBuilder.append(')');
    }

    public  void visitElementRegexLineComment(RegexLineComment var1) {
        stringBuilder.append('#');
    }

    /* *************************************** */
    /*    Miscellaneous Constructs Attributes  */
    /* *************************************** */

    public void visitAttributeComment(String comment) {
        stringBuilder.append(comment);
    }

    public void visitAttributeOption(String option) {
        stringBuilder.append(option);
    }

    /* ******************** */
    /*    Auxiliary Methods  */
    /* ******************** */

    private String fillStringToNumberOfDigits(String string, int numberOfDigits) {
        while (string.length() != numberOfDigits){
            string = "0".concat(string);
        }

        return string;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy