@Test public void testForCss() { assertThat(TypeOfText.forCssClass("k")).isEqualTo(TypeOfText.KEYWORD); assertThat(TypeOfText.KEYWORD_LIGHT.cssClass()).isEqualTo("h"); }
public static String toCssClass(HighlightingType type) { return toBatchType(type).cssClass(); } }
private static void processLine(File highlightingFile, int lineNumber, NewHighlighting highlighting, String line) { try { String[] split = line.split(":"); if (split.length == 3) { int startOffset = parseInt(split[0]); int endOffset = parseInt(split[1]); highlighting.highlight(startOffset, endOffset, TypeOfText.forCssClass(split[2])); } else if (split.length == 5) { int startLine = parseInt(split[0]); int startLineOffset = parseInt(split[1]); int endLine = parseInt(split[2]); int endLineOffset = parseInt(split[3]); highlighting.highlight(startLine, startLineOffset, endLine, endLineOffset, TypeOfText.forCssClass(split[4])); } else { throw new IllegalStateException("Illegal number of elements separated by ':'. " + "Must either be startOffset:endOffset:class (offset in whole file) or startLine:startLineOffset:endLine:endLineOffset:class"); } } catch (Exception e) { throw new IllegalStateException("Error processing line " + lineNumber + " of file " + highlightingFile.getAbsolutePath(), e); } }
@Override public Object get(Value value, Class clazz, CoderContext context) { int startPosition = value.getInt(); int endPosition = value.getInt(); TypeOfText type = TypeOfText.values()[value.getInt()]; return SyntaxHighlightingRule.create(startPosition, endPosition, type); } }
private static void saveHighlights(SensorContext sensorContext, SensorContextUtils.Highlight[] highlights, InputFile inputFile) { NewHighlighting highlighting = sensorContext.newHighlighting().onFile(inputFile); for (SensorContextUtils.Highlight highlight : highlights) { highlighting.highlight(highlight.startLine, highlight.startCol, highlight.endLine, highlight.endCol, TypeOfText.valueOf(highlight.textType.toUpperCase(Locale.ENGLISH))); } highlighting.save(); }
@Override public void put(Value value, Object object, CoderContext context) { SyntaxHighlightingRule rule = (SyntaxHighlightingRule) object; value.put(rule.getStartPosition()); value.put(rule.getEndPosition()); value.put(rule.getTextType().ordinal()); }
@Override public String toString() { return "" + startPosition + "," + endPosition + "," + textType.cssClass(); } }
@Test(expected = IllegalArgumentException.class) public void throwIfUnknowCss() { TypeOfText.forCssClass("w"); }
@Override public void writeItem(StringBuilder currentLineSb, long startLineOffset, long endLineOffset, SyntaxHighlightingRule item) { if (currentLineSb.length() > 0) { currentLineSb.append(SyntaxHighlightingData.RULE_SEPARATOR); } currentLineSb.append(startLineOffset) .append(SyntaxHighlightingData.FIELD_SEPARATOR) .append(endLineOffset) .append(SyntaxHighlightingData.FIELD_SEPARATOR) .append(item.getTextType().cssClass()); }
@Override public HighlightingBuilder highlight(int startOffset, int endOffset, String typeOfText) { TypeOfText type = org.sonar.api.batch.sensor.highlighting.TypeOfText.forCssClass(typeOfText); builder.registerHighlightingRule(startOffset, endOffset, type); return this; }
public static String toCssClass(HighlightingType type) { return toBatchType(type).cssClass(); } }
@Override public HighlightingBuilder highlight(int startOffset, int endOffset, String typeOfText) { TypeOfText type = org.sonar.api.batch.sensor.highlighting.TypeOfText.forCssClass(typeOfText); defaultHighlighting.highlight(startOffset, endOffset, type); return this; }
public static String toCssClass(HighlightingType type) { return toBatchType(type).cssClass(); } }
private void processLine(File highlightingFile, int lineNumber, NewHighlighting highlightingBuilder, String line) { try { Iterator<String> split = Splitter.on(":").split(line).iterator(); int startOffset = Integer.parseInt(split.next()); int endOffset = Integer.parseInt(split.next()); TypeOfText type = TypeOfText.forCssClass(split.next()); highlightingBuilder.highlight(startOffset, endOffset, type); } catch (Exception e) { throw new IllegalStateException("Error processing line " + lineNumber + " of file " + highlightingFile.getAbsolutePath(), e); } }
@Override public String writeString() { StringBuilder sb = new StringBuilder(); for (SyntaxHighlightingRule highlightingRule : syntaxHighlightingRuleSet) { if (sb.length() > 0) { sb.append(RULE_SEPARATOR); } sb.append(highlightingRule.getStartPosition()) .append(FIELD_SEPARATOR) .append(highlightingRule.getEndPosition()) .append(FIELD_SEPARATOR) .append(highlightingRule.getTextType().cssClass()); } return sb.toString(); }
private static void processLine(File highlightingFile, int lineNumber, NewHighlighting highlighting, String line) { try { String[] split = line.split(":"); if (split.length == 3) { int startOffset = parseInt(split[0]); int endOffset = parseInt(split[1]); highlighting.highlight(startOffset, endOffset, TypeOfText.forCssClass(split[2])); } else if (split.length == 5) { int startLine = parseInt(split[0]); int startLineOffset = parseInt(split[1]); int endLine = parseInt(split[2]); int endLineOffset = parseInt(split[3]); highlighting.highlight(startLine, startLineOffset, endLine, endLineOffset, TypeOfText.forCssClass(split[4])); } else { throw new IllegalStateException("Illegal number of elements separated by ':'. " + "Must either be startOffset:endOffset:class (offset in whole file) or startLine:startLineOffset:endLine:endLineOffset:class"); } } catch (Exception e) { throw new IllegalStateException("Error processing line " + lineNumber + " of file " + highlightingFile.getAbsolutePath(), e); } }
@Override public void appendWithoutTransforming(String htmlTag) { if (startOffset == -1) { Matcher startMatcher = START_TAG_PATTERN.matcher(htmlTag); if (startMatcher.matches()) { startOffset = currentOffset; cssClass = startMatcher.group(1); } else { LOG.warn("Expected to match highlighting start html tag but was: " + htmlTag); } } else { Matcher endMatcher = END_TAG_PATTERN.matcher(htmlTag); if (endMatcher.matches()) { highlighting.highlight(startOffset, currentOffset, TypeOfText.forCssClass(cssClass)); startOffset = -1; } else { LOG.warn("Expected to match highlighting end html tag but was: " + htmlTag); } } }