package org.jbehave.eclipse.editor.story.scanner;
import org.eclipse.jface.text.rules.IToken;
import org.jbehave.eclipse.JBehaveProject;
import org.jbehave.eclipse.Keyword;
import org.jbehave.eclipse.editor.text.TextAttributeProvider;
import org.jbehave.eclipse.editor.text.style.TextStyle;
import org.jbehave.eclipse.parser.StoryElement;
public class ScenarioScanner extends StoryTokenScanner {
private IToken keywordToken;
public ScenarioScanner(JBehaveProject jbehaveProject,
TextAttributeProvider textAttributeProvider) {
super(jbehaveProject, textAttributeProvider);
initialize();
}
@Override
protected void initialize() {
super.initialize();
setDefaultToken(newToken(TextStyle.SCENARIO_DEFAULT));
keywordToken = newToken(TextStyle.SCENARIO_KEYWORD);
}
@Override
protected boolean isAccepted(StoryElement element) {
Keyword keyword = element.getPreferredKeyword();
if (keyword == Keyword.Scenario || keyword.isComment()) {
return true;
}
return false;
}
@Override
protected void emit(StoryElement element) {
String content = element.getContent();
String kwString = getLocalizedStepSupport().scenario(false);
int offset = element.getOffset();
if (content.startsWith(kwString)) {
emit(keywordToken, offset, kwString.length());
offset += kwString.length();
emitCommentAware(getDefaultToken(), offset,
content.substring(kwString.length()));
} else {
emitCommentAware(getDefaultToken(), offset, content);
}
}
}