Nothing
test_that("bibConvert works ok", {
expect_error(bibConvert(tempfile(fileext = ".bib"), tempfile(fileext = ".bib")),
"input file .* doesn't exist")
bibConvert(tempfile(fileext = ".bib"), tempfile(fileext = ".bib"), options = c(h = ""))
bibdir <- system.file("bib", package = "rbibutils")
## file is from
## https://gist.github.com/low-decarie/3831049#file-endnote-xml
## downloaded on 2021-05-14
##
## This doesn't work under devtools since pkgload::system.file
## adds 'inst' again:
## endx_in <- system.file(bibdir, "endnote.xml", package = "rbibutils")
##
## file.path here is more logical anyway
endx_in <- file.path(bibdir, "endnote.xml")
med_in <- file.path(bibdir, "easyPubMedvig.xml")
med_in_no_new_lines <- file.path(bibdir, "easyPubMedvig_no_new_lines.xml")
bibacc <- file.path(bibdir, "latin1accents_utf8.bib")
end_in <- file.path(bibdir, "Putnam1992.end")
litprog280_bib <- file.path(bibdir, "litprog280.bib")
tmp_xml <- tempfile(fileext = ".xml")
tmp_xml2 <- tempfile(fileext = ".xml")
tmp_bib <- tempfile(fileext = ".bib")
tmp_bib2 <- tempfile(fileext = ".bib")
tmp_bib3 <- tempfile(fileext = ".bib")
tmp_bibtex <- tempfile(fileext = ".bibtex")
tmp_biblatex <- tempfile(fileext = ".biblatex")
tmp_bbl <- tempfile(fileext = ".bbl")
tmp_bbl2 <- tempfile(fileext = ".bbl")
tmp_rds <- tempfile(fileext = ".rds")
tmp_R <- tempfile(fileext = ".R")
tmp_ads <- tempfile(fileext = ".ads")
tmp_copac <- tempfile(fileext = ".copac")
tmp_ebi <- tempfile(fileext = ".ebi")
tmp_end <- tempfile(fileext = ".end")
tmp_endx <- tempfile(fileext = ".endx")
tmp_isi <- tempfile(fileext = ".isi")
tmp_med <- tempfile(fileext = ".med")
tmp_nbib <- tempfile(fileext = ".nbib")
tmp2_nbib <- tempfile(fileext = ".nbib")
tmp_ris <- tempfile(fileext = ".ris")
tmp_wordbib <- tempfile(fileext = ".wordbib")
tmp_word <- tempfile(fileext = ".word")
ex0_xml <- file.path(bibdir, "ex0.xml")
bibConvert(ex0_xml, tmp_bib, options = c(nb = ""))
expect_known_value(readLines(tmp_bib), "xml2bib.rds", update = FALSE)
bibConvert(tmp_bib, tmp_ads, options = c(nb = ""))
expect_known_value(readLines(tmp_ads), "bib2ads.rds", update = FALSE)
expect_error(bibConvert(tmp_ads, tmp_bib2),
"import from ADS abstracts format not implemented")
expect_error(bibConvert(tmp_ads, tmp_bib2, informat = "ads"),
"import from ADS abstracts format not implemented")
bibConvert(tmp_bib, tmp_bbl, outformat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(tmp_bbl), "bib2biblatex.rds", update = FALSE)
bibConvert(tmp_bbl, tmp_bib2, informat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(tmp_bib2), "biblatex2bib.rds", update = FALSE)
## TODO: need copac file to test for input from copac
## tmp2 <- bibConvert(tmp_copac, tmp_xml, options = c(h = ""))
## tmp2 <- bibConvert(tmp_copac, tmp_bib3, informat = "copac")
## export to copac is not implemented:
expect_error(bibConvert(tmp_bib, tmp_copac), "export to copac format not implemented")
expect_error(bibConvert(tmp_bib, tmp_ebi, outformat = "ebi"),
"export to EBI XML format not implemented")
## can't export to EBI, so using another file
bibConvert(system.file("bib", "ebi.xml", package = "rbibutils"), tmp_xml2,
informat = "ebi")
bibConvert(tmp_bib, tmp_end)
bibConvert(tmp_bib, tmp_end, outformat = "end", options = c(nb = ""))
expect_known_value(readLines(tmp_end), "bib2end.rds", update = FALSE)
bibConvert(tmp_end, tmp_bib3)
bibConvert(tmp_end, tmp_bib2, informat = "end", options = c(nb = ""))
## github actions gives error on all platforms:
## incomplete final line found on '.../Rtmp770EIj/fileb7c68793fe6.bib'
## expect_known_value(readLines(tmp_bib2), "end2bib1.rds", update = FALSE)
bibConvert(end_in, tmp_bib3, options = c(nb = ""))
## see note above
## expect_known_value(readLines(tmp_bib3), "end2bib2.rds", update = FALSE)
expect_error(bibConvert(tmp_bib3, tmp_endx),
"export to Endnote XML format not implemented")
expect_error(bibConvert(tmp_bib3, tmp_endx, outformat = "endx"),
"export to Endnote XML format not implemented")
expect_message(bibConvert(endx_in, tmp_bib3), "no references to output")
## these raise valgrind erors abput uninitialised values:
## 2021-10-29 Note: restoring, maybe this was fixed when other valgroind
## errors were fixed?
bibConvert(endx_in, tmp_bib3, informat = "endx", options = c(nb = ""))
expect_known_value(readLines(tmp_bib3), "end2bib.rds", update = FALSE)
bibConvert(tmp_bib, tmp_isi, options = c(nb = ""))
expect_known_value(readLines(tmp_isi), "bib2isi.rds", update = FALSE)
bibConvert(tmp_isi, tmp_bib2, options = c(nb = ""))
expect_known_value(readLines(tmp_bib2), "isi2bib.rds", update = FALSE)
expect_error(bibConvert(tmp_bib, tmp_med),
"export to Medline XML format not implemented")
bibConvert(med_in, tmp_bib, informat = "med")
bibConvert(med_in, tmp_bib, informat = "med", outformat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(tmp_bib), "med2bib.rds", update = FALSE)
## issue #4
tmp_meda <- tempfile()
tmp_medb <- tempfile()
bibConvert(infile = med_in, outfile = tmp_meda, informat = "med", outformat = "bib")
bibConvert(infile = med_in_no_new_lines, outfile = tmp_medb, informat = "med", outformat = "bib")
expect_identical(readLines(tmp_meda), readLines(tmp_medb))
unlink(tmp_meda)
unlink(tmp_medb)
## this assignment was used when the above lines were commented out during memory leak tests.
## (but it causes check error on Windows due to BOM)
## tmp_bib <- file.path(bibdir, "bib_from_medin.bib")
bibConvert(tmp_bib, tmp_nbib)
## This
## bibConvert(tmp_nbib, tmp_bib2)
## fails to process the references with messages like:
##
## Warning. Tagged line not in properly started reference.
## Ignored: 'VI - 50'
##
## There is no error, just 0 output references. Apparently tmp_nbib created from
## bib-to-nbib doesn't contain crucial info for each reference.
##
## TODO: maybe exporting a dummy PMID field will resolve this when the input doesn't have
## it? Or give a more informative message?
##
## expect_known_value(readLines(tmp_bib2), "nbib2bib.rds", update = FALSE)
single_nbib <- system.file("bib", "single.nbib", package = "rbibutils")
bibConvert(single_nbib, tmp_bib2)
## when the input file contains PMID the nbib output is read back successfully:
bibConvert(tmp_bib2, tmp2_nbib)
bibConvert(tmp2_nbib, tmp_bib3 )
## use a shorter file in tests
## bibConvert(system.file("bib", "pubmed-balloongui-set.nbib", package = "rbibutils"), tmp_xml)
bibConvert(system.file("bib", "pubmed-balloongui-set_09_31542275.nbib", package = "rbibutils"), tmp_xml)
bibConvert(tmp_bib, tmp_ris, options = c(nb = ""))
expect_known_value(readLines(tmp_ris), "bib2ris.rds", update = FALSE)
bibConvert(tmp_ris, tmp_bib, options = c(nb = ""))
expect_known_value(readLines(tmp_bib), "ris2bib.rds", update = FALSE)
bibConvert(tmp_bib, tmp_xml, options = c(un = ""))
expect_known_value(readLines(tmp_xml), "bib2xml2.rds", update = FALSE)
bibConvert(tmp_bib, tmp_rds, options = c(nb = ""))
## fixes failure starting with R-devel ca. svn rev 84760, due to a change in `person()`
## TODO: after the next R-release resave "bib2rds.rds" and do the test
## when R.version > 4.3.1
##
## A change in person() (or related function) now strips trailing whitespace from names
## which it wasn't doing before (but should have). This is a positive change and can be
## resolved by resaving the 'rds' object "bib2rds.rds". But then the test will fail on R
## versions not having the old person().
##
## Note that tmp_bib in the previous command is from the latex version of
## bibConvert(med_in, tmp_bib, informat = "med"), see further above.
## which emits a space before comma in a name.
##
## TODO: include designated tests that no superficious spaces before commas are emited
## for other converters were they occur (if any).
if(getRversion() <= "4.3.1")
expect_known_value(readRDS(tmp_rds), "bib2rds.rds", update = FALSE)
bib2R <- bibConvert(tmp_bib, tmp_R)
## fixes same problem as above
## TODO: see above
if(getRversion() <= "4.3.1")
expect_known_value(bib2R$bib, "bib2R.rds", update = FALSE)
bibConvert(tmp_rds, tmp_xml, options = c(un = "")) # rds to MODS XML intermediate
if(is.numeric(svnrev <- R.Version()$'svn rev') && svnrev >= 84986)
expect_known_value(readLines(tmp_xml), "rds2xml.rds", update = FALSE)
bibConvert(tmp_rds, tmp_bbl2, outformat = "biblatex", options = c(nb = ""))
if(is.numeric(svnrev <- R.Version()$'svn rev') && svnrev >= 84986)
expect_known_value(readLines(tmp_bbl2), "rds2bbl2.rds", update = FALSE)
bibConvert(tmp_bib, tmp_wordbib)
bibConvert(tmp_bib, tmp_wordbib, outformat = "wordbib", options = c(nb = ""))
expect_known_value(readLines(tmp_wordbib), "bib2wordbib.rds", update = FALSE)
## TODO: this currently misses the authors! Don't know if the culprit is
## the above conversion to wordbib.
bibConvert(tmp_wordbib, tmp_bib3)
bibConvert(tmp_wordbib, tmp_bib3, informat = "wordbib", options = c(nb = ""))
expect_known_value(readLines(tmp_bib3), "wordbib2bib.rds", update = FALSE)
## accept also 'word' since, due to a mixup, the C code was accepting that
bibConvert(tmp_bib, tmp_wordbib, outformat = "word")
bibConvert(tmp_wordbib, tmp_bib3, informat = "word")
## #########################
## -h and -v currently print to standard error and continue
## Without the assignment to tmp2 inside capture.output(..., type = "message")
## the results are printed by devtools::test() and friends.
## -h
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(h = "")), type = "message")
## a <- capture.output(bibConvert(ex0_xml, tmp_bib, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2bib xml_file > bibtex_file", all = FALSE)
##
## The above catch the message by REprintf but then leak memory
## (discovered by valgrind with --leak-check=full --track-origins=yes --show-leak-kinds=all)
##
## The leak seems to come from capture.output() and its interference with testthat. Note
## that I put the above example in one of the Rd files and there was no problem there
## from the check (checks of examples are not run under testthat),
##
## For example in xml2any, help_xml2bibtex() has a bunch of print statements and
## starting from about the one with '-nl, --no-latex' (but not the previous ones)
## REprintf seem not to release some memory. testthat's caputure_output doesn't have
## argument 'type'. so doesn't capture stderr.
##
## So, for now just run the statement to make sure that they work (and similarly for the
## similar commands below. The downside is that the messages apppear in testthat.Rout and, if under devtools,
## on the console, which is unnerving. (:TODO: find a way to fix this)
tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_bib2, outformat = "biblatex", options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2biblatex xml_file > biblatex_file", all = FALSE)
bibConvert(ex0_xml, tmp_bib2, outformat = "biblatex", options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_ads, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2ads xml_file > adsabs_file", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_ads, options = c(h = ""))
## # a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_copac, options = c(h = "")), type = "message")
## # a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_ebi, options = c(h = "")), type = "message")
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_end, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2end xml_file > endnote_file", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_end, options = c(h = ""))
## # a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_endx, options = c(h = "")), type = "message")
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_isi, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2isi xml_file > isi_file", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_isi, options = c(h = ""))
# a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_med, options = c(h = "")), type = "message")
#a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_nbib, options = c(h = "")), type = "message")
#expect_match(a, "", all = FALSE)
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_ris, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2ris xml_file > ris_file", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_ris, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_wordbib, options = c(h = "")), type = "message")
## expect_match(a, "usage: xml2wordbib xml_file > word_file", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_wordbib, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: bib2xml bibtex_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_bib2, tmp_xml, informat = "biblatex", options = c(h = "")), type = "message")
## expect_match(a, "usage: biblatex2xml bibtex_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_bib2, tmp_xml, informat = "biblatex", options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_end, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: end2xml endnote_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_end, tmp_xml, options = c(h = ""))
## # a <- capture.output(tmp2 <- bibConvert(tmp_ads, tmp_xml, options = c(h = "")), type = "message")
## a <- capture.output(tmp2 <- bibConvert(tmp_copac, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: copac2xml copac_file > xml_file", all = FALSE)
## # a <- capture.output(tmp2 <- bibConvert(tmp_ebi, tmp_xml, options = c(h = "")), type = "message")
## a <- capture.output(tmp2 <- bibConvert(tmp_end, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: end2xml endnote_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_end, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_endx, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: endx2xml endnotexml_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_endx, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_isi, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: isi2xml isi_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_isi, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_med, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: med2xml medline_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_med, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_nbib, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: nbib2xml nbib_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_nbib, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_ris, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "ris_file can be replaced with file list or omitted to use as a filter", all = FALSE)
tmp2 <- bibConvert(tmp_ris, tmp_xml, options = c(h = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_wordbib, tmp_xml, options = c(h = "")), type = "message")
## expect_match(a, "usage: wordbib2xml word2007bib_file > xml_file", all = FALSE)
tmp2 <- bibConvert(tmp_wordbib, tmp_xml, options = c(h = ""))
## -v
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(v = "")), type = "message")
## expect_match(a, ".*xml2bib, bibutils suite version", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(v = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(v = "")), type = "message")
## expect_match(a, "bib2xml, bibutils suite version", all = FALSE)
tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(v = ""))
## --debug
## a <- capture.output(tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(debug = "")), type = "message")
## expect_match(a, "-------------------params start ", all = FALSE)
tmp2 <- bibConvert(ex0_xml, tmp_bib, options = c(debug = ""))
## a <- capture.output(tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(verbose = "")), type = "message")
## expect_match(a, "# NUM level = LEVEL 'TAG' = 'VALUE'", all = FALSE)
tmp2 <- bibConvert(tmp_bib, tmp_xml, options = c(verbose = ""))
## --verbose
## a <- capture.output(tmp2 <- bibConvert(litprog280_bib, tmp_xml, options = c(verbose = "")), type = "message")
## expect_match(a, "bib2xml: Cannot find tag 'ISSN-L'", all = FALSE) # Note: there are other unknown tags
tmp2 <- bibConvert(litprog280_bib, tmp_xml, options = c(verbose = ""))
## #########################
cyr_utf8 <- file.path(bibdir, "cyr_utf8.bib")
bibConvert(cyr_utf8, tmp_bib, options = c(o = "cp1251"))
bibConvert(tmp_bib, tmp_xml, options = c(i = "cp1251"))
bibConvert(bibacc, tempfile(fileext = "bib"), outformat = "biblatex")
## #########################
tmpdir <- tempdir()
xampl_fn <- system.file("bib", "xampl_modified.bib", package = "rbibutils")
bibConvert(xampl_fn, tmp_ads, options = c(nb = ""))
expect_known_value(readLines(tmp_ads), "xampl_bib2ads.rds", update = FALSE)
bibConvert(xampl_fn, tmp_bbl, outformat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(tmp_bbl), "xampl2biblatex.rds", update = FALSE)
xampl_fn2 <- file.path(tmpdir, "xampl_bbl2bib.bib")
bibConvert(tmp_bbl, xampl_fn2, informat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(xampl_fn2), "xampl_bbl2bib.rds", update = FALSE)
bibConvert(xampl_fn, tmp_end)
bibConvert(xampl_fn, tmp_end, outformat = "end", options = c(nb = ""))
expect_known_value(readLines(tmp_end), "xampl_bib2end.rds", update = FALSE)
bibConvert(tmp_end, tmp_bib3)
bibConvert(tmp_end, tmp_bib2, informat = "end", options = c(nb = ""))
bibConvert(xampl_fn, tmp_isi, options = c(nb = ""))
expect_known_value(readLines(tmp_isi), "xampl_bib2isi.rds", update = FALSE)
bibConvert(tmp_isi, tmp_bib2, options = c(nb = ""))
expect_known_value(readLines(xampl_fn2), "xampl_isi2bib.rds", update = FALSE)
bibConvert(med_in, tmp_bib2, informat = "med")
bibConvert(med_in, tmp_bib3, informat = "med", outformat = "biblatex", options = c(nb = ""))
expect_known_value(readLines(tmp_bib3), "med2bib.rds", update = FALSE)
## tex.bib
tex_fn <- system.file("bib", "tex.bib", package = "rbibutils")
bibConvert(tex_fn, tmp_ads)
bibConvert(tex_fn, tmp_bibtex)
bibConvert(tex_fn, tmp_biblatex)
bibConvert(tex_fn, tmp_biblatex, informat = "biblatex") # it's bibtex but should work
## bibConvert(tex_fn, tmp_copac) # not supported
## bibConvert(tex_fn, tmp_ebi) # not supported
bibConvert(tex_fn, tmp_end)
## bibConvert(tex_fn, tmp_endx)
bibConvert(tex_fn, tmp_isi)
## bibConvert(tex_fn, tmp_med)
bibConvert(tex_fn, tmp_nbib)
bibConvert(tex_fn, tmp_ris)
bibConvert(tex_fn, tmp_R, outformat = "Rstyle")
bibConvert(tex_fn, tmp_rds)
bibConvert(tex_fn, tmp_xml)
bibConvert(tex_fn, tmp_wordbib)
bibConvert(tex_fn, tmp_word, outformat = "word")
bibConvert(tmp_bibtex , tmp_xml2)
bibConvert(tmp_biblatex, tmp_xml2)
bibConvert(tmp_word , tmp_xml2, informat = "word")
## bibConvert(tmp_ads , tmp_xml2) # not supported
## bibConvert(tmp_copac, tmp_xml2) # tmp_copac not available
## bibConvert(tmp_ebi , tmp_xml2) # tmp_ebi not available
bibConvert(tmp_end , tmp_xml2)
## bibConvert(tmp_endx , tmp_xml2) # tmp_endx not available
bibConvert(tmp_isi , tmp_xml2)
## bibConvert(tmp_med, , tmp_xml2) # tmp_med not available
bibConvert(tmp_nbib , tmp_xml2) # TODO: amend nbib output to output dummy PMID's
# when not present in input file?
bibConvert(tmp_ris , tmp_xml2)
bibConvert(tmp_R , tmp_xml2) # "bibentry"
bibConvert(tmp_rds , tmp_xml2)
bibConvert(tmp_xml , tmp_xml2)
bibConvert(tmp_wordbib , tmp_xml2)
readBib(tex_fn, direct = TRUE)
readBib(xampl_fn, direct = TRUE)
biblatex_fn <- system.file("bib", "biblatex-examples_sans_key_aksin.bib", package = "rbibutils")
tmp <- bibConvert(biblatex_fn, tmp_bib2, informat = "biblatex")
})
## TODO: 'tried to fix' is not followed by report if it was successful
##
## > tmp <- bibConvert(tex_fn, tmp_rds)
## Error in .bibentry_check_bibentry1(rval) :
## A bibentry of bibtype ‘Book’ has to specify the field: year
##
## Tried to fix above errors/warnings, see the warnings and messages below.
##
## key 'G-G'
## A bibentry of bibtype ‘Book’ has to specify the field: year
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.