X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterfaceModule.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterfaceModule.kt;h=dd5e9f66d7c1e06ec4b5d451c9b8649ad2de40bf;hp=0000000000000000000000000000000000000000;hb=03cec6a6772c2d836d94864adddaf544cbe9d72f;hpb=6f1f26e3998cfef155b0cf59152827accea70d30 diff --git a/src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt b/src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt new file mode 100644 index 0000000..dd5e9f6 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt @@ -0,0 +1,128 @@ +package net.pterodactylus.sone.web + +import com.google.inject.* +import freenet.l10n.* +import freenet.support.api.* +import net.pterodactylus.sone.core.* +import net.pterodactylus.sone.data.* +import net.pterodactylus.sone.database.* +import net.pterodactylus.sone.freenet.* +import net.pterodactylus.sone.freenet.wot.* +import net.pterodactylus.sone.main.* +import net.pterodactylus.sone.template.* +import net.pterodactylus.sone.text.* +import net.pterodactylus.util.template.* +import javax.inject.* +import javax.inject.Singleton + +class WebInterfaceModule : AbstractModule() { + + @Provides + @Singleton + fun getTemplateContextFactory( + soneAccessor: SoneAccessor, + postAccessor: PostAccessor, + replyAccessor: ReplyAccessor, + identityAccessor: IdentityAccessor, + profileAccessor: ProfileAccessor, + l10nFilter: L10nFilter, + parserFilter: ParserFilter, + renderFilter: RenderFilter, + linkedElementsFilter: LinkedElementsFilter, + unknownDateFilter: UnknownDateFilter, + imageLinkFilter: ImageLinkFilter, + loaders: Loaders + ) = + TemplateContextFactory().apply { + addAccessor(Any::class.java, ReflectionAccessor()) + addAccessor(Collection::class.java, CollectionAccessor()) + addAccessor(Sone::class.java, soneAccessor) + addAccessor(Post::class.java, postAccessor) + addAccessor(Reply::class.java, replyAccessor) + addAccessor(Album::class.java, AlbumAccessor()) + addAccessor(Image::class.java, ImageAccessor()) + addAccessor(Identity::class.java, identityAccessor) + addAccessor(Trust::class.java, TrustAccessor()) + addAccessor(HTTPRequest::class.java, HttpRequestAccessor()) + addAccessor(Profile::class.java, profileAccessor) + + addFilter("date", DateFilter()) + addFilter("html", HtmlFilter()) + addFilter("replace", ReplaceFilter()) + addFilter("store", StoreFilter()) + addFilter("l10n", l10nFilter) + addFilter("substring", SubstringFilter()) + addFilter("xml", XmlFilter()) + addFilter("change", RequestChangeFilter()) + addFilter("match", MatchFilter()) + addFilter("css", CssClassNameFilter()) + addFilter("js", JavascriptFilter()) + addFilter("parse", parserFilter) + addFilter("shorten", ShortenFilter()) + addFilter("render", renderFilter) + addFilter("linked-elements", linkedElementsFilter) + addFilter("render-linked-element", LinkedElementRenderFilter()) + addFilter("reparse", ReparseFilter()) + addFilter("unknown", unknownDateFilter) + addFilter("format", FormatFilter()) + addFilter("sort", CollectionSortFilter()) + addFilter("image-link", imageLinkFilter) + addFilter("replyGroup", ReplyGroupFilter()) + addFilter("in", ContainsFilter()) + addFilter("unique", UniqueElementFilter()) + addFilter("mod", ModFilter()) + addFilter("paginate", PaginationFilter()) + + addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER) + addProvider(loaders.templateProvider) + } + + @Provides + fun getSoneAccessor(core: Core, timeTextConverter: TimeTextConverter) = + SoneAccessor(core, timeTextConverter) + + @Provides + fun getPostAccessor(core: Core) = + PostAccessor(core) + + @Provides + fun getReplyAccessor(core: Core) = + ReplyAccessor(core) + + @Provides + fun getIdentityAccessor(core: Core) = + IdentityAccessor(core) + + @Provides + fun getProfileAccessor(core: Core) = + ProfileAccessor(core) + + @Provides + fun getL10nFilter(l10n: BaseL10n) = + L10nFilter(l10n) + + @Provides + fun getParserFilter(core: Core, soneTextParser: SoneTextParser) = + ParserFilter(core, soneTextParser) + + @Provides + fun getRenderFilter(soneProvider: SoneProvider, soneTextParser: SoneTextParser, htmlFilter: HtmlFilter) = + RenderFilter(soneProvider, soneTextParser, htmlFilter) + + @Provides + fun getLinkedElementsFilter(elementLoader: ElementLoader) = + LinkedElementsFilter(elementLoader) + + @Provides + fun getUnknownDateFilter(l10n: BaseL10n) = + UnknownDateFilter(l10n, "View.Sone.Text.UnknownDate") + + @Provides + fun getImageLinkFilter(core: Core) = + ImageLinkFilter(core) + + @Provides + @Named("toadletPathPrefix") + fun getPathPrefix(): String = "/Sone/" + +}