aboutsummaryrefslogtreecommitdiffstats
path: root/render/render.go
diff options
context:
space:
mode:
authorAdam Mathes <adam@trenchant.org>2019-06-08 17:02:44 -0700
committerAdam Mathes <adam@trenchant.org>2019-06-08 17:02:44 -0700
commit97e935a1947291d6b422877906dbb75e22b05e2d (patch)
tree8471a258673a123add31afa20a96a2b29541f5a6 /render/render.go
parenta5490ac27b5fe0d9f3404625844c82d3b6d3d612 (diff)
downloadsnkt-97e935a1947291d6b422877906dbb75e22b05e2d.tar.gz
snkt-97e935a1947291d6b422877906dbb75e22b05e2d.tar.bz2
snkt-97e935a1947291d6b422877906dbb75e22b05e2d.zip
some hacky regex url/img extraction stuff
Diffstat (limited to 'render/render.go')
-rw-r--r--render/render.go33
1 files changed, 31 insertions, 2 deletions
diff --git a/render/render.go b/render/render.go
index bf53208..9698ad8 100644
--- a/render/render.go
+++ b/render/render.go
@@ -15,8 +15,7 @@ import (
var templates map[string]*template.Template
var BASE_TEMPLATE = "base"
-var rel_href *regexp.Regexp
-var rel_src *regexp.Regexp
+var rel_href, rel_src, re_href, re_src *regexp.Regexp
/*
Renderable interface - objects that render themeslves to a []byte and
@@ -86,6 +85,8 @@ func Init() {
}
rel_href = regexp.MustCompile(`href="/(.+)"`)
rel_src = regexp.MustCompile(`src="/(.+)"`)
+ re_href = regexp.MustCompile(`href="(.*?)"`)
+ re_src = regexp.MustCompile(`src="(.*?)"`)
}
/*
@@ -130,6 +131,34 @@ func ResolveURLs(html, prefix string) string {
}
/*
+Finds all URLs that are hrefs
+TODO: replace noisy regex with HTML parser
+*/
+func FindURLs(html string) []string {
+ // bts := []byte(html)
+ hrefs := re_href.FindAllStringSubmatch(html, -1)
+ var urls []string
+ for _, href := range hrefs {
+ urls = append(urls, href[1])
+ }
+ return urls
+}
+
+/*
+Finds all img urls via img src tags
+TODO: replace noisy regex with HTML parser
+*/
+func FindImgs(html string) []string {
+ // bts := []byte(html)
+ srcs := re_src.FindAllStringSubmatch(html, -1)
+ var imgs []string
+ for _, src := range srcs {
+ imgs = append(imgs, src[1])
+ }
+ return imgs
+}
+
+/*
Runs all regex filters specified in config.Config.Filters
*/
func Filter(txt []byte) []byte {