1 package net.pterodactylus.sone.web
3 import com.google.inject.*
5 import freenet.support.api.*
6 import net.pterodactylus.sone.core.*
7 import net.pterodactylus.sone.data.*
8 import net.pterodactylus.sone.database.*
9 import net.pterodactylus.sone.freenet.*
10 import net.pterodactylus.sone.freenet.wot.*
11 import net.pterodactylus.sone.main.*
12 import net.pterodactylus.sone.template.*
13 import net.pterodactylus.sone.text.*
14 import net.pterodactylus.util.template.*
15 import javax.inject.Singleton
17 class WebInterfaceModule : AbstractModule() {
21 fun getTemplateContextFactory(
22 soneAccessor: SoneAccessor,
23 postAccessor: PostAccessor,
24 replyAccessor: ReplyAccessor,
25 identityAccessor: IdentityAccessor,
26 profileAccessor: ProfileAccessor,
27 l10nFilter: L10nFilter,
28 parserFilter: ParserFilter,
29 renderFilter: RenderFilter,
30 linkedElementsFilter: LinkedElementsFilter,
31 unknownDateFilter: UnknownDateFilter,
32 imageLinkFilter: ImageLinkFilter,
35 TemplateContextFactory().apply {
36 addAccessor(Any::class.java, ReflectionAccessor())
37 addAccessor(Collection::class.java, CollectionAccessor())
38 addAccessor(Sone::class.java, soneAccessor)
39 addAccessor(Post::class.java, postAccessor)
40 addAccessor(Reply::class.java, replyAccessor)
41 addAccessor(Album::class.java, AlbumAccessor())
42 addAccessor(Image::class.java, ImageAccessor())
43 addAccessor(Identity::class.java, identityAccessor)
44 addAccessor(Trust::class.java, TrustAccessor())
45 addAccessor(HTTPRequest::class.java, HttpRequestAccessor())
46 addAccessor(Profile::class.java, profileAccessor)
48 addFilter("date", DateFilter())
49 addFilter("html", HtmlFilter())
50 addFilter("replace", ReplaceFilter())
51 addFilter("store", StoreFilter())
52 addFilter("l10n", l10nFilter)
53 addFilter("substring", SubstringFilter())
54 addFilter("xml", XmlFilter())
55 addFilter("change", RequestChangeFilter())
56 addFilter("match", MatchFilter())
57 addFilter("css", CssClassNameFilter())
58 addFilter("js", JavascriptFilter())
59 addFilter("parse", parserFilter)
60 addFilter("shorten", ShortenFilter())
61 addFilter("render", renderFilter)
62 addFilter("linked-elements", linkedElementsFilter)
63 addFilter("render-linked-element", LinkedElementRenderFilter())
64 addFilter("reparse", ReparseFilter())
65 addFilter("unknown", unknownDateFilter)
66 addFilter("format", FormatFilter())
67 addFilter("sort", CollectionSortFilter())
68 addFilter("image-link", imageLinkFilter)
69 addFilter("replyGroup", ReplyGroupFilter())
70 addFilter("in", ContainsFilter())
71 addFilter("unique", UniqueElementFilter())
72 addFilter("mod", ModFilter())
73 addFilter("paginate", PaginationFilter())
75 addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER)
76 addProvider(loaders.templateProvider)
80 fun getSoneAccessor(core: Core, timeTextConverter: TimeTextConverter) =
81 SoneAccessor(core, timeTextConverter)
84 fun getPostAccessor(core: Core) =
88 fun getReplyAccessor(core: Core) =
92 fun getIdentityAccessor(core: Core) =
93 IdentityAccessor(core)
96 fun getProfileAccessor(core: Core) =
100 fun getL10nFilter(l10n: BaseL10n) =
104 fun getParserFilter(core: Core, soneTextParser: SoneTextParser) =
105 ParserFilter(core, soneTextParser)
108 fun getRenderFilter(soneProvider: SoneProvider, soneTextParser: SoneTextParser, htmlFilter: HtmlFilter) =
109 RenderFilter(soneProvider, soneTextParser, htmlFilter)
112 fun getLinkedElementsFilter(elementLoader: ElementLoader) =
113 LinkedElementsFilter(elementLoader)
116 fun getUnknownDateFilter(l10n: BaseL10n) =
117 UnknownDateFilter(l10n, "View.Sone.Text.UnknownDate")
120 fun getImageLinkFilter(core: Core) =
121 ImageLinkFilter(core)