RawString returns a BibTex data structure in its internal representation.
()
| 187 | |
| 188 | // RawString returns a BibTex data structure in its internal representation. |
| 189 | func (bib *BibTex) RawString() string { |
| 190 | var bibtex bytes.Buffer |
| 191 | for k, strvar := range bib.StringVar { |
| 192 | bibtex.WriteString(fmt.Sprintf("@string{%s = {%s}}\n", k, strvar.String())) |
| 193 | } |
| 194 | for _, preamble := range bib.Preambles { |
| 195 | bibtex.WriteString(fmt.Sprintf("@preamble{%s}\n", preamble.RawString())) |
| 196 | } |
| 197 | for _, entry := range bib.Entries { |
| 198 | bibtex.WriteString(fmt.Sprintf("@%s{%s,\n", entry.Type, entry.CiteName)) |
| 199 | for key, val := range entry.Fields { |
| 200 | if i, err := strconv.Atoi(strings.TrimSpace(val.String())); err == nil { |
| 201 | bibtex.WriteString(fmt.Sprintf(" %s = %d,\n", key, i)) |
| 202 | } else { |
| 203 | bibtex.WriteString(fmt.Sprintf(" %s = %s,\n", key, val.RawString())) |
| 204 | } |
| 205 | } |
| 206 | bibtex.Truncate(bibtex.Len() - 2) |
| 207 | bibtex.WriteString(fmt.Sprintf("\n}\n")) |
| 208 | } |
| 209 | return bibtex.String() |
| 210 | } |
| 211 | |
| 212 | // PrettyString pretty prints a BibTex. |
| 213 | func (bib *BibTex) PrettyString() string { |