diff options
| author | Thibaut Horel <thibaut.horel@gmail.com> | 2016-03-15 22:12:44 -0400 |
|---|---|---|
| committer | Thibaut Horel <thibaut.horel@gmail.com> | 2016-03-15 22:12:44 -0400 |
| commit | 58011496071a49e8f5f916a0416c36806ee94614 (patch) | |
| tree | c32bb04676b54ae0718fb68f97b984b970456628 /utils.go | |
| parent | 9a5261e37badd5422b8c16d93a5b1663c4be602f (diff) | |
| download | bibtex-58011496071a49e8f5f916a0416c36806ee94614.tar.gz | |
Add crossref resolution, minor api changes, first template inspired by plain.bst
Diffstat (limited to 'utils.go')
| -rw-r--r-- | utils.go | 26 |
1 files changed, 24 insertions, 2 deletions
@@ -140,7 +140,25 @@ func (r *reader) readLetter() (d rune) { return } -func removeLatexCommands(s string) string { +func squeezeSpaces(s string) string { + var buf bytes.Buffer + space := false + for _, c := range s { + switch c { + case ' ', '\n', '\t': + if !space { + buf.WriteRune(' ') + } + space = true + default: + buf.WriteRune(c) + space = false + } + } + return buf.String() +} + +func UnTex(s string) string { r := newReader(s) var buf bytes.Buffer for c := r.readRune(); c != eof; c = r.readRune() { @@ -163,7 +181,11 @@ func removeLatexCommands(s string) string { buf.WriteRune(c) } } - return string(norm.NFC.Bytes(buf.Bytes())) + s = string(norm.NFC.Bytes(buf.Bytes())) + s = squeezeSpaces(s) + replacer := strings.NewReplacer("---", "—", "--", "–", "~", "\u00A0", + "``", "“", "''", "”", "'", "’", "\"", "”") + return replacer.Replace(s) } // length of a LaTeX string. A special char counts as one, braces count as one |
