provide boolean isImageInlining and inlineImagePatterns to LinkParsingOperations#isImageLink(..)
in order to break a package cycle between o.a.w.render and o.a.w.parser
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
index 23eee96..e2a18cc 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
@@ -958,32 +958,26 @@
* @param url
* @return An anchor Element containing the link.
*/
- private Element makeDirectURILink( String url )
- {
+ private Element makeDirectURILink( String url ) {
final Element result;
String last = null;
- if( url.endsWith(",") || url.endsWith(".") )
- {
- last = url.substring( url.length()-1 );
- url = url.substring( 0, url.length()-1 );
+ if( url.endsWith( "," ) || url.endsWith( "." ) ) {
+ last = url.substring( url.length() - 1 );
+ url = url.substring( 0, url.length() - 1 );
}
callMutatorChain( m_externalLinkMutatorChain, url );
- if( m_linkParsingOperations.isImageLink( url ) )
- {
- result = handleImageLink( StringUtils.replace(url,"&","&"), url, false );
- }
- else
- {
- result = makeLink( EXTERNAL, StringUtils.replace(url,"&","&"), url, null, null );
+ if( m_linkParsingOperations.isImageLink( url, isImageInlining(), getInlineImagePatterns() ) ) {
+ result = handleImageLink( StringUtils.replace( url, "&", "&" ), url, false );
+ } else {
+ result = makeLink( EXTERNAL, StringUtils.replace( url, "&", "&" ), url, null, null );
addElement( outlinkImage() );
}
- if( last != null )
- {
- m_plainTextBuf.append(last);
+ if( last != null ) {
+ m_plainTextBuf.append( last );
}
return result;
@@ -1101,9 +1095,8 @@
* very useful if you want to emit HTML directly into the stream.
*
*/
- private void disableOutputEscaping()
- {
- addElement( new ProcessingInstruction(Result.PI_DISABLE_OUTPUT_ESCAPING, "") );
+ private void disableOutputEscaping() {
+ addElement( new ProcessingInstruction( Result.PI_DISABLE_OUTPUT_ESCAPING, "" ) );
}
/**
@@ -1111,7 +1104,7 @@
*/
private Element handleHyperlinks( String linktext, final int pos ) {
final ResourceBundle rb = Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE );
- final StringBuilder sb = new StringBuilder(linktext.length()+80);
+ final StringBuilder sb = new StringBuilder( linktext.length() + 80 );
if( m_linkParsingOperations.isAccessRule( linktext ) ) {
return handleAccessRule( linktext );
@@ -1121,28 +1114,19 @@
return handleMetadata( linktext );
}
- if( m_linkParsingOperations.isPluginLink( linktext ) )
- {
- try
- {
+ if( m_linkParsingOperations.isPluginLink( linktext ) ) {
+ try {
final PluginContent pluginContent = PluginContent.parsePluginLine( m_context, linktext, pos );
- //
- // This might sometimes fail, especially if there is something which looks
- // like a plugin invocation but is really not.
- //
- if( pluginContent != null )
- {
- addElement( pluginContent );
+ // This might sometimes fail, especially if there is something which looks like a plugin invocation but is really not.
+ if( pluginContent != null ) {
+ addElement( pluginContent );
pluginContent.executeParse( m_context );
}
- }
- catch( final PluginException e )
- {
+ } catch( final PluginException e ) {
log.info( m_context.getRealPage().getWiki() + " : " + m_context.getRealPage().getName() + " - Failed to insert plugin: " + e.getMessage() );
//log.info( "Root cause:",e.getRootThrowable() );
- if( !m_wysiwygEditorMode )
- {
+ if( !m_wysiwygEditorMode ) {
final ResourceBundle rbPlugin = Preferences.getBundle( m_context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
return addElement( makeError( MessageFormat.format( rbPlugin.getString( "plugin.error.insertionfailed" ),
m_context.getRealPage().getWiki(),
@@ -1154,10 +1138,9 @@
return m_currentElement;
}
- try
- {
- final LinkParser.Link link = m_linkParser.parse(linktext);
- linktext = link.getText();
+ try {
+ final LinkParser.Link link = m_linkParser.parse( linktext );
+ linktext = link.getText();
String linkref = link.getReference();
//
@@ -1167,33 +1150,23 @@
//
// In many cases these are the same. [linktext|linkref].
//
- if( m_linkParsingOperations.isVariableLink( linktext ) )
- {
- final Content el = new VariableContent(linktext);
+ if( m_linkParsingOperations.isVariableLink( linktext ) ) {
+ final Content el = new VariableContent( linktext );
addElement( el );
- }
- else if( m_linkParsingOperations.isExternalLink( linkref ) )
- {
+ } else if( m_linkParsingOperations.isExternalLink( linkref ) ) {
// It's an external link, out of this Wiki
callMutatorChain( m_externalLinkMutatorChain, linkref );
- if( m_linkParsingOperations.isImageLink( linkref ) )
- {
+ if( m_linkParsingOperations.isImageLink( linkref, isImageInlining(), getInlineImagePatterns() ) ) {
handleImageLink( linkref, linktext, link.hasReference() );
- }
- else
- {
+ } else {
makeLink( EXTERNAL, linkref, linktext, null, link.getAttributes() );
addElement( outlinkImage() );
}
- }
- else if( link.isInterwikiLink() )
- {
- // It's an interwiki link
- // InterWiki links also get added to external link chain
- // after the links have been resolved.
+ } else if( link.isInterwikiLink() ) {
+ // It's an interwiki link; InterWiki links also get added to external link chain after the links have been resolved.
// FIXME: There is an interesting issue here: We probably should
// URLEncode the wikiPage, but we can't since some of the
@@ -1202,81 +1175,57 @@
// is using, so you'll have to write the entire name as it appears
// in the URL. Bugger.
- final String extWiki = link.getExternalWiki();
+ final String extWiki = link.getExternalWiki();
final String wikiPage = link.getExternalWikiPage();
- if( m_wysiwygEditorMode )
- {
+ if( m_wysiwygEditorMode ) {
makeLink( INTERWIKI, extWiki + ":" + wikiPage, linktext, null, link.getAttributes() );
- }
- else
- {
+ } else {
String urlReference = m_engine.getInterWikiURL( extWiki );
- if( urlReference != null )
- {
+ if( urlReference != null ) {
urlReference = TextUtil.replaceString( urlReference, "%s", wikiPage );
urlReference = callMutatorChain( m_externalLinkMutatorChain, urlReference );
- if( m_linkParsingOperations.isImageLink(urlReference) )
- {
+ if( m_linkParsingOperations.isImageLink( urlReference, isImageInlining(), getInlineImagePatterns() ) ) {
handleImageLink( urlReference, linktext, link.hasReference() );
- }
- else
- {
+ } else {
makeLink( INTERWIKI, urlReference, linktext, null, link.getAttributes() );
}
- if( m_linkParsingOperations.isExternalLink(urlReference) )
- {
+ if( m_linkParsingOperations.isExternalLink( urlReference ) ) {
addElement( outlinkImage() );
}
- }
- else
- {
- final Object[] args = { escapeHTMLEntities(extWiki) };
+ } else {
+ final Object[] args = { escapeHTMLEntities( extWiki ) };
addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.nointerwikiref" ), args ) ) );
}
}
- }
- else if( linkref.startsWith("#") )
- {
+ } else if( linkref.startsWith( "#" ) ) {
// It defines a local footnote
makeLink( LOCAL, linkref, linktext, null, link.getAttributes() );
- }
- else if( TextUtil.isNumber( linkref ) )
- {
+ } else if( TextUtil.isNumber( linkref ) ) {
// It defines a reference to a local footnote
makeLink( LOCALREF, linkref, linktext, null, link.getAttributes() );
- }
- else
- {
- int hashMark = -1;
+ } else {
+ final int hashMark;
- //
- // Internal wiki link, but is it an attachment link?
- //
+ // Internal wiki link, but is it an attachment link?
String attachment = m_engine.getManager( AttachmentManager.class ).getAttachmentInfoName( m_context, linkref );
- if( attachment != null )
- {
+ if( attachment != null ) {
callMutatorChain( m_attachmentLinkMutatorChain, attachment );
- if( m_linkParsingOperations.isImageLink( linkref ) )
- {
+ if( m_linkParsingOperations.isImageLink( linkref, isImageInlining(), getInlineImagePatterns() ) ) {
attachment = m_context.getURL( WikiContext.ATTACH, attachment );
sb.append( handleImageLink( attachment, linktext, link.hasReference() ) );
- }
- else
- {
+ } else {
makeLink( ATTACHMENT, attachment, linktext, null, link.getAttributes() );
}
- }
- else if( (hashMark = linkref.indexOf('#')) != -1 )
- {
+ } else if( ( hashMark = linkref.indexOf( '#' ) ) != -1 ) {
// It's an internal Wiki link, but to a named section
- final String namedSection = linkref.substring( hashMark+1 );
+ final String namedSection = linkref.substring( hashMark + 1 );
linkref = linkref.substring( 0, hashMark );
linkref = MarkupParser.cleanLink( linkref );
@@ -1285,15 +1234,13 @@
final String matchedLink = m_linkParsingOperations.linkIfExists( linkref );
if( matchedLink != null ) {
- String sectref = "section-"+m_engine.encodeName(matchedLink+"-"+wikifyLink(namedSection));
- sectref = sectref.replace('%', '_');
+ String sectref = "section-" + m_engine.encodeName( matchedLink + "-" + wikifyLink( namedSection ) );
+ sectref = sectref.replace( '%', '_' );
makeLink( READ, matchedLink, linktext, sectref, link.getAttributes() );
} else {
makeLink( EDIT, linkref, linktext, null, link.getAttributes() );
}
- }
- else
- {
+ } else {
// It's an internal Wiki link
linkref = MarkupParser.cleanLink( linkref );
@@ -1307,14 +1254,12 @@
}
}
}
- }
- catch( final ParseException e )
- {
- log.info("Parser failure: ",e);
- final Object[] args = { e.getMessage() };
- addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.parserfailure" ), args ) ) );
- }
+ } catch( final ParseException e ) {
+ log.info( "Parser failure: ", e );
+ final Object[] args = { e.getMessage() };
+ addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.parserfailure" ), args ) ) );
+ }
return m_currentElement;
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
index 8102e73..51263ef 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
@@ -23,7 +23,6 @@
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.wiki.WikiContext;
import org.apache.wiki.api.exceptions.ProviderException;
-import org.apache.wiki.render.RenderingManager;
import java.util.Arrays;
import java.util.Comparator;
@@ -41,13 +40,11 @@
private final WikiContext wikiContext;
/**
- * This list contains all IANA registered URI protocol
- * types as of September 2004 + a few well-known extra types.
+ * This list contains all IANA registered URI protocol types as of September 2004 + a few well-known extra types.
*
* JSPWiki recognises all of them as external links.
*
- * This array is sorted during class load, so you can just dump
- * here whatever you want in whatever order you want.
+ * This array is sorted during class load, so you can just dump here whatever you want in whatever order you want.
*/
static final String[] EXTERNAL_LINKS = {
"http:", "ftp:", "https:", "mailto:",
@@ -83,8 +80,7 @@
/**
* Returns true if the link is really command to insert a plugin.
* <P>
- * Currently we just check if the link starts with "{INSERT",
- * or just plain "{" but not "{$".
+ * Currently we just check if the link starts with "{INSERT", or just plain "{" but not "{$".
*
* @param link Link text, i.e. the contents of text between [].
* @return True, if this link seems to be a command to insert a plugin here.
@@ -135,8 +131,7 @@
}
/**
- * Figures out if a link is an off-site link. This recognizes
- * the most common protocols by checking how it starts.
+ * Figures out if a link is an off-site link. This recognizes the most common protocols by checking how it starts.
*
* @param page The link to check.
* @return true, if this is a link outside of this wiki.
@@ -149,15 +144,11 @@
}
/**
- * Matches the given link to the list of image name patterns to
- * determine whether it should be treated as an inline image or not.
+ * Matches the given link to the list of image name patterns to determine whether it should be treated as an inline image or not.
*/
- public boolean isImageLink( String link ) {
- if( wikiContext.getEngine().getManager( RenderingManager.class ).getParser( wikiContext, link ).isImageInlining() ) {
+ public boolean isImageLink( String link, final boolean isImageInlining, final List< Pattern > inlineImagePatterns ) {
+ if( isImageInlining ) {
link = link.toLowerCase();
- final List< Pattern > inlineImagePatterns = wikiContext.getEngine().getManager( RenderingManager.class )
- .getParser( wikiContext, link ).getInlineImagePatterns();
-
for( final Pattern p : inlineImagePatterns ) {
if( new Perl5Matcher().matches( link, p ) ) {
return true;
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
index b7cec13..cc93a62 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
@@ -21,11 +21,14 @@
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.data.MutableDataHolder;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider.JSPWikiLinkAttributeProviderFactory;
import org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor.JSPWikiNodePostProcessorFactory;
import org.apache.wiki.markdown.renderer.JSPWikiNodeRendererFactory;
+import java.util.List;
+
/**
* Flexmark entry point to bootstrap JSPWiki extensions.
@@ -33,9 +36,15 @@
public class MarkdownForJSPWikiExtension implements Parser.ParserExtension, HtmlRenderer.HtmlRendererExtension {
private final WikiContext context;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public MarkdownForJSPWikiExtension( final WikiContext context ) {
+ public MarkdownForJSPWikiExtension( final WikiContext context,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.context = context;
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -58,7 +67,7 @@
@Override
public void extend( final HtmlRenderer.Builder rendererBuilder, final String rendererType ) {
rendererBuilder.nodeRendererFactory( new JSPWikiNodeRendererFactory( context ) );
- rendererBuilder.attributeProviderFactory( new JSPWikiLinkAttributeProviderFactory( context ) );
+ rendererBuilder.attributeProviderFactory( new JSPWikiLinkAttributeProviderFactory( context, isImageInlining, inlineImagePatterns ) );
}
/**
@@ -66,7 +75,7 @@
*/
@Override
public void extend( final Parser.Builder parserBuilder ) {
- parserBuilder.postProcessorFactory( new JSPWikiNodePostProcessorFactory( context, parserBuilder ) );
+ parserBuilder.postProcessorFactory( new JSPWikiNodePostProcessorFactory( context, parserBuilder, isImageInlining, inlineImagePatterns ) );
}
}
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
index 9add6de..76dc98e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
@@ -19,12 +19,14 @@
package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.html.Attributes;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
-import com.vladsch.flexmark.util.html.Attributes;
+import java.util.List;
/**
@@ -36,11 +38,18 @@
private final boolean m_useRelNofollow;
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public ExternalLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+ public ExternalLinkAttributeProviderState( final WikiContext wikiContext,
+ final boolean hasRef,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.hasRef = hasRef;
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
this.m_useRelNofollow = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USERELNOFOLLOW, false );
}
@@ -51,7 +60,7 @@
*/
@Override
public void setAttributes( final Attributes attributes, final JSPWikiLink link ) {
- if( linkOperations.isImageLink( link.getUrl().toString() ) ) {
+ if( linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
new ImageLinkAttributeProviderState( wikiContext, link.getText().toString(), hasRef ).setAttributes( attributes, link );
} else {
attributes.replaceValue( "class", MarkupParser.CLASS_EXTERNAL );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
index 4de92d6..7138720 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
@@ -21,12 +21,15 @@
import com.vladsch.flexmark.ast.Link;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.html.Attributes;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.util.TextUtil;
+import java.util.List;
+
/**
* {@link NodeAttributeProviderState} which sets the attributes for interwiki links.
@@ -37,11 +40,18 @@
private final boolean m_wysiwygEditorMode;
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public InterWikiLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+ public InterWikiLinkAttributeProviderState( final WikiContext wikiContext,
+ final boolean hasRef,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.hasRef = hasRef;
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
final Boolean wysiwygVariable = ( Boolean )wikiContext.getVariable( WikiContext.VAR_WYSIWYG_EDITOR_MODE );
m_wysiwygEditorMode = wysiwygVariable != null ? wysiwygVariable : false;
}
@@ -58,7 +68,7 @@
String urlReference = wikiContext.getEngine().getInterWikiURL( refAndPage[ 0 ] );
if( urlReference != null ) {
urlReference = TextUtil.replaceString( urlReference, "%s", refAndPage[ 1 ] );
- if( linkOperations.isImageLink( urlReference ) ) {
+ if( linkOperations.isImageLink( urlReference, isImageInlining, inlineImagePatterns ) ) {
new ImageLinkAttributeProviderState( wikiContext, urlReference, hasRef ).setAttributes( attributes, link );
} else {
setInterWikiLinkAttrs( attributes, link, urlReference );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
index 45a91a3..4d8ba7e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
@@ -18,16 +18,18 @@
*/
package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
+import com.vladsch.flexmark.html.AttributeProvider;
+import com.vladsch.flexmark.html.renderer.AttributablePart;
+import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.html.Attributes;
import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.util.TextUtil;
-import com.vladsch.flexmark.html.AttributeProvider;
-import com.vladsch.flexmark.html.renderer.AttributablePart;
-import com.vladsch.flexmark.util.ast.Node;
-import com.vladsch.flexmark.util.html.Attributes;
+import java.util.List;
/**
@@ -39,10 +41,16 @@
protected final WikiContext wikiContext;
protected final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public JSPWikiLinkAttributeProvider( final WikiContext wikiContext ) {
+ public JSPWikiLinkAttributeProvider( final WikiContext wikiContext,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -56,15 +64,15 @@
final JSPWikiLink link = ( JSPWikiLink )node;
final NodeAttributeProviderState< JSPWikiLink > linkState;
if( linkOperations.isExternalLink( link.getWikiLink() ) ) {
- linkState = new ExternalLinkAttributeProviderState( wikiContext, link.hasRef() );
+ linkState = new ExternalLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
} else if( linkOperations.isInterWikiLink( link.getWikiLink() ) ) {
- linkState = new InterWikiLinkAttributeProviderState( wikiContext, link.hasRef() );
+ linkState = new InterWikiLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
} else if( StringUtils.startsWith( link.getWikiLink(), "#" ) ) {
linkState = new LocalFootnoteLinkAttributeProviderState( wikiContext );
} else if( TextUtil.isNumber( link.getWikiLink() ) ) {
linkState = new LocalFootnoteRefLinkAttributeProviderState( wikiContext );
} else {
- linkState = new LocalLinkAttributeProviderState( wikiContext, link.hasRef() );
+ linkState = new LocalLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
}
linkState.setAttributes( attributes, link );
}
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
index 1a0d6d9..c61a6fc 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
@@ -18,12 +18,14 @@
*/
package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
-import org.apache.wiki.WikiContext;
-
import com.vladsch.flexmark.html.AttributeProvider;
import com.vladsch.flexmark.html.AttributeProviderFactory;
import com.vladsch.flexmark.html.IndependentAttributeProviderFactory;
import com.vladsch.flexmark.html.renderer.LinkResolverContext;
+import org.apache.oro.text.regex.Pattern;
+import org.apache.wiki.WikiContext;
+
+import java.util.List;
/**
@@ -32,9 +34,15 @@
public class JSPWikiLinkAttributeProviderFactory extends IndependentAttributeProviderFactory {
final WikiContext wikiContext;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public JSPWikiLinkAttributeProviderFactory( final WikiContext wikiContext ) {
+ public JSPWikiLinkAttributeProviderFactory( final WikiContext wikiContext,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.wikiContext = wikiContext;
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -44,7 +52,7 @@
*/
@Override
public AttributeProvider apply( final LinkResolverContext context ) {
- return new JSPWikiLinkAttributeProvider( wikiContext );
+ return new JSPWikiLinkAttributeProvider( wikiContext, isImageInlining, inlineImagePatterns );
}
}
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
index 48c749c..add256b 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
@@ -21,12 +21,15 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.html.Attributes;
import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
+import java.util.List;
+
/**
* {@link NodeAttributeProviderState} which sets the attributes for local links.
@@ -36,11 +39,18 @@
private final boolean hasRef;
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public LocalLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+ public LocalLinkAttributeProviderState( final WikiContext wikiContext,
+ final boolean hasRef,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.hasRef = hasRef;
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -53,7 +63,7 @@
final int hashMark = link.getUrl().toString().indexOf( '#' );
final String attachment = wikiContext.getEngine().getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, link.getWikiLink() );
if( attachment != null ) {
- if( !linkOperations.isImageLink( link.getUrl().toString() ) ) {
+ if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
attributes.replaceValue( "class", MarkupParser.CLASS_ATTACHMENT );
final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getWikiLink() );
attributes.replaceValue( "href", attlink );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
index 3e8dac8..bd2ee43 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
@@ -21,11 +21,14 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.ast.NodeTracker;
import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
+import java.util.List;
+
/**
* {@link NodePostProcessorState} which further post processes external links.
@@ -34,11 +37,17 @@
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
private boolean m_useOutlinkImage = true;
- public ExternalLinkNodePostProcessorState( final WikiContext wikiContext ) {
+ public ExternalLinkNodePostProcessorState( final WikiContext wikiContext,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
this.m_useOutlinkImage = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
}
@@ -49,7 +58,7 @@
*/
@Override
public void process( final NodeTracker state, final JSPWikiLink link ) {
- if( linkOperations.isImageLink( link.getUrl().toString() ) ) {
+ if( linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
new ImageLinkNodePostProcessorState( wikiContext, link.getUrl().toString(), link.hasRef() ).process( state, link );
} else {
link.setUrl( CharSubSequence.of( link.getUrl().toString() ) );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
index 39a1252..340cf65 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
@@ -23,6 +23,7 @@
import com.vladsch.flexmark.util.ast.NodeTracker;
import com.vladsch.flexmark.util.sequence.CharSubSequence;
import org.apache.log4j.Logger;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.i18n.InternationalizationManager;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
@@ -32,6 +33,7 @@
import org.apache.wiki.util.TextUtil;
import java.text.MessageFormat;
+import java.util.List;
import java.util.ResourceBundle;
@@ -43,13 +45,20 @@
private static final Logger LOG = Logger.getLogger( InterWikiLinkNodePostProcessorState.class );
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
private final Document document;
private final boolean m_wysiwygEditorMode;
private boolean m_useOutlinkImage = true;
- public InterWikiLinkNodePostProcessorState( final WikiContext wikiContext, final Document document ) {
+ public InterWikiLinkNodePostProcessorState( final WikiContext wikiContext,
+ final Document document,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
this.document = document;
this.m_useOutlinkImage = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
final Boolean wysiwygVariable = ( Boolean )wikiContext.getVariable( WikiContext.VAR_WYSIWYG_EDITOR_MODE );
@@ -68,7 +77,7 @@
String urlReference = wikiContext.getEngine().getInterWikiURL( refAndPage[ 0 ] );
if( urlReference != null ) {
urlReference = TextUtil.replaceString( urlReference, "%s", refAndPage[ 1 ] );
- if( linkOperations.isImageLink( urlReference ) ) {
+ if( linkOperations.isImageLink( urlReference, isImageInlining, inlineImagePatterns ) ) {
new ImageLinkNodePostProcessorState( wikiContext, urlReference, link.hasRef() ).process( state, link );
} else {
link.setUrl( CharSubSequence.of( urlReference ) );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
index 2aba7de..0ee69f1 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
@@ -25,12 +25,15 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.ast.NodeTracker;
import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.util.TextUtil;
+import java.util.List;
+
/**
* {@link NodePostProcessor} to convert {@link Link}s into {@link JSPWikiLink}s.
@@ -41,13 +44,20 @@
protected final WikiContext m_context;
protected final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
protected boolean m_useOutlinkImage = true;
protected final Document document;
- public JSPWikiLinkNodePostProcessor( final WikiContext m_context, final Document document ) {
+ public JSPWikiLinkNodePostProcessor( final WikiContext m_context,
+ final Document document,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.m_context = m_context;
this.document = document;
linkOperations = new LinkParsingOperations( m_context );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
m_useOutlinkImage = m_context.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
}
@@ -71,15 +81,15 @@
} else if( linkOperations.isVariableLink( link.getUrl().toString() ) ) {
linkPostProcessor = new VariableLinkNodePostProcessorState( m_context );
} else if( linkOperations.isExternalLink( link.getUrl().toString() ) ) {
- linkPostProcessor = new ExternalLinkNodePostProcessorState( m_context );
+ linkPostProcessor = new ExternalLinkNodePostProcessorState( m_context, isImageInlining, inlineImagePatterns );
} else if( linkOperations.isInterWikiLink( link.getUrl().toString() ) ) {
- linkPostProcessor = new InterWikiLinkNodePostProcessorState( m_context, document );
+ linkPostProcessor = new InterWikiLinkNodePostProcessorState( m_context, document, isImageInlining, inlineImagePatterns );
} else if( StringUtils.startsWith( link.getUrl().toString(), "#" ) ) {
linkPostProcessor = new LocalFootnoteLinkNodePostProcessorState( m_context );
} else if( TextUtil.isNumber( link.getUrl().toString() ) ) {
linkPostProcessor = new LocalFootnoteRefLinkNodePostProcessorState( m_context );
} else {
- linkPostProcessor = new LocalLinkNodePostProcessorState( m_context );
+ linkPostProcessor = new LocalLinkNodePostProcessorState( m_context, isImageInlining, inlineImagePatterns );
}
linkPostProcessor.process( state, link );
}
@@ -95,7 +105,7 @@
if( previous != null ) {
previous.insertAfter( link );
- } else {
+ } else if( parent != null ) {
parent.appendChild( link );
}
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
index 889d80d..d929240 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
@@ -23,8 +23,11 @@
import com.vladsch.flexmark.parser.block.NodePostProcessorFactory;
import com.vladsch.flexmark.util.ast.Document;
import com.vladsch.flexmark.util.data.DataHolder;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
+import java.util.List;
+
/**
* Simple {@link NodePostProcessorFactory} to instantiate {@link JSPWikiLinkNodePostProcessor}s.
@@ -32,11 +35,18 @@
public class JSPWikiNodePostProcessorFactory extends NodePostProcessorFactory {
private final WikiContext m_context;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public JSPWikiNodePostProcessorFactory( final WikiContext m_context, final DataHolder options ) {
+ public JSPWikiNodePostProcessorFactory( final WikiContext m_context,
+ final DataHolder options,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
super( true );
addNodes( Link.class ); // needs to be called before create( Document )
this.m_context = m_context;
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -44,7 +54,7 @@
*/
@Override
public NodePostProcessor apply( final Document document ) {
- return new JSPWikiLinkNodePostProcessor( m_context, document );
+ return new JSPWikiLinkNodePostProcessor( m_context, document, isImageInlining, inlineImagePatterns );
}
}
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
index 0e1629a..b1eca9e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
@@ -22,12 +22,15 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.ast.NodeTracker;
import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.attachment.AttachmentManager;
import org.apache.wiki.markdown.nodes.JSPWikiLink;
import org.apache.wiki.parser.LinkParsingOperations;
import org.apache.wiki.parser.MarkupParser;
+import java.util.List;
+
/**
* {@link NodePostProcessorState} which further post processes local links.
@@ -36,10 +39,16 @@
private final WikiContext wikiContext;
private final LinkParsingOperations linkOperations;
+ private final boolean isImageInlining;
+ private final List< Pattern > inlineImagePatterns;
- public LocalLinkNodePostProcessorState( final WikiContext wikiContext ) {
+ public LocalLinkNodePostProcessorState( final WikiContext wikiContext,
+ final boolean isImageInlining,
+ final List< Pattern > inlineImagePatterns ) {
this.wikiContext = wikiContext;
this.linkOperations = new LinkParsingOperations( wikiContext );
+ this.isImageInlining = isImageInlining;
+ this.inlineImagePatterns = inlineImagePatterns;
}
/**
@@ -52,7 +61,7 @@
final int hashMark = link.getUrl().toString().indexOf( '#' );
final String attachment = wikiContext.getEngine().getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, link.getUrl().toString() );
if( attachment != null ) {
- if( !linkOperations.isImageLink( link.getUrl().toString() ) ) {
+ if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getUrl().toString() );
link.setUrl( CharSubSequence.of( attlink ) );
link.removeChildren();
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
index e441a0a..17eb5fa 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
@@ -25,6 +25,7 @@
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.MutableDataSet;
import com.vladsch.flexmark.util.misc.Extension;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
import org.apache.wiki.WikiPage;
import org.apache.wiki.markdown.MarkdownForJSPWikiExtension;
@@ -32,6 +33,7 @@
import org.apache.wiki.parser.WikiDocument;
import java.util.Arrays;
+import java.util.List;
/**
@@ -58,12 +60,12 @@
* @param context current wikicontext
* @return configuration options for MarkdownRenderers.
*/
- public static MutableDataSet options( final WikiContext context ) {
+ public static MutableDataSet options( final WikiContext context, final boolean isImageInlining, final List< Pattern > inlineImagePatterns ) {
final MutableDataSet options = new MutableDataSet();
options.setFrom( ParserEmulationProfile.COMMONMARK );
// align style of Markdown's footnotes extension with jspwiki footnotes refs
options.set( FootnoteExtension.FOOTNOTE_LINK_REF_CLASS, JSPWikiMarkupParser.CLASS_FOOTNOTE_REF );
- options.set( Parser.EXTENSIONS, Arrays.asList( new Extension[] { new MarkdownForJSPWikiExtension( context ),
+ options.set( Parser.EXTENSIONS, Arrays.asList( new Extension[] { new MarkdownForJSPWikiExtension( context, isImageInlining, inlineImagePatterns ),
FootnoteExtension.create(),
TocExtension.create() } ) );
return options;
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
index d36647b..2c69f09 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
@@ -43,7 +43,7 @@
context.getEngine().getManager( AuthorizationManager.class ) == null ) {
disableAccessRules();
}
- parser = Parser.builder( MarkdownDocument.options( context ) ).build();
+ parser = Parser.builder( MarkdownDocument.options( context, isImageInlining(), getInlineImagePatterns() ) ).build();
}
/**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java b/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
index bf13633..1400b61 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
@@ -18,14 +18,18 @@
*/
package org.apache.wiki.render.markdown;
-import java.io.IOException;
-
+import com.vladsch.flexmark.html.HtmlRenderer;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
import org.apache.wiki.WikiContext;
+import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.parser.WikiDocument;
import org.apache.wiki.parser.markdown.MarkdownDocument;
+import org.apache.wiki.render.RenderingManager;
import org.apache.wiki.render.WikiRenderer;
-import com.vladsch.flexmark.html.HtmlRenderer;
+import java.io.IOException;
+import java.util.List;
/**
@@ -37,7 +41,12 @@
public MarkdownRenderer( final WikiContext context, final WikiDocument doc ) {
super( context, doc );
- renderer = HtmlRenderer.builder( MarkdownDocument.options( context ) ).build();
+ final MarkupParser mp = context.getEngine()
+ .getManager( RenderingManager.class )
+ .getParser( context, StringUtils.defaultString( doc.getPageData() ) );
+ final boolean isImageInlining = mp.isImageInlining();
+ final List< Pattern > inlineImagePatterns = mp.getInlineImagePatterns();
+ renderer = HtmlRenderer.builder( MarkdownDocument.options( context, isImageInlining, inlineImagePatterns ) ).build();
}
/**