package org.robotframework.ide.eclipse.main.plugin.tableeditor.source.colouring; import java.util.List; import java.util.Optional; import org.eclipse.jface.text.rules.IToken; import org.rf.ide.core.testdata.model.table.keywords.names.GherkinStyleSupport; import org.rf.ide.core.testdata.text.read.IRobotLineElement; public class GherkinPrefixRule extends ExecutableRowCallRule { public GherkinPrefixRule(final IToken textToken) { super(textToken); } @Override public Optional<PositionedTextToken> evaluate(final IRobotLineElement token, final int offsetInToken, final List<IRobotLineElement> analyzedTokens) { if (offsetInToken == 0 && shouldBeColored(token, analyzedTokens)) { final String textAfterPrefix = GherkinStyleSupport.getTextAfterGherkinPrefixesIfExists(token.getText()); final int prefixLength = token.getText().length() - textAfterPrefix.length(); if (prefixLength > 0) return Optional.of(new PositionedTextToken(textToken, token.getStartOffset(), prefixLength)); } return Optional.empty(); } }