diff --git a/app/src/main/java/com/isolaatti/markdown/HashtagMarkwonPlugin.kt b/app/src/main/java/com/isolaatti/markdown/HashtagMarkwonPlugin.kt new file mode 100644 index 0000000..fd8f0ea --- /dev/null +++ b/app/src/main/java/com/isolaatti/markdown/HashtagMarkwonPlugin.kt @@ -0,0 +1,25 @@ +package com.isolaatti.markdown + +import android.text.SpannableString +import android.text.Spanned +import android.text.style.ClickableSpan +import android.view.View +import android.widget.TextView +import io.noties.markwon.AbstractMarkwonPlugin + +class HashtagMarkwonPlugin : AbstractMarkwonPlugin() { + + override fun beforeSetText(textView: TextView, markdown: Spanned) { + val matches = "#(\\w|-|_)+".toRegex().findAll(markdown) + val spannable = SpannableString(markdown) + matches.forEach { match -> + val clickableSpan = object: ClickableSpan() { + override fun onClick(widget: View) { + TODO("Not yet implemented") + } + + } + spannable.setSpan(clickableSpan, match.range.first, match.range.last, 1) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/markdown/RelativePathMarkwonPlugin.kt b/app/src/main/java/com/isolaatti/markdown/RelativePathMarkwonPlugin.kt new file mode 100644 index 0000000..edc7246 --- /dev/null +++ b/app/src/main/java/com/isolaatti/markdown/RelativePathMarkwonPlugin.kt @@ -0,0 +1,15 @@ +package com.isolaatti.markdown + +import io.noties.markwon.AbstractMarkwonPlugin +import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute + +class RelativePathMarkwonPlugin : AbstractMarkwonPlugin() { + + override fun configureConfiguration(builder: MarkwonConfiguration.Builder) { + builder + .imageDestinationProcessor( + ImageDestinationProcessorRelativeToAbsolute + .create("https://isolaatti.com/")) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownPreviewFragment.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownPreviewFragment.kt index f51d86b..ff0a73e 100644 --- a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownPreviewFragment.kt +++ b/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownPreviewFragment.kt @@ -10,6 +10,8 @@ import androidx.fragment.app.activityViewModels import com.isolaatti.common.CoilImageLoader import com.isolaatti.databinding.FragmentMarkdownEditingBinding import com.isolaatti.databinding.FragmentMarkdownPreviewBinding +import com.isolaatti.markdown.HashtagMarkwonPlugin +import com.isolaatti.markdown.RelativePathMarkwonPlugin import com.isolaatti.posting.posts.presentation.CreatePostViewModel import dagger.hilt.EntryPoint import io.noties.markwon.AbstractMarkwonPlugin @@ -28,16 +30,10 @@ class MarkdownPreviewFragment : Fragment() { super.onCreate(savedInstanceState) markwon = Markwon.builder(requireContext()) - .usePlugin(object: AbstractMarkwonPlugin() { - override fun configureConfiguration(builder: MarkwonConfiguration.Builder) { - builder - .imageDestinationProcessor( - ImageDestinationProcessorRelativeToAbsolute - .create("https://isolaatti.com/")) - } - }) + .usePlugin(RelativePathMarkwonPlugin()) .usePlugin(CoilImagesPlugin.create(requireContext(), CoilImageLoader.imageLoader)) .usePlugin(LinkifyPlugin.create()) + .usePlugin(HashtagMarkwonPlugin()) .build() } override fun onCreateView(