diff --git a/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupBuilderFactory.kt b/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt similarity index 63% rename from postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupBuilderFactory.kt rename to postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt index 6fbed2b2..6b4bd9ac 100644 --- a/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupBuilderFactory.kt +++ b/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt @@ -6,19 +6,19 @@ import com.insanusmokrassar.postssystem.core.post.PostId import com.insanusmokrassar.postssystem.core.post.RegisteredPost import com.insanusmokrassar.postssystem.core.post.repo.ReadPostsRepo -abstract class AbstractMarkupBuilderFactory( +abstract class AbstractMarkupPlugin( @Suppress("MemberVisibilityCanBePrivate") protected val postsRepo: ReadPostsRepo, @Suppress("MemberVisibilityCanBePrivate") protected val postsContentRepo: ReadContentRepo -) : MarkupBuilderFactory { - override suspend fun drawOn(target: MarkupTarget, forPost: PostId) { - val post = postsRepo.getPostById(forPost) ?: return +) : MarkupPlugin { + override suspend fun drawMarkupBuilder(on: MarkupTarget, postId: PostId) { + val post = postsRepo.getPostById(postId) ?: return val contents = post.content.mapNotNull { postsContentRepo.getContentById(it) } - drawOn(target, post, contents) + drawMarkupBuilder(on, post, contents) } - abstract suspend fun drawOn(target: MarkupTarget, forPost: RegisteredPost, content: List) + abstract suspend fun drawMarkupBuilder(target: MarkupTarget, forPost: RegisteredPost, content: List) } diff --git a/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupBuilderFactory.kt b/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupBuilderFactory.kt deleted file mode 100644 index 4034b9f1..00000000 --- a/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupBuilderFactory.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.insanusmokrassar.postssystem.markups.core - -import com.insanusmokrassar.postssystem.core.post.PostId - -/** - * System of markup for some target publishing system, which is drawing on [MarkupTarget]. - * - * Some markup system which knows, how to create the markup system inside of some [MarkupTarget]. This interface - * will be implemented by creators like: - * - * * Telegram - * * Web - * * etc. - * - * [MarkupTarget] here is just a platform, which can be used by [MarkupBuilderFactory] to create markup inside. - * - * For example, it could be some creator like "TelegramForHTMLMarkupBuilder" - */ -interface MarkupBuilderFactory { - suspend fun drawOn(target: MarkupTarget, forPost: PostId) -} diff --git a/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt b/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt new file mode 100644 index 00000000..4132cf62 --- /dev/null +++ b/postssystem.markups.core/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt @@ -0,0 +1,35 @@ +package com.insanusmokrassar.postssystem.markups.core + +import com.insanusmokrassar.postssystem.core.post.PostId + +/** + * That is the plugin for platform, which is able to be drawn on the [MarkupTarget]. + * + * * Plugin could be some Telegram plugin + * * [MarkupTarget] could be web. + */ +interface MarkupPlugin { + /** + * This name will be used in `select`-questions on site + */ + val name: String + + /** + * Link to icon which will be used for links onto this plugin + */ + val iconLink: String? + + /** + * Drawing on [MarkupTarget]. + * + * As a result, plugin must use [MarkupTarget] as a canvas to create the builder of markup. This fun + * will be implemented by creators like: + * + * * Telegram + * * Web + * * etc. + * + * For example, it could be some creator like "TelegramForHTMLMarkupBuilder" + */ + suspend fun drawMarkupBuilder(on: MarkupTarget, postId: PostId) +} \ No newline at end of file diff --git a/postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt b/postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt similarity index 72% rename from postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt rename to postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt index 9f591ded..71bdb943 100644 --- a/postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt +++ b/postssystem.markups.html/src/jsMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt @@ -2,10 +2,10 @@ package com.insanusmokrassar.postssystem.markups.html import com.insanusmokrassar.postssystem.core.content.api.ReadContentRepo import com.insanusmokrassar.postssystem.core.post.repo.ReadPostsRepo -import com.insanusmokrassar.postssystem.markups.core.AbstractMarkupBuilderFactory +import com.insanusmokrassar.postssystem.markups.core.AbstractMarkupPlugin import kotlinx.html.FlowContent -abstract class HtmlMarkupBuilderFactory( +abstract class HtmlMarkupPlugin( postsRepo: ReadPostsRepo, postsContentRepo: ReadContentRepo -) : AbstractMarkupBuilderFactory(postsRepo, postsContentRepo) +) : AbstractMarkupPlugin(postsRepo, postsContentRepo) diff --git a/postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt b/postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt similarity index 72% rename from postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt rename to postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt index 9f591ded..71bdb943 100644 --- a/postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupBuilderFactory.kt +++ b/postssystem.markups.html/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/markups/html/HtmlMarkupPlugin.kt @@ -2,10 +2,10 @@ package com.insanusmokrassar.postssystem.markups.html import com.insanusmokrassar.postssystem.core.content.api.ReadContentRepo import com.insanusmokrassar.postssystem.core.post.repo.ReadPostsRepo -import com.insanusmokrassar.postssystem.markups.core.AbstractMarkupBuilderFactory +import com.insanusmokrassar.postssystem.markups.core.AbstractMarkupPlugin import kotlinx.html.FlowContent -abstract class HtmlMarkupBuilderFactory( +abstract class HtmlMarkupPlugin( postsRepo: ReadPostsRepo, postsContentRepo: ReadContentRepo -) : AbstractMarkupBuilderFactory(postsRepo, postsContentRepo) +) : AbstractMarkupPlugin(postsRepo, postsContentRepo)