001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * bstefanescu 011 * 012 * $Id$ 013 */ 014 015package org.nuxeo.ecm.platform.rendering.wiki; 016 017import java.io.IOException; 018import java.io.Reader; 019import java.io.Writer; 020import java.util.ArrayList; 021import java.util.HashMap; 022import java.util.List; 023import java.util.Map; 024 025import org.apache.commons.logging.Log; 026import org.apache.commons.logging.LogFactory; 027import org.wikimodel.wem.WikiParserException; 028import org.wikimodel.wem.common.CommonWikiParser; 029 030/** 031 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 032 */ 033public class WikiSerializer { 034 035 public static final Log log = LogFactory.getLog(WikiSerializer.class); 036 037 protected final CommonWikiParser parser; 038 039 protected final Map<String, WikiMacro> macros = new HashMap<String, WikiMacro>(); 040 041 protected final List<WikiFilter> filters = new ArrayList<WikiFilter>(); 042 043 public WikiSerializer() { 044 parser = new CommonWikiParser(); 045 registerMacro(new TocMacro()); 046 } 047 048 public void registerMacro(WikiMacro macro) { 049 macros.put(macro.getName(), macro); 050 } 051 052 public void addFilter(WikiFilter filter) { 053 filters.add(filter); 054 } 055 056 public void serialize(Reader reader, Writer writer) throws IOException, WikiParserException { 057 WikiSerializerHandler serializer = new WikiSerializerHandler(this); 058 parser.parse(reader, serializer); 059 serializer.getWriter().writeTo(serializer, writer); 060 writer.flush(); 061 } 062 063}