| as_cff_person {cffr} | R Documentation | 
Coerce R objects to cff_pers_lst objects (cff persons)
Description
as_cff_person() turns an existing list-like R object into a
cff_pers_lst object representing a list of definitions.person or
definitions.entity, as defined by the Citation File Format schema.
as_cff_person is an S3 generic, with methods for:
-  person: objects created withperson().
-  character: String with the definition of an author or several authors, using the standard BibTeX notation (see Markey, 2007) and others, like the output offormat()for person (seeformat.person()).
- Default: Other inputs are first coerced with - as.character().
The inverse transformation (cff_pers_lst to person) can be done with
the methods as.person.cff_pers() and as.person.cff_pers_lst().
Usage
as_cff_person(x, ...)
## Default S3 method:
as_cff_person(x, ...)
## S3 method for class 'person'
as_cff_person(x, ...)
## S3 method for class 'character'
as_cff_person(x, ...)
Arguments
| x | Any R object. | 
| ... | Ignored by this method. | 
Details
as_cff_person() would recognize if the input should be converted using the
CFF reference for definition.person or definition.entity.
as_cff_person() uses a custom algorithm that tries to break a name as
explained in Section 11 of "Tame the BeaST" (Markey, 2007) (see also
Decoret, 2007):
-  First von Last.
-  von Last, First.
-  von Last, Jr, First.
Mapping is performed as follows:
-  Firstis mapped to the CFF fieldgiven-names.
-  vonis mapped to the CFF fieldname-particle.
-  Lastis mapped to the CFF fieldfamily-names.
-  Jris mapped to the CFF fieldname-suffix.
In the case of entities, the whole character would be mapped to name.
It is a good practice to "protect" entity's names with {}:
# Don't do
entity <- "Elephant and Castle"
as_cff_person(entity)
- name: Elephant
- name: Castle
# Do
entity_protect <- "{Elephant and Castle}"
as_cff_person(entity_protect)
- name: Elephant and Castle
as_cff_person() would try to add as many information as possible.
On character string coming from format.person() the
email and the ORCID would be retrieved as well.
Value
as_cff_person() returns an object of classes
cff_pers_lst, cff according to the definitions.person
or definitions.entity specified in the Citation File Format schema.
Each element of the cff_pers_lst object would have classes
cff_pers, cff.
References
- Patashnik, Oren. "BIBTEXTING" February 1988. https://osl.ugr.es/CTAN/biblio/bibtex/base/btxdoc.pdf. 
- Markey, Nicolas. "Tame the BeaST" The B to X of BibTeX, Version 1.4 (October 2007). https://osl.ugr.es/CTAN/info/bibtex/tamethebeast/ttb_en.pdf. 
- Decoret X (2007). "A summary of BibTex."https://maverick.inria.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#names 
See Examples for more information.
See Also
Examples in vignette("cffr", "cffr") and utils::person().
Learn more about the classes cff_pers_lst, cff_pers classes in cff_class.
Coercing between R classes with S3 Methods:
as_bibentry(),
as_cff(),
cff_class
Examples
# Create a person object
a_person <- person(
  given = "First", family = "Author",
  role = c("aut", "cre"),
  email = "first.last@example.com", comment = c(
    ORCID = "0000-0001-8457-4658",
    affiliation = "An affiliation"
  )
)
a_person
cff_person <- as_cff_person(a_person)
# Class cff_pers_lst / cff
class(cff_person)
# With each element with class cff_pers / cff
class(cff_person[[1]])
# Print
cff_person
# Back to person object with S3 Method
as.person(cff_person)
# Coerce a string
a_str <- paste0(
  "Julio Iglesias <fake@email.com> ",
  "(<https://orcid.org/0000-0001-8457-4658>)"
)
as_cff_person(a_str)
# Several persons
persons <- c(
  person("Clark", "Kent", comment = c(affiliation = "Daily Planet")),
  person("Lois", "Lane"), person("Oscorp Inc.")
)
a_cff <- as_cff_person(persons)
a_cff
# Printed as Bibtex thanks to the method
toBibtex(a_cff)
# Or as person object
as.person(a_cff)
# Or you can use BibTeX style as input if you prefer
x <- "Frank Sinatra and Dean Martin and Davis, Jr., Sammy and Joey Bishop"
as_cff_person(x)
as_cff_person("Herbert von Karajan")
toBibtex(as_cff_person("Herbert von Karajan"))