The Radeox Wiki Render Engine

Stephan Schmidt
Stephan Schmidt
 • Computer Science and Philosophy

 • Project manager and development director in several SME

 • 1999 CT...
Radeox




                  Render
    __Stephan__            <b>Stephan</b>
                  Engine




               ...
Types


                  Custom
                  Parser


        Render    Regex
        Engine    Engine



          ...
Radeox Wiki Render Engine


  Regex
                   • Regex based Java Render Engine
  Engine

                   • Sta...
Wiki Architecture

    JSP, JSF, WebWork,
                                 Web Framework
       Struts, Wicket




       ...
Architecture with Render Pipeline
                                              Filter
                                   ...
Using the Radeox API

• Java

• Modularized, easy to extend

   • Filters and Macros

• Easy API


   RenderContext contex...
Hello World Macro
{hello}


public class HelloWorldMacro extends BaseMacro {


    public String getName() {
        retur...
Customize

radeox_markup.properties:


filter.italic.match = ~~(.*?)~~
filter.italic.print = <i class=quot;italicquot;>$1<...
Radeox Future

 • Standard markup?

 • Javascript render engine?

 • Parser based render engine with local contexts




  ...
Markups?

h1. TextileHeader1
h2. TextileHeader2
h3. TextileHeader3


==Wikipediasection==
===WikipediaSubsection===
====Wi...
Javascript Render Engine

 • Client side Render Engine (Dojo widget?)

 • Works for all Wikis

 • With AJAX less server re...
Wiki Content as an Abstract Syntax Tree (AST)
                                                           • Better context ...
Dynamic generated Parser
                                           name: bold
• EBNF too complicated, quot;Parser Lingoqu...
Thanks




         Matthias L. Jugel
         Fraunhofer FIRST
         matthias.jugel@first.fraunhofer.de


         Ste...
Upcoming SlideShare
Loading in …5
×

The Radeox Wiki Render Engine

1,954 views

Published on

This is the presentation for our talk at the Wiki Symposium 2006 presenting Radeox.

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,954
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

The Radeox Wiki Render Engine

  1. 1. The Radeox Wiki Render Engine Stephan Schmidt
  2. 2. Stephan Schmidt • Computer Science and Philosophy • Project manager and development director in several SME • 1999 CTO neotis GmbH, Knowledge management with semantic wikis and weblogs • 2002 Fraunhofer FIRST, Knowledge management for software development with wikis • WikiSym 2005 Commitee Seite 2
  3. 3. Radeox Render __Stephan__ <b>Stephan</b> Engine Seite 3
  4. 4. Types Custom Parser Render Regex Engine Engine Generated Parser Seite 4
  5. 5. Radeox Wiki Render Engine Regex • Regex based Java Render Engine Engine • Started as component in SnipSnap Wiki • Created component due to user requests • Relicensed from GPL to ASL • Used in several Java based Wikis Seite 5
  6. 6. Wiki Architecture JSP, JSF, WebWork, Web Framework Struts, Wicket Markup Rendering Radeox Engine Glue Wiki Existence Manager Files, XML, Storage Backend JDBC, JCR Hibernate Seite 6
  7. 7. Architecture with Render Pipeline Filter Macros Pipe Filter Macro Macro Macro Filter Render Engine Macro Filter Macro Component Container Filter (PicoContainer, Spring, J2EE) FilterContext MacroParameter Render Engine Seite 7
  8. 8. Using the Radeox API • Java • Modularized, easy to extend • Filters and Macros • Easy API RenderContext context = new BaseRenderContext(); RenderEngine engine = new BaseRenderEngine(); String result = engine.render(quot;__Radeox__quot;, context); Seite 8
  9. 9. Hello World Macro {hello} public class HelloWorldMacro extends BaseMacro { public String getName() { return quot;helloquot;; } public void execute(Writer writer, MacroParameter params) { writer.write(quot;Hello World!quot;); } } Seite X
  10. 10. Customize radeox_markup.properties: filter.italic.match = ~~(.*?)~~ filter.italic.print = <i class=quot;italicquot;>$1</i> Seite 9
  11. 11. Radeox Future • Standard markup? • Javascript render engine? • Parser based render engine with local contexts Seite 10
  12. 12. Markups? h1. TextileHeader1 h2. TextileHeader2 h3. TextileHeader3 ==Wikipediasection== ===WikipediaSubsection=== ====WikipediaSub-subsection==== 1 RadeoxFirstOrderHeading 1.1 RadeoxSecondOrderHeading 1.1.1 RadeoxThirdOrderHeading Seite 11
  13. 13. Javascript Render Engine • Client side Render Engine (Dojo widget?) • Works for all Wikis • With AJAX less server requests (edit) • Can be used on the server-side too Seite 12
  14. 14. Wiki Content as an Abstract Syntax Tree (AST) • Better context awareness Article • Higher level manipulations Section Section Section (Refactoring...) • Template evolution Paragraph Paragraph • People do this already Text Bold Macro Text Seite 13
  15. 15. Dynamic generated Parser name: bold • EBNF too complicated, quot;Parser Lingoquot; parents: text • Easy definition needed children: paragraph, text • Local, independent descriptions Local Description Local Unified Parser Parser Description Description Generator Local Description Seite 14
  16. 16. Thanks Matthias L. Jugel Fraunhofer FIRST matthias.jugel@first.fraunhofer.de Stephan J. Schmidt Fraunhofer FIRST stephan.schmidt@first.fraunhofer.de Seite 15

×