Skip to content

Instantly share code, notes, and snippets.

@osima
Created January 10, 2011 13:52
Show Gist options
  • Select an option

  • Save osima/772786 to your computer and use it in GitHub Desktop.

Select an option

Save osima/772786 to your computer and use it in GitHub Desktop.
wikiengine test
@Grab(group='radeox', module='radeox', version='1.0-b2')
import java.lang.reflect.Field
import org.radeox.filter.FilterPipe
import org.radeox.engine.BaseRenderEngine
import org.radeox.engine.context.BaseInitialRenderContext
import org.radeox.api.engine.WikiRenderEngine
import org.radeox.api.engine.RenderEngine
import org.radeox.api.engine.context.InitialRenderContext
import org.radeox.api.engine.context.RenderContext
class MyWikiEngine extends BaseRenderEngine implements WikiRenderEngine {
public MyWikiEngine(InitialRenderContext initialRenderContext) {
super(initialRenderContext)
}
public String render(String content){ render(content, initialContext) }
protected void init() {
FilterPipe fp = new FilterPipe(initialContext)
//fp.addFilter( new org.radeox.filter.ListFilter() )
fp.addFilter( new org.radeox.filter.LinkTestFilter() )
fp.init()
setFilterPipe( fp )
}
void setFilterPipe(FilterPipe filterPipe) {
Field field = getClass().getSuperclass().getDeclaredField("fp")
field.setAccessible( true )
field.set(this, filterPipe)
}
public boolean exists(String name) {
if( name == 'radeox' ) return true
false
}
public boolean showCreate() { true; }
public void appendLink(StringBuffer buffer, String name, String view, String anchor) {
buffer << "<a href=\"${contextPath}${name}#${anchor}\">${view}</a>"
}
public void appendLink(StringBuffer buffer, String name, String view) {
buffer << "<a href=\"${contextPath}/${name}\">${view}</a>"
}
public void appendCreateLink(StringBuffer buffer, String name, String view) {
buffer << "<a href=\"${contextPath}/${name}\">${view}(new)</a>"
}
private String contextPath
String getContextPath(){
if( contextPath==null ) contextPath='.'
contextPath
}
void setContextPath(String contextPath){
this.contextPath = contextPath
}
}
class MyContext extends BaseInitialRenderContext {
def engine
RenderEngine getRenderEngine(){
if( engine == null ) engine = new MyWikiEngine(this)
engine
}
void setContextPath(String contextPath){
getRenderEngine().setContextPath( contextPath )
}
String getContextPath(){
getRenderEngine().getContextPath()
}
}
//
// main
//
def wikitext = '''
Hello [radeox] !
Hello [java] !
'''
def context = new MyContext()
context.contextPath = 'http://example.com/wiki'
def engine = context.getRenderEngine()
println engine.render(wikitext)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment