Skip to content

Commit

Permalink
feat: add support for <skipHtml> paramenter in <markdownProcessor> co…
Browse files Browse the repository at this point in the history
…nfiguration

#284
  • Loading branch information
Build Pipeline committed Mar 1, 2023
1 parent 332658c commit 39392f4
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,11 @@ public static String processMarkdown(
final Optional<String> pagePrefixToApply) throws IOException {

return MarkdownProcessor.shared.processMarkdown(new MarkdownParserContext() {
@Override
public boolean isSkipHtml() {
return MarkdownProcessor.shared.isSkipHtml();
}

@Override
public Optional<Site> getSite() {
return Optional.of(site);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
*/
public interface MarkdownParserContext {

/**
* skip html tag parsing
*
* @return true|false
*/
boolean isSkipHtml();

/**
* The Site Model Object
*
Expand Down
38 changes: 26 additions & 12 deletions core/src/main/java/org/bsc/markdown/MarkdownProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,6 @@ public interface MarkdownProcessor {
*/
String processMarkdown( MarkdownParserContext context, String content ) throws IOException;

/**
* default method
*
* @param content
* @return
* @throws IOException
*/
default String processMarkdown( String content ) throws IOException {
return processMarkdown(new MarkdownParserContext() {
}, content);
}

/**
* factory method
*
Expand All @@ -63,6 +51,21 @@ class Shared implements MarkdownProcessor {
private String name = "commonmark";
private MarkdownProcessor processor;

private boolean skipHtml = false;

public boolean isSkipHtml() {
return skipHtml;
}

/**
* set skip html tag processing
*
* @return true|false
*/
public void setSkipHtml(boolean skipHtml) {
this.skipHtml = skipHtml;
}

@Override
public String getName() {
return ofNullable(shared.name)
Expand All @@ -76,6 +79,15 @@ public String processMarkdown(MarkdownParserContext context, String content) thr
.processMarkdown( context, content);
}

public String processMarkdown(String content) throws IOException {
return ofNullable(processor)
.orElseThrow( () -> new IllegalStateException( "processor has not been initialized yet!" ))
.processMarkdown( new MarkdownParserContext() {
@Override
public boolean isSkipHtml() { return isSkipHtml(); }
}, content);
}

public void setName(String value) {
name = ofNullable(value)
.orElseThrow( () -> new IllegalArgumentException( "processor's name cannot be null!" ));
Expand All @@ -92,6 +104,8 @@ public MarkdownProcessor init( ) {
}
return processor;
}


}

Shared shared = new Shared();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,19 @@
*/
public class MarkdownProcessorInfo {

public String getName() {
public boolean isSkipHtml() {
return MarkdownProcessor.shared.isSkipHtml();
}

/**
* set skip html tags parsing
* @param skipHtml
*/
public void setSkipHtml(boolean skipHtml) {
MarkdownProcessor.shared.setSkipHtml( skipHtml );
}

public String getName() {
return MarkdownProcessor.shared.getName();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,9 @@ public void visit( TableCell node ) {

@Override
public void visit(HtmlBlock node) {
// GUARD
if( parseContext.isSkipHtml() ) return;

final String literal = node.getLiteral();

final Matcher m = parseHTMLComment(literal);
Expand All @@ -342,6 +345,9 @@ public void visit(HtmlBlock node) {

@Override
public void visit(HtmlInline node) {
// GUARD
if( parseContext.isSkipHtml() ) return;

processChildren(node)
//.pre("<<HTMI>>").post("<</HTMI>>")
.process().nl();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import org.apache.commons.io.IOUtils
import org.bsc.confluence.model.Site
import org.bsc.markdown.MarkdownParserContext
import org.bsc.markdown.commonmark.CommonmarkConfluenceWikiVisitor
import org.junit.jupiter.api.Assertions.fail
import org.junit.jupiter.api.fail
import java.nio.charset.Charset
import java.util.*
Expand All @@ -15,6 +14,7 @@ fun parseContent(site: Site, content: String, linkPrefixEnabled: Boolean = true)
val root = CommonmarkConfluenceWikiVisitor.parser().parse(content)

val visitor = CommonmarkConfluenceWikiVisitor(object : MarkdownParserContext {
override fun isSkipHtml() = false

override fun getSite() = Optional.of(site)

Expand Down
4 changes: 4 additions & 0 deletions test-publishing/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,10 @@
<encoding>UTF-8</encoding>
<failOnError>true</failOnError>
<siteDescriptor>${basedir}/src/site/confluence/issue284/site.yml</siteDescriptor>
<markdownProcessor>
<skipHtml>true</skipHtml>
</markdownProcessor>

</configuration>
</execution>

Expand Down

0 comments on commit 39392f4

Please sign in to comment.