SlideShare una empresa de Scribd logo
1 de 16
The Radeox Wiki Render Engine

Stephan Schmidt
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
Radeox




                  Render
    __Stephan__            <b>Stephan</b>
                  Engine




                                       Seite 3
Types


                  Custom
                  Parser


        Render    Regex
        Engine    Engine



                 Generated
                  Parser



                             Seite 4
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
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
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
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
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
Customize

radeox_markup.properties:


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




                                               Seite 9
Radeox Future

 • Standard markup?

 • Javascript render engine?

 • Parser based render engine with local contexts




                                                    Seite 10
Markups?

h1. TextileHeader1
h2. TextileHeader2
h3. TextileHeader3


==Wikipediasection==
===WikipediaSubsection===
====WikipediaSub-subsection====


1 RadeoxFirstOrderHeading
1.1 RadeoxSecondOrderHeading
1.1.1 RadeoxThirdOrderHeading


                                  Seite 11
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
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
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
Thanks




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


         Stephan J. Schmidt
         Fraunhofer FIRST
         stephan.schmidt@first.fraunhofer.de


                                              Seite 15

Más contenido relacionado

Similar a The Radeox Wiki Render Engine

Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
rajivmordani
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Alexandre Morgaut
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
 
Memcached, presented to LCA2010
Memcached, presented to LCA2010Memcached, presented to LCA2010
Memcached, presented to LCA2010
Mark Atwood
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
martinlippert
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJS
Alexandre Morgaut
 
Web(abap introduction)
Web(abap introduction)Web(abap introduction)
Web(abap introduction)
Kranthi Kumar
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Spike Brehm
 

Similar a The Radeox Wiki Render Engine (20)

2006 Esug Omnibrowser
2006 Esug Omnibrowser2006 Esug Omnibrowser
2006 Esug Omnibrowser
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQuery
 
Mozilla In Malaysia
Mozilla In MalaysiaMozilla In Malaysia
Mozilla In Malaysia
 
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornIsomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Memcached, presented to LCA2010
Memcached, presented to LCA2010Memcached, presented to LCA2010
Memcached, presented to LCA2010
 
Jspx Jdc2010
Jspx Jdc2010Jspx Jdc2010
Jspx Jdc2010
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
 
What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?
 
Optaros Surf Code Camp Introduction
Optaros Surf Code Camp IntroductionOptaros Surf Code Camp Introduction
Optaros Surf Code Camp Introduction
 
Web Performance Acceleration with Strangeloop AS1000
Web Performance Acceleration with Strangeloop AS1000Web Performance Acceleration with Strangeloop AS1000
Web Performance Acceleration with Strangeloop AS1000
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJS
 
MarvinSketch and MarvinView: Tips And Tricks: US UGM 2008
MarvinSketch and MarvinView: Tips And Tricks: US UGM 2008MarvinSketch and MarvinView: Tips And Tricks: US UGM 2008
MarvinSketch and MarvinView: Tips And Tricks: US UGM 2008
 
Cross-Platform Mobile Chemistry Apps
Cross-Platform Mobile Chemistry AppsCross-Platform Mobile Chemistry Apps
Cross-Platform Mobile Chemistry Apps
 
Web(abap introduction)
Web(abap introduction)Web(abap introduction)
Web(abap introduction)
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

The Radeox Wiki Render Engine

  • 1. The Radeox Wiki Render Engine Stephan Schmidt
  • 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. Radeox Render __Stephan__ <b>Stephan</b> Engine Seite 3
  • 4. Types Custom Parser Render Regex Engine Engine Generated Parser Seite 4
  • 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. 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. 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. 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. 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
  • 11. Radeox Future • Standard markup? • Javascript render engine? • Parser based render engine with local contexts Seite 10
  • 12. Markups? h1. TextileHeader1 h2. TextileHeader2 h3. TextileHeader3 ==Wikipediasection== ===WikipediaSubsection=== ====WikipediaSub-subsection==== 1 RadeoxFirstOrderHeading 1.1 RadeoxSecondOrderHeading 1.1.1 RadeoxThirdOrderHeading Seite 11
  • 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. 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. 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. Thanks Matthias L. Jugel Fraunhofer FIRST matthias.jugel@first.fraunhofer.de Stephan J. Schmidt Fraunhofer FIRST stephan.schmidt@first.fraunhofer.de Seite 15