fix more modules

This commit is contained in:
Clément Fournier
2022-07-21 05:24:33 +02:00
parent 8076da056a
commit 5c2260bd0f
8 changed files with 45 additions and 10 deletions

View File

@@ -5,6 +5,7 @@
package net.sourceforge.pmd.lang.html;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase;
public final class HtmlLanguageModule extends SimpleLanguageModuleBase {
@@ -17,4 +18,8 @@ public final class HtmlLanguageModule extends SimpleLanguageModuleBase {
.extensions("html", "htm", "xhtml", "xht", "shtml"),
new HtmlHandler());
}
public static HtmlLanguageModule getInstance() {
return (HtmlLanguageModule) LanguageRegistry.PMD.getLanguageById(TERSE_NAME);
}
}

View File

@@ -11,20 +11,33 @@ import net.sourceforge.pmd.cpd.SourceCode;
import net.sourceforge.pmd.cpd.TokenEntry;
import net.sourceforge.pmd.cpd.Tokenizer;
import net.sourceforge.pmd.cpd.Tokens;
import net.sourceforge.pmd.lang.LanguageProcessor;
import net.sourceforge.pmd.lang.LanguageProcessorRegistry;
import net.sourceforge.pmd.lang.ast.Parser.ParserTask;
import net.sourceforge.pmd.lang.ast.SemanticErrorReporter;
import net.sourceforge.pmd.lang.document.CpdCompat;
import net.sourceforge.pmd.lang.document.TextDocument;
import net.sourceforge.pmd.lang.document.TextFile;
import net.sourceforge.pmd.lang.html.HtmlLanguageModule;
public class HtmlTokenizer implements Tokenizer {
@Override
public void tokenize(SourceCode sourceCode, Tokens tokenEntries) {
try (TextDocument textDoc = TextDocument.create(CpdCompat.cpdCompat(sourceCode))) {
HtmlLanguageModule html = HtmlLanguageModule.getInstance();
TextFile tf = TextFile.forCharSeq(
sourceCode.getCodeBuffer(),
sourceCode.getFileName(),
html.getDefaultVersion()
);
try (LanguageProcessor processor = html.createProcessor(html.newPropertyBundle());
TextDocument textDoc = TextDocument.create(tf)) {
ParserTask task = new ParserTask(
textDoc,
SemanticErrorReporter.noop(),// fixme
lpRegistry);
SemanticErrorReporter.noop(), // fixme
LanguageProcessorRegistry.singleton(processor)
);
HtmlParser parser = new HtmlParser();
ASTHtmlDocument root = parser.parse(task);
@@ -32,6 +45,8 @@ public class HtmlTokenizer implements Tokenizer {
traverse(root, tokenEntries);
} catch (IOException e) {
throw new UncheckedIOException(e);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
tokenEntries.add(TokenEntry.EOF);
}