Browse Source

Refactor and move FirstName LastName functions to the Subscriber model

Kailash Nadh 6 years ago
parent
commit
09b7fc8d0c
3 changed files with 29 additions and 22 deletions
  1. 29 0
      models/models.go
  2. 0 21
      runner/runner.go
  3. 0 1
      todo

+ 29 - 0
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
+}

+ 0 - 21
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(`<img src="%s" alt="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

+ 0 - 1
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?