@NonNull public static Prism4j.Grammar require(@NonNull Prism4j prism4j, @NonNull String name) { final Prism4j.Grammar grammar = prism4j.grammar(name); if (grammar == null) { throw new IllegalStateException("Unexpected state, requested language is not found: " + name); } return grammar; }
@NonNull protected CharSequence highlight(@NonNull String language, @NonNull Prism4j.Grammar grammar, @NonNull String code) { final SpannableStringBuilder builder = new SpannableStringBuilder(); final Prism4jSyntaxVisitor visitor = new Prism4jSyntaxVisitor(language, theme, builder); visitor.visit(prism4j.tokenize(code, grammar)); return builder; }
@NonNull public List<Node> tokenize(@NonNull String text, @NonNull Grammar grammar) { final List<Node> entries = new ArrayList<>(3); entries.add(new TextImpl(text)); matchGrammar(text, entries, grammar, 0, 0, false, null); return entries; }
if (isSyntaxNode(node)) { continue; int p = position; for (int len = entries.size(); k < len && (p < to || (!isSyntaxNode(entries.get(k)) && !isGreedyNode(entries.get(k - 1)))); ++k) { p += entries.get(k).textLength(); if (isSyntaxNode(entries.get(i))) { continue; final boolean hasInside = inside != null; if (hasInside) { tokenEntries = tokenize(match, inside); } else { tokenEntries = Collections.singletonList(new TextImpl(match)); matchGrammar(text, entries, grammar, i, position, true, token);
@Provides @Singleton Prism4j prism4j() { return new Prism4j(new GrammarLocatorDef()); }
@NonNull protected CharSequence highlightWithLanguageInfo(@NonNull String info, @NonNull String code) { final CharSequence out; final String language; final Prism4j.Grammar grammar; { String _language = info; Prism4j.Grammar _grammar = prism4j.grammar(info); if (_grammar == null && !TextUtils.isEmpty(fallback)) { _language = fallback; _grammar = prism4j.grammar(fallback); } language = _language; grammar = _grammar; } if (grammar != null) { out = highlight(language, grammar, code); } else { out = code; } return out; }