package fitnesse.wikitext.parser;
import fitnesse.html.HtmlUtil;
import java.util.List;
public class AnchorReference extends SymbolType implements Rule, Translation {
public AnchorReference() {
super("AnchorReference");
wikiMatcher(new Matcher().string(".#"));
wikiRule(this);
htmlTranslation(this);
}
@Override
public Maybe<Symbol> parse(Symbol current, Parser parser) {
List<Symbol> tokens = parser.moveNext(new SymbolType[] {SymbolType.Text});
if (tokens.isEmpty()) return Symbol.nothing;
String anchor = tokens.get(0).getContent();
if (!ScanString.isWord(anchor)) return Symbol.nothing;
return new Maybe<>(current.add(tokens.get(0)));
}
@Override
public String toTarget(Translator translator, Symbol symbol) {
String name = translator.translate(symbol.childAt(0));
return HtmlUtil.makeLink("#" + name, ".#" + name).html();
}
}