package gutenberg.pegdown.plugin;
import org.parboiled.Rule;
import org.parboiled.common.Reference;
import org.parboiled.support.StringBuilderVar;
import org.pegdown.Parser;
import org.pegdown.plugins.BlockPluginParser;
/**
* @author <a href="http://twitter.com/aloyer">@aloyer</a>
*/
public class LinkContentPlugin extends Parser implements BlockPluginParser {
public final Reference<Parser> delegate;
public LinkContentPlugin(Reference<Parser> delegate) {
super(ALL, 1000l, DefaultParseRunnerProvider);
this.delegate = delegate;
}
@Override
public Rule[] blockPluginRules() {
return new Rule[]{FootnoteContent()};
}
public Rule FootnoteContent() {
StringBuilderVar ref = new StringBuilderVar();
StringBuilderVar txt = new StringBuilderVar();
return NodeSequence(
'[',
OneOrMore(TestNot(']'), ANY, ref.append(matchedChar())),
']', ':', Sp(),
ZeroOrMore(TestNot(BlankLine()), ANY, txt.append(matchedChar())),
FirstOf(BlankLine(), EOI),
push(new LinkContentNode(ref.getString(), txt.getString())));
}
}