WIP hashtags

This commit is contained in:
erik-everardo 2024-02-10 11:57:13 -06:00
parent c790a0064c
commit bfa0fdcecf
3 changed files with 44 additions and 8 deletions

View File

@ -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)
}
}
}

View File

@ -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/"))
}
}

View File

@ -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(