⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlrenderer.java

📁 jsp写的wiki.比较新
💻 JAVA
字号:
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));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -