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.common.CoilImageLoader
|
||||||
import com.isolaatti.databinding.FragmentMarkdownEditingBinding
|
import com.isolaatti.databinding.FragmentMarkdownEditingBinding
|
||||||
import com.isolaatti.databinding.FragmentMarkdownPreviewBinding
|
import com.isolaatti.databinding.FragmentMarkdownPreviewBinding
|
||||||
|
import com.isolaatti.markdown.HashtagMarkwonPlugin
|
||||||
|
import com.isolaatti.markdown.RelativePathMarkwonPlugin
|
||||||
import com.isolaatti.posting.posts.presentation.CreatePostViewModel
|
import com.isolaatti.posting.posts.presentation.CreatePostViewModel
|
||||||
import dagger.hilt.EntryPoint
|
import dagger.hilt.EntryPoint
|
||||||
import io.noties.markwon.AbstractMarkwonPlugin
|
import io.noties.markwon.AbstractMarkwonPlugin
|
||||||
@ -28,16 +30,10 @@ class MarkdownPreviewFragment : Fragment() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
markwon = Markwon.builder(requireContext())
|
markwon = Markwon.builder(requireContext())
|
||||||
.usePlugin(object: AbstractMarkwonPlugin() {
|
.usePlugin(RelativePathMarkwonPlugin())
|
||||||
override fun configureConfiguration(builder: MarkwonConfiguration.Builder) {
|
|
||||||
builder
|
|
||||||
.imageDestinationProcessor(
|
|
||||||
ImageDestinationProcessorRelativeToAbsolute
|
|
||||||
.create("https://isolaatti.com/"))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.usePlugin(CoilImagesPlugin.create(requireContext(), CoilImageLoader.imageLoader))
|
.usePlugin(CoilImagesPlugin.create(requireContext(), CoilImageLoader.imageLoader))
|
||||||
.usePlugin(LinkifyPlugin.create())
|
.usePlugin(LinkifyPlugin.create())
|
||||||
|
.usePlugin(HashtagMarkwonPlugin())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user