WIP hashtags
This commit is contained in:
parent
c790a0064c
commit
bfa0fdcecf
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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/"))
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user