/*
- * Sone - ParserFilter.java - Copyright © 2011–2015 David Roden
+ * Sone - ParserFilter.java - Copyright © 2011–2016 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import java.util.List;
import java.util.Map;
+import javax.annotation.Nonnull;
+
import net.pterodactylus.sone.core.Core;
import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.text.FreemailPart;
import net.pterodactylus.sone.text.FreenetLinkPart;
import net.pterodactylus.sone.text.LinkPart;
import net.pterodactylus.sone.text.Part;
import net.pterodactylus.sone.text.SonePart;
import net.pterodactylus.sone.text.SoneTextParser;
import net.pterodactylus.sone.text.SoneTextParserContext;
-import net.pterodactylus.sone.web.page.FreenetRequest;
import net.pterodactylus.util.template.Filter;
import net.pterodactylus.util.template.Template;
import net.pterodactylus.util.template.TemplateContext;
import net.pterodactylus.util.template.TemplateContextFactory;
import net.pterodactylus.util.template.TemplateParser;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
/**
* Filter that filters a given text through a {@link SoneTextParser}.
*
if (sone instanceof String) {
sone = core.getSone((String) sone).orNull();
}
- FreenetRequest request = (FreenetRequest) templateContext.get("request");
- SoneTextParserContext context = new SoneTextParserContext(request, (Sone) sone);
+ SoneTextParserContext context = new SoneTextParserContext((Sone) sone);
StringWriter parsedTextWriter = new StringWriter();
Iterable<Part> parts = soneTextParser.parse(text, context);
if (length > -1) {
render(writer, (SonePart) part);
} else if (part instanceof PostPart) {
render(writer, (PostPart) part);
+ } else if (part instanceof FreemailPart) {
+ render(writer, (FreemailPart) part);
} else if (part instanceof Iterable<?>) {
render(writer, (Iterable<Part>) part);
}
*/
private void render(Writer writer, PostPart postPart) {
SoneTextParser parser = new SoneTextParser(core, core);
- SoneTextParserContext parserContext = new SoneTextParserContext(null, postPart.getPost().getSone());
+ SoneTextParserContext parserContext = new SoneTextParserContext(postPart.getPost().getSone());
Iterable<Part> parts = parser.parse(postPart.getPost().getText(), parserContext);
StringBuilder excerpt = new StringBuilder();
for (Part part : parts) {
renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone");
}
+ private void render(@Nonnull Writer writer, @Nonnull FreemailPart freemailPart) {
+ Optional<Sone> sone = core.getSone(freemailPart.getIdentityId());
+ String soneName = sone.transform(new Function<Sone, String>() {
+ @Nonnull
+ @Override
+ public String apply(Sone input) {
+ return SoneAccessor.getNiceName(input);
+ }
+ }).or(freemailPart.getIdentityId());
+ renderLink(writer,
+ "/Freemail/NewMessage?to=" + freemailPart.getIdentityId(),
+ String.format("%s@%s.freemail", freemailPart.getEmailLocalPart(), soneName),
+ String.format("%s\n%s@%s.freemail", soneName, freemailPart.getEmailLocalPart(), freemailPart.getFreemailId()),
+ "in-sone");
+ }
+
/**
* Renders the given link.
*