bib2json
Version:
Javascript parsing of Bibtex to JSON for nodejs and the browser.
62 lines (52 loc) • 2.5 kB
JavaScript
describe("BaseCases", function() {
it("Parse an empty string without errors or results", function() {
var result = BibtexParser(' \t\t\n \n\n');
expect(result.entries.length).toEqual(0);
expect(result.errors.length).toEqual(0);
});
it("Parse braces within braces", function() {
var result = BibtexParser('@book { pollock, title={{{A}} very {Big} Book.} }')
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('A very Big Book.');
});
it("Parse braces within quotes", function() {
var result = BibtexParser('@book { pollock, title="{A} very {Big} Book."}')
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('A very Big Book.');
});
it("Parse quotes within braces", function() {
var result = BibtexParser('@book { pollock, title="{A} very {"Big"} Book."}');
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('A very "Big" Book.');
});
it("Respect backslashes", function() {
var text = '@book { pollock, title="{A} \\\\very \\{{Big} \\"Book\\"."}';
var result = BibtexParser(text);
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('A \\very {Big "Book".');
});
it("Convert some Latex characters to UTF-8", function() {
var result = BibtexParser('@book { pollock, title="\\"{o}\\AA \\^{I}\\alpha " }');
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('\u00f6\u00c5\u00ce\u03b1');
});
it("Expand a predefined macro in the middle an entry", function() {
var text = '@book{ pollock, month = jan, title="A title!" }';
var result = BibtexParser(text);
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.month).toEqual('January');
});
it("Expand a macro at the end of an entry", function() {
var text = '@string \n{ howdy = "well, hello!" }@book{ pollock, title=howdy }';
var result = BibtexParser(text);
expect(result.entries.length).toEqual(1);
expect(result.errors.length).toEqual(0);
expect(result.entries[0].Fields.title).toEqual('well, hello!');
});
});