use of org.intellij.markdown.ast.ASTNode in project intellij-plugins by JetBrains.
the class MarkdownParserManager method parseContent.
public static ASTNode parseContent(@NotNull CharSequence buffer) {
final ParsingInfo info = ourLastParsingResult.get();
if (info != null && info.myBufferHash == buffer.hashCode() && info.myBuffer.equals(buffer)) {
return info.myParseResult;
}
final ASTNode parseResult = new MarkdownParser(FLAVOUR).parse(MarkdownElementTypes.MARKDOWN_FILE, buffer.toString(), false);
ourLastParsingResult.set(new ParsingInfo(buffer, parseResult));
return parseResult;
}
use of org.intellij.markdown.ast.ASTNode in project intellij-plugins by JetBrains.
the class MarkdownPreviewFileEditor method generateMarkdownHtml.
@NotNull
private static String generateMarkdownHtml(@NotNull VirtualFile file, @NotNull String text) {
final VirtualFile parent = file.getParent();
final URI baseUri = parent != null ? new File(parent.getPath()).toURI() : null;
final ASTNode parsedTree = new MarkdownParser(MarkdownParserManager.FLAVOUR).buildMarkdownTreeFromString(text);
final Map<IElementType, GeneratingProvider> htmlGeneratingProviders = MarkdownParserManager.FLAVOUR.createHtmlGeneratingProviders(LinkMap.Builder.buildLinkMap(parsedTree, text), baseUri);
return new HtmlGenerator(text, parsedTree, htmlGeneratingProviders, true).generateHtml();
}
use of org.intellij.markdown.ast.ASTNode in project intellij-plugins by JetBrains.
the class MarkdownToplevelLexer method start.
@Override
public void start(@NotNull CharSequence buffer, int startOffset, int endOffset, int initialState) {
myBuffer = buffer;
myBufferStart = startOffset;
myBufferEnd = endOffset;
final ASTNode parsedTree = MarkdownParserManager.parseContent(buffer.subSequence(startOffset, endOffset));
myLexemes = new ArrayList<>();
myStartOffsets = new ArrayList<>();
myEndOffsets = new ArrayList<>();
ASTNodeKt.accept(parsedTree, new LexerBuildingVisitor());
myLexemeIndex = 0;
}
Aggregations