package gutenberg.pegdown.plugin;
import org.parboiled.BaseParser;
import org.parboiled.Rule;
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 AttributesPlugin extends Parser implements BlockPluginParser {
public AttributesPlugin() {
super(ALL, 1000l, DefaultParseRunnerProvider);
}
@Override
public Rule[] blockPluginRules() {
return new Rule[]{attributesRules()};
}
public Rule attributesRules() {
StringBuilderVar text = new StringBuilderVar();
return NodeSequence(
Sp(),
"{",
OneOrMore(TestNot("}"), TestNot(Newline()), BaseParser.ANY, text.append(matchedChar())),
"}",
Sp(),
Newline(),
push(new AttributesNode(text.getString()))
);
}
}