com.github.sebhoss.doxia.TextileSink Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of doxia-module-textile Show documentation
Show all versions of doxia-module-textile Show documentation
Doxia module for Textile source documents
The newest version!
/*
* Copyright © 2012 Sebastian Hoß
* This work is free. You can redistribute it and/or modify it under the
* terms of the Do What The Fuck You Want To Public License, Version 2,
* as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
*/
package com.github.sebhoss.doxia;
import java.io.PrintWriter;
import java.io.Writer;
import org.apache.maven.doxia.sink.AbstractTextSink;
import org.apache.maven.doxia.sink.SinkEventAttributes;
/**
* Textile generator.
*
* @see txtstyle.org
*/
@SuppressWarnings("nls")
public class TextileSink extends AbstractTextSink {
private final PrintWriter writer;
/**
* @param writer
* The output writer to use.
*/
public TextileSink(final Writer writer) {
this.writer = new PrintWriter(writer);
}
// Block modifiers
@Override
public void sectionTitle1() {
write("h1. ");
}
@Override
public void sectionTitle1_() {
write(EOL);
}
@Override
public void sectionTitle2() {
write("h2. ");
}
@Override
public void sectionTitle2_() {
write(EOL);
}
@Override
public void sectionTitle3() {
write("h3. ");
}
@Override
public void sectionTitle3_() {
write(EOL);
}
@Override
public void sectionTitle4() {
write("h4. ");
}
@Override
public void sectionTitle4_() {
write(EOL);
}
@Override
public void sectionTitle5() {
write("h5. ");
}
@Override
public void sectionTitle5_() {
write(EOL);
}
@Override
public void paragraph() {
write("p. ");
}
@Override
public void paragraph_() {
write(EOL);
}
@Override
public void comment(final String comment) {
write("###. " + comment + EOL);
}
@Override
public void verbatim(final boolean boxed) {
if (boxed) {
write("bc. ");
} else {
write("pre. ");
}
}
@Override
public void verbatim_() {
write(EOL);
}
// Phrase modifiers
@Override
public void bold() {
write("**");
}
@Override
public void bold_() {
write("**");
}
@Override
public void italic() {
write("__");
}
@Override
public void italic_() {
write("__");
}
@Override
public void monospaced() {
write("@");
}
@Override
public void monospaced_() {
write("@");
}
// Lists
@Override
public void definitionList() {
write("- ");
}
@Override
public void definitionList_() {
write(EOL);
}
@Override
public void definedTerm_() {
write(" ");
}
@Override
public void definition() {
write(":= ");
}
@Override
public void definition_() {
write(" =:" + EOL);
}
// Links and Images
@Override
public void link(final String name) {
write("\"" + name + "\":" + name);
}
@Override
public void anchor(final String name) {
write("\"" + name + "\":" + name);
}
@Override
public void figure() {
write("!");
}
@Override
public void figure_() {
write("!");
}
@Override
public void figureCaption() {
write("(");
}
@Override
public void figureCaption_() {
write(")");
}
@Override
public void figureGraphics(final String name) {
write(name);
}
// Tables
@Override
public void table() {
write("|");
}
@Override
public void table_() {
write(EOL);
}
@Override
public void tableHeaderCell() {
write("_. ");
}
@Override
public void tableHeaderCell_() {
write(" |");
}
@Override
public void tableRow() {
write(EOL + "|");
}
@Override
public void tableCell() {
write(" ");
}
@Override
public void tableCell_() {
write(" |");
}
// Basics
@Override
public void text(final String text) {
write(text);
}
@Override
public void rawText(final String text) {
write("notextile. " + text);
}
@Override
public void lineBreak() {
write(EOL);
}
@Override
public void unknown(final String name, final Object[] requiredParams, final SinkEventAttributes attributes) {
getLog().warn("[Textile Sink] Unknown Sink event: '" + name + "', ignoring!");
}
// Writer specific
@Override
public void flush() {
writer.flush();
}
@Override
public void close() {
writer.close();
}
// Helpers
private void write(final String text) {
writer.write(unifyEOLs(text));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy