add support for imgur URLs
parent
22e5e12806
commit
1aac0973fc
|
@ -118,12 +118,15 @@ object String {
|
|||
}
|
||||
|
||||
private val imgUrlPattern = """.*\.(jpg|jpeg|png|gif)$""".r.pattern
|
||||
private val imgurRegex = """https?://imgur\.com/(\w+)""".r
|
||||
|
||||
private def urlToImgUnsafe(url: String): Option[String] = {
|
||||
imgUrlPattern.matcher(url).matches && !url.contains(s"://$netDomain")
|
||||
} option s"""<img class="embed" src="$url"/>"""
|
||||
private def urlToImgUnsafe(url: String): Option[String] = (url match {
|
||||
case imgurRegex(id) => s"""https://i.imgur.com/$id.jpg""".some
|
||||
case u if imgUrlPattern.matcher(url).matches && !url.contains(s"://$netDomain") => u.some
|
||||
case _ => none
|
||||
}) map { imgUrl => s"""<img class="embed" src="$imgUrl"/>""" }
|
||||
|
||||
private def urlOrImgUnsafe(url: String) = urlToImgUnsafe(url) getOrElse url
|
||||
private def urlOrImgUnsafe(url: String): String = urlToImgUnsafe(url) getOrElse url
|
||||
|
||||
// from https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/core/java/android/text/TextUtils.java#L1361
|
||||
def escapeHtml(s: String): Html = Html(escapeHtmlUnsafe(s))
|
||||
|
|
|
@ -17,10 +17,24 @@ class HtmlTest extends Specification {
|
|||
"detect image" in {
|
||||
val url = "http://zombo.com/pic.jpg"
|
||||
addLinks(s"""img to $url here""") must_== Html {
|
||||
val img = s"""<img src="$url" width="100%" style="max-width:100%" />"""
|
||||
val img = s"""<img class="embed" src="$url"/>"""
|
||||
s"""img to <a rel="nofollow" href="$url" target="_blank">$img</a> here"""
|
||||
}
|
||||
}
|
||||
"detect imgur image URL" in {
|
||||
val url = "https://imgur.com/NXy19Im"
|
||||
val picUrl = "https://i.imgur.com/NXy19Im.jpg"
|
||||
addLinks(s"""img to $url here""") must_== Html {
|
||||
val img = s"""<img class="embed" src="$picUrl"/>"""
|
||||
s"""img to <a rel="nofollow" href="$url" target="_blank">$img</a> here"""
|
||||
}
|
||||
}
|
||||
"ignore imgur gallery URL" in {
|
||||
val url = "https://imgur.com/gallery/pMtTE"
|
||||
addLinks(s"""link to $url here""") must_== Html {
|
||||
s"""link to <a rel="nofollow" href="$url" target="_blank">$url</a> here"""
|
||||
}
|
||||
}
|
||||
// "skip markdown images" in {
|
||||
// val url = "http://zombo.com"
|
||||
// addLinks(s"""img of ![some alt]($url) here""") must_== Html {
|
||||
|
|
Loading…
Reference in New Issue