From 09b7fc8d0c617e57fd94d5315d5302a6cd512188 Mon Sep 17 00:00:00 2001 From: Kailash Nadh Date: Fri, 2 Nov 2018 16:08:54 +0530 Subject: [PATCH] Refactor and move FirstName LastName functions to the Subscriber model --- models/models.go | 29 +++++++++++++++++++++++++++++ runner/runner.go | 21 --------------------- todo | 1 - 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/models/models.go b/models/models.go index b121267..87963ca 100644 --- a/models/models.go +++ b/models/models.go @@ -6,6 +6,7 @@ import ( "fmt" "html/template" "regexp" + "strings" "github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx/types" @@ -233,3 +234,31 @@ func (c *Campaign) CompileTemplate(f template.FuncMap) error { c.Tpl = out return nil } + +// FirstName splits the name by spaces and returns the first chunk +// of the name that's greater than 2 characters in length, assuming +// that it is the subscriber's first name. +func (s *Subscriber) FirstName() string { + for _, s := range strings.Split(s.Name, " ") { + if len(s) > 2 { + return s + } + } + + return s.Name +} + +// LastName splits the name by spaces and returns the last chunk +// of the name that's greater than 2 characters in length, assuming +// that it is the subscriber's last name. +func (s *Subscriber) LastName() string { + chunks := strings.Split(s.Name, " ") + for i := len(chunks) - 1; i >= 0; i-- { + chunk := chunks[i] + if len(chunk) > 2 { + return chunk + } + } + + return s.Name +} diff --git a/runner/runner.go b/runner/runner.go index 13bb3f6..a81c373 100644 --- a/runner/runner.go +++ b/runner/runner.go @@ -5,7 +5,6 @@ import ( "fmt" "html/template" "log" - "strings" "sync" "time" @@ -327,26 +326,6 @@ func (r *Runner) TemplateFuncs(c *models.Campaign) template.FuncMap { return template.HTML(fmt.Sprintf(`campaign`, fmt.Sprintf(r.cfg.ViewTrackURL, campUUID, subUUID))) }, - "FirstName": func(name string) string { - for _, s := range strings.Split(name, " ") { - if len(s) > 2 { - return s - } - } - - return name - }, - "LastName": func(name string) string { - s := strings.Split(name, " ") - for i := len(s) - 1; i >= 0; i-- { - chunk := s[i] - if len(chunk) > 2 { - return chunk - } - } - - return name - }, "Date": func(layout string) string { if layout == "" { layout = time.ANSIC diff --git a/todo b/todo index f7bc3f1..425a780 100644 --- a/todo +++ b/todo @@ -1,6 +1,5 @@ - Add quote support to Quill link feature so that Track function can be inserted - Make {{ template }} a Regex check to account for spaces -- Clicking on "all subscribers" from a list subscriber view doesn't do anything - Add css inliner - Duplicate mails to subscribers in multiple lists under one campaign?