diff options
Diffstat (limited to 'helpers/general.go')
-rw-r--r-- | helpers/general.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/helpers/general.go b/helpers/general.go new file mode 100644 index 000000000..208b0d2d3 --- /dev/null +++ b/helpers/general.go @@ -0,0 +1,51 @@ +// Copyright © 2014 Steve Francia <spf@spf13.com>. +// +// Licensed under the Simple Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://opensource.org/licenses/Simple-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package helpers + +import ( + "bytes" + "strings" +) + +func StripHTML(s string) string { + output := "" + + // Shortcut strings with no tags in them + if !strings.ContainsAny(s, "<>") { + output = s + } else { + s = strings.Replace(s, "\n", " ", -1) + s = strings.Replace(s, "</p>", " \n", -1) + s = strings.Replace(s, "<br>", " \n", -1) + s = strings.Replace(s, "</br>", " \n", -1) + + // Walk through the string removing all tags + b := new(bytes.Buffer) + inTag := false + for _, r := range s { + switch r { + case '<': + inTag = true + case '>': + inTag = false + default: + if !inTag { + b.WriteRune(r) + } + } + } + output = b.String() + } + return output +} |