diff --git a/libraries.gradle b/libraries.gradle index 41f04255..0424d10b 100644 --- a/libraries.gradle +++ b/libraries.gradle @@ -16,9 +16,8 @@ implLibraries = [ commonsText : "org.apache.commons:commons-text:1.8", guava : 'com.google.guava:guava:27.0.1-android', jacksonDatabind : 'com.fasterxml.jackson.core:jackson-databind:2.9.10', - mark2Ascii : "nl.jworks.markdown_to_asciidoc:markdown_to_asciidoc:1.1", paleo : "ch.netzwerg:paleo-core:0.14.0", - pegdown : "org.pegdown:pegdown:1.6.0", + flexmarkJava : "com.vladsch.flexmark:flexmark-all:0.62.2", slf4j : "org.slf4j:slf4j-api:1.7.28", swaggerV2 : "io.swagger:swagger-parser:1.0.47", swaggerV2Converter : "io.swagger.parser.v3:swagger-parser-v2-converter:2.0.15", diff --git a/openapi2markup/src/main/resources/io/github/swagger2markup/config/default.properties b/openapi2markup/src/main/resources/io/github/swagger2markup/config/default.properties index f20adc21..171ec097 100644 --- a/openapi2markup/src/main/resources/io/github/swagger2markup/config/default.properties +++ b/openapi2markup/src/main/resources/io/github/swagger2markup/config/default.properties @@ -26,7 +26,6 @@ swagger2markup.propertyOrderBy=NATURAL swagger2markup.responseOrderBy=NATURAL swagger2markup.listDelimiterEnabled=false swagger2markup.listDelimiter=, -swagger2markup.asciidoc.pegdown.timeoutMillis=2000 swagger2markup.generatedExamplesEnabled=false # basic, curl, invoke-webrequest diff --git a/swagger2markup-builder/build.gradle b/swagger2markup-builder/build.gradle index 8272e1f8..cc3d897f 100644 --- a/swagger2markup-builder/build.gradle +++ b/swagger2markup-builder/build.gradle @@ -8,9 +8,8 @@ dependencies { implementation implLibraries.commonsCodec implementation implLibraries.commonsLang3 implementation implLibraries.commonsIO - implementation implLibraries.mark2Ascii implementation implLibraries.slf4j - implementation implLibraries.pegdown + implementation implLibraries.flexmarkJava testImplementation testLibraries.assertjDiff testImplementation testLibraries.junit testImplementation testLibraries.logback diff --git a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/MarkupDocBuilders.java b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/MarkupDocBuilders.java index 1a20a9bf..583e7b0d 100644 --- a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/MarkupDocBuilders.java +++ b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/MarkupDocBuilders.java @@ -78,38 +78,4 @@ public static MarkupDocBuilder documentBuilder(MarkupLanguage markupLanguage, Li throw new IllegalArgumentException(String.format("Unsupported markup language %s", markupLanguage)); } } - - - /** - * Creates a MarkupDocBuilder which uses a custom line separator. - * If the custom line separator is null, it uses the system line separator. - * There is a possibility asciidoc generator pegdown (optional) can - * take more time. The default is set to two seconds. To override pass value greater than two seconds. - * - * @param markupLanguage the markup language which is used to generate the files - * @param lineSeparator the line separator which should be used - * @param asciidocPegdownTimeoutMillis asciidoc generator timeout - * @return a MarkupDocBuilder - */ - public static MarkupDocBuilder documentBuilder(MarkupLanguage markupLanguage, LineSeparator lineSeparator, int asciidocPegdownTimeoutMillis) { - switch (markupLanguage) { - case MARKDOWN: - if (lineSeparator == null) - return new MarkdownBuilder(); - else - return new MarkdownBuilder(lineSeparator.toString()); - case ASCIIDOC: - if (lineSeparator == null) - return new AsciiDocBuilder(asciidocPegdownTimeoutMillis); - else - return new AsciiDocBuilder(lineSeparator.toString(), asciidocPegdownTimeoutMillis); - case CONFLUENCE_MARKUP: - if (lineSeparator == null) - return new ConfluenceMarkupBuilder(); - else - return new ConfluenceMarkupBuilder(lineSeparator.toString()); - default: - throw new IllegalArgumentException(String.format("Unsupported markup language %s", markupLanguage)); - } - } } diff --git a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/AbstractMarkupDocBuilder.java b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/AbstractMarkupDocBuilder.java index 32f08bcf..bf4448bb 100644 --- a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/AbstractMarkupDocBuilder.java +++ b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/AbstractMarkupDocBuilder.java @@ -60,26 +60,19 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder { protected static final int MAX_TITLE_LEVEL = 5; protected static final String NEW_LINES = "\\r\\n|\\r|\\n"; protected static final String WHITESPACE = " "; - protected static final int ASCIIDOC_PEGDOWN_DEFUALT_MILLIS = 2000; protected StringBuilder documentBuilder = new StringBuilder(); protected String newLine; - protected int asciidocPegdownTimeoutMillis; protected Logger logger = LoggerFactory.getLogger(getClass()); protected String anchorPrefix = null; public AbstractMarkupDocBuilder() { - this(System.getProperty("line.separator"), ASCIIDOC_PEGDOWN_DEFUALT_MILLIS); + this(System.getProperty("line.separator")); } public AbstractMarkupDocBuilder(String newLine) { - this(newLine, ASCIIDOC_PEGDOWN_DEFUALT_MILLIS); - } - - public AbstractMarkupDocBuilder(String newLine, int asciidocPegdownTimeoutMillis) { this.newLine = newLine; - this.asciidocPegdownTimeoutMillis = asciidocPegdownTimeoutMillis; } protected abstract MarkupLanguage getMarkupLanguage(); @@ -420,7 +413,7 @@ protected String convert(String markupText, MarkupLanguage markupLanguage) { return markupText; else { if (markupLanguage == MarkupLanguage.MARKDOWN && getMarkupLanguage() == MarkupLanguage.ASCIIDOC) { - return AsciiDocConverterExtension.convertMarkdownToAsciiDoc(markupText, asciidocPegdownTimeoutMillis) + newLine; + return AsciiDocConverterExtension.convertMarkdownToAsciiDoc(markupText) + newLine; } else { return markupText; } diff --git a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocBuilder.java b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocBuilder.java index 10db0bee..3e7916b7 100644 --- a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocBuilder.java +++ b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocBuilder.java @@ -50,25 +50,17 @@ public AsciiDocBuilder() { super(); } - public AsciiDocBuilder(int asciidocPegdownTimeoutMillis) { - super(System.getProperty("line.separator"), asciidocPegdownTimeoutMillis); - } - public AsciiDocBuilder(String newLine) { super(newLine); } - public AsciiDocBuilder(String newLine, int asciidocPegdownTimeoutMillis) { - super(newLine, asciidocPegdownTimeoutMillis); - } - protected MarkupLanguage getMarkupLanguage() { return MarkupLanguage.ASCIIDOC; } @Override public MarkupDocBuilder copy(boolean copyBuffer) { - AsciiDocBuilder builder = new AsciiDocBuilder(newLine, asciidocPegdownTimeoutMillis); + AsciiDocBuilder builder = new AsciiDocBuilder(newLine); if (copyBuffer) builder.documentBuilder = new StringBuilder(this.documentBuilder); diff --git a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocConverterExtension.java b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocConverterExtension.java index 7b88856e..d103c858 100644 --- a/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocConverterExtension.java +++ b/swagger2markup-builder/src/main/java/io/github/swagger2markup/markup/builder/internal/asciidoc/AsciiDocConverterExtension.java @@ -1,29 +1,29 @@ package io.github.swagger2markup.markup.builder.internal.asciidoc; -import org.pegdown.Extensions; -import org.pegdown.PegDownProcessor; -import org.pegdown.ast.RootNode; +import com.vladsch.flexmark.html.HtmlRenderer; +import com.vladsch.flexmark.parser.Parser; +import com.vladsch.flexmark.util.ast.Node; +import com.vladsch.flexmark.util.data.MutableDataSet; -import nl.jworks.markdown_to_asciidoc.Converter; -import nl.jworks.markdown_to_asciidoc.ToAsciiDocSerializer; +public class AsciiDocConverterExtension { -public class AsciiDocConverterExtension extends Converter { + private static final Parser parser; + private static final HtmlRenderer renderer; + + static { + MutableDataSet options = new MutableDataSet(); + parser = Parser.builder(options).build(); + renderer = HtmlRenderer.builder(options).build(); + } /** * Converts markdown to asciidoc. * * @param markdown the markdown source to convert - * @param timeoutMills parsing timeout * @return asciidoc format */ public static String convertMarkdownToAsciiDoc(String markdown, long timeoutMills) { - PegDownProcessor processor = new PegDownProcessor(Extensions.ALL, timeoutMills); - // insert blank line before fenced code block if necessary - if (markdown.contains("```")) { - markdown = markdown.replaceAll("(?m)(? getPageBreakLocations(); - /** - * Returns custom timeout value. - * - * @return custom timeout value - */ - int getAsciidocPegdownTimeoutMillis(); - /** * Returns format name which should be used to format request example string. * diff --git a/swagger2markup-core/src/main/java/io/github/swagger2markup/config/builder/Schema2MarkupConfigBuilder.java b/swagger2markup-core/src/main/java/io/github/swagger2markup/config/builder/Schema2MarkupConfigBuilder.java index 021c875b..de134f4f 100644 --- a/swagger2markup-core/src/main/java/io/github/swagger2markup/config/builder/Schema2MarkupConfigBuilder.java +++ b/swagger2markup-core/src/main/java/io/github/swagger2markup/config/builder/Schema2MarkupConfigBuilder.java @@ -123,7 +123,6 @@ public Schema2MarkupConfigBuilder(final Class selfClass, Configuration swagger2markupConfiguration = schema2MarkupProperties.getConfiguration().subset(PROPERTIES_PREFIX); Configuration extensionsConfiguration = swagger2markupConfiguration.subset(EXTENSION_PREFIX); config.extensionsProperties = new Schema2MarkupProperties(extensionsConfiguration); - config.asciidocPegdownTimeoutMillis = schema2MarkupProperties.getRequiredInt(ASCIIDOC_PEGDOWN_TIMEOUT); } /** @@ -691,7 +690,6 @@ public static class DefaultSchema2MarkupConfig implements Schema2MarkupConfig { String separatedDefinitionsFolder; Character listDelimiter; boolean listDelimiterEnabled; - int asciidocPegdownTimeoutMillis; List pageBreakLocations; @@ -894,11 +892,6 @@ public List getPageBreakLocations() { return pageBreakLocations; } - @Override - public int getAsciidocPegdownTimeoutMillis() { - return asciidocPegdownTimeoutMillis; - } - @Override public String getRequestExamplesFormat() { return requestExamplesFormat; diff --git a/swagger2markup/src/main/java/io/github/swagger2markup/Swagger2MarkupConverter.java b/swagger2markup/src/main/java/io/github/swagger2markup/Swagger2MarkupConverter.java index 25b040e5..298c2bfb 100644 --- a/swagger2markup/src/main/java/io/github/swagger2markup/Swagger2MarkupConverter.java +++ b/swagger2markup/src/main/java/io/github/swagger2markup/Swagger2MarkupConverter.java @@ -400,8 +400,7 @@ public MarkupDocBuilder createMarkupDocBuilder() { if (config.getLineSeparator() != null) { lineSeparator = LineSeparator.valueOf(config.getLineSeparator().name()); } - return MarkupDocBuilders.documentBuilder(markupLanguage, lineSeparator, - config.getAsciidocPegdownTimeoutMillis()).withAnchorPrefix(config.getAnchorPrefix()); + return MarkupDocBuilders.documentBuilder(markupLanguage, lineSeparator).withAnchorPrefix(config.getAnchorPrefix()); } } diff --git a/swagger2markup/src/main/resources/io/github/swagger2markup/config/default.properties b/swagger2markup/src/main/resources/io/github/swagger2markup/config/default.properties index fbdae7c8..7077cfcd 100644 --- a/swagger2markup/src/main/resources/io/github/swagger2markup/config/default.properties +++ b/swagger2markup/src/main/resources/io/github/swagger2markup/config/default.properties @@ -26,7 +26,6 @@ swagger2markup.propertyOrderBy=NATURAL swagger2markup.responseOrderBy=NATURAL swagger2markup.listDelimiterEnabled=false swagger2markup.listDelimiter=, -swagger2markup.asciidoc.pegdown.timeoutMillis=2000 swagger2markup.generatedExamplesEnabled=false # basic, curl, invoke-webrequest