alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Friki example source code file (HTMLRenderer.java)

This example Friki source code file (HTMLRenderer.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Friki tags/keywords

content, htmlrenderer, io, ioexception, map, string, string, stringbuffer, stringfetcher, stringreader, stringreader, stringwriter, stringwriter, templateengine, templateengine, util

The Friki HTMLRenderer.java source code

package com.efsol.friki;

import java.util.Map;
import java.util.HashMap;
import java.io.StringReader;
import java.io.Writer;
import java.io.StringWriter;
import java.io.IOException;

import org.stringtree.factory.CachedStringFetcher;
import org.stringtree.factory.StringFetcher;
import org.stringtree.factory.memory.MapStringRepository;
import org.stringtree.template.TemplateEngine;
import org.stringtree.util.tract.Tract;

public class HTMLRenderer implements Renderer
{
	private TemplateEngine engine;
	private ContentFilter filter;
	private StringFetcher templates;
	private String unknown;

	public HTMLRenderer(ContentFilter filter, StringFetcher templates,
		String unknown)
	{
		engine = new TemplateEngine('@');
		this.filter = filter;
		this.templates = new CachedStringFetcher(templates);
		this.unknown = unknown;
	}

	private String convert(String content)
		throws IOException
	{
		StringWriter out = new StringWriter();
		filter.filter(new StringReader(content), out);
		return out.toString();
	}

	private String splitTitle(String name)
	{
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < name.length(); ++i)
		{
			char c = name.charAt(i);
			if (c == '_')
			{
				buf.append(' ');
			}
			else
			{
				if (i > 0 && Character.isUpperCase(c))
				{
					buf.append(' ');
				}
				buf.append(c);
			}
		}

		return buf.toString();
	}

	private void putDefaultValues(Map map)
	{
		map.put("previous.version", "old/EmptyPage");
		map.put("page.name", "old/EmptyPage");
		map.put("last.edit", "never");
	}

	public void render(Tract page, String mode, Writer out, boolean isFiltered)
		throws IOException
	{
		String content = page.getContent();
		if (isFiltered)
		{
			content = convert(content);
		}

		Map tokens = new HashMap();
		putDefaultValues(tokens);

		tokens.putAll(page);
		tokens.put("CONTENT", content);
		tokens.put("TITLE", splitTitle((String)tokens.get("page.name")));

		String template = templates.get(mode);
		engine.expand(new StringReader(template), out, new MapStringRepository(tokens));
	}
}

Other Friki examples (source code examples)

Here is a short list of links related to this Friki HTMLRenderer.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.