package com.sleekbyte.tailor.listeners.lengths; import com.sleekbyte.tailor.antlr.SwiftBaseListener; import com.sleekbyte.tailor.antlr.SwiftParser; import com.sleekbyte.tailor.common.ConstructLengths; import com.sleekbyte.tailor.common.Location; import com.sleekbyte.tailor.common.Rules; import com.sleekbyte.tailor.output.Printer; import com.sleekbyte.tailor.utils.ListenerUtil; import org.antlr.v4.runtime.ParserRuleContext; import java.util.Set; /** * Base class for length listeners. */ public abstract class LengthListener extends SwiftBaseListener { protected ConstructLengths constructLengths; protected Printer printer; protected Set<Rules> enabledRules; @Override public abstract void enterTopLevel(SwiftParser.TopLevelContext ctx); @Override public abstract void enterClassName(SwiftParser.ClassNameContext ctx); @Override public abstract void enterEnumName(SwiftParser.EnumNameContext ctx); @Override public abstract void enterStructName(SwiftParser.StructNameContext ctx); @Override public abstract void enterProtocolName(SwiftParser.ProtocolNameContext ctx); @Override public abstract void enterElementName(SwiftParser.ElementNameContext ctx); @Override public abstract void enterFunctionName(SwiftParser.FunctionNameContext ctx); @Override public abstract void enterLabelName(SwiftParser.LabelNameContext ctx); @Override public abstract void enterSetterName(SwiftParser.SetterNameContext ctx); @Override public abstract void enterTypeName(SwiftParser.TypeNameContext ctx); @Override public abstract void enterTypealiasName(SwiftParser.TypealiasNameContext ctx); @Override public abstract void enterVariableName(SwiftParser.VariableNameContext ctx); @Override public abstract void enterRawValueStyleEnumCase(SwiftParser.RawValueStyleEnumCaseContext ctx); @Override public abstract void enterUnionStyleEnumCase(SwiftParser.UnionStyleEnumCaseContext ctx); protected abstract void verifyNameLength(String constructType, int length, ParserRuleContext ctx); protected void createErrorMessage(Rules rule, int constructLength, ParserRuleContext ctx, String constructType, int length, String msg) { String lengthVersusLimit = " (" + constructLength + "/" + length + ")"; Location location = ListenerUtil.getContextStartLocation(ctx); printer.error(rule, constructType + msg + lengthVersusLimit, location); } }