![]() |
![]()
| ![]() |
![]()
NAMEBiber - main module for biber, a bibtex replacement for users of biblatex SYNOPSISuse Biber; my $biber = Biber->new(); $biber->parse_ctrlfile("example.bcf"); $biber->prepare; METHODSnewInitialize the Biber object, optionally passing named options as arguments. display_endOutput summary of warnings/errors/misc before exit biber_tempdirReturns a File::Temp directory object for use in various things biber_tempdir_nameReturns the directory name of the File::Temp directory object sectionsmy $sections= $biber->sections Returns a Biber::Sections object describing the bibliography sections add_sectionsAdds a Biber::Sections object. Used externally from, e.g. biber datalistsmy $datalists = $biber->datalists Returns a Biber::DataLists object describing the bibliography sorting lists langtagsReturns a Biber::LangTags object containing a parser for BCP47 tags set_output_objSets the object used to output final results Must be a subclass of Biber::Output::base get_preambleReturns the current preamble as an array ref get_output_objReturns the object used to output final results set_current_sectionSets the current section number that we are working on to a section number get_current_sectionGets the current section number that we are working on tool_mode_setupFakes parts of the control file for tool mode parse_ctrlfileThis method reads the control file generated by biblatex to work out the various biblatex options. See Constants.pm for defaults and example of the data structure being built here. process_setupPlace to put misc pre-processing things needed later process_setup_toolPlace to put misc pre-processing things needed later for tool mode resolve_alias_refsResolve aliases in xref/crossref/xdata which take keys as values to their real keys We use set_datafield as we are overriding the alias in the datasource process_citekey_aliasesRemove citekey aliases from citekeys as they don't point to real entries. instantiate_dynamicThis instantiates any dynamic entries so that they are available for processing later on. This has to be done before most all other processing so that when we call $section->bibentry($key), as we do many times in the code, we don't die because there is a key but no Entry object. resolve_xdataResolve xdata cite_setmembersPromotes set member to cited status preprocess_sets$biber->preprocess_sets This records the set information for use later calculate_interentry$biber->calculate_interentry Ensures that crossrefs/xrefs that are directly cited or cross-referenced at least mincrossrefs/minxrefs times are included in the bibliography. process_interentry$biber->process_interentry Ensures proper inheritance of data from cross-references. validate_datamodelValidate bib data according to a datamodel Note that we are validating the internal Biber::Entries after they have been created from the datasources so this is datasource neutral, as it should be. It is here to enforce adherence to what biblatex expects. process_namedisGenerate name strings and disambiguation schema. Has to be in the context of a data list (reference context) because uniquenametemplate can be specified per-list/context postprocess_setsAdds required per-entry options etc. to sets process_entries_staticProcessing of entries which is not list-specific and which can therefore insert data directly into entries process_entries_preMain processing operations, to generate metadata and entry information This method is automatically called by C<prepare>. Runs prior to uniqueness processing process_entries_postMore processing operations, to generate things which require uniqueness information like namehash Runs after uniqueness processing process_entries_finalFinal processing operations which depend on all previous processing process_uniqueprimaryauthorTrack seen primary author base names for generation of uniqueprimaryauthor process_workuniquenessTrack seen work combination for generation of singletitle, uniquetitle, uniquebaretitle and uniquework process_extradateTrack labelname/labeltitle+date parts combination for generation of extradate process_extranameTrack labelname only for generation of extraname process_extratitleTrack labelname/labeltitle combination for generation of extratitle process_extratitleyearTrack labeltitle/labelyear combination for generation of extratitleyear process_setsPostprocess set entries Checks for common set errors and enforces "dataonly" options for set members. It's not necessary to set skipbib, skipbiblist in the OPTIONS field for the set members as these are automatically set by biblatex due to the \inset process_nociteGenerate nocite information process_labelnameGenerate labelname information. process_labeldateGenerate labeldate information, including times process_labeltitleGenerate labeltitle Note that this is not conditionalised on the biblatex "labeltitle" as labeltitle should always be output since all standard styles need it. Only extratitle is conditionalised on the biblatex "labeltitle" option. process_fullhashGenerate fullhash process_namehashGenerate namehash process_pername_hashesGenerate per_name_hashes process_visible_namesGenerate the visible name information. This is used in various places and it is useful to have it generated in one place. process_labelalphaGenerate the labelalpha and also the variant for sorting process_extraalphaGenerate the extraalpha information process_presortPut presort fields for an entry into the main Biber bltx state so that it is all available in the same place since this can be set per-type and globally too. process_listsProcess a bibliography list check_list_filterRun an entry through a list filter. Returns a boolean. generate_sortdataschemaGenerate sort data schema for Sort::Key from sort spec like this: spec => [ [undef, { presort => {} }], [{ final => 1 }, { sortkey => {} }], [ {'sort_direction' => 'descending'}, { sortname => {} }, { author => {} }, { editor => {} }, { translator => {} }, { sorttitle => {} }, { title => {} }, ], [undef, { sortyear => {} }, { year => {} }], [undef, { sorttitle => {} }, { title => {} }], [undef, { volume => {} }, { "0000" => {} }], ], generate_sortinfoGenerate information for sorting uniquenessGenerate the uniqueness information needed when creating .bbl create_uniquename_infoGather the uniquename information as we look through the names What is happening in here is the following: We are registering the number of occurrences of each name, name+init and fullname within a specific context. For example, the context is "global" with uniquename < mininit and "name list" for uniquename=mininit or minfull. The keys we store to count this are the most specific information for the context, so, for uniquename < mininit, this is the full name and for uniquename=mininit or minfull, this is the complete list of full names. These keys have values in a hash which are ignored. They serve only to accumulate repeated occurrences with the context and we don't care about this and so the values are a useful sinkhole for such repetition. For example, if we find in the global context a base name "Smith" in two different entries under the same form "Alan Smith", the data structure will look like: {Smith}->{global}->{Alan Smith} = 2 We don't care about the value as this means that there are 2 "Alan Smith"s in the global context which need disambiguating identically anyway. So, we just count the keys for the base name "Smith" in the global context to see how ambiguous the base name itself is. This would be "1" and so "Alan Smith" would get uniquename=false because it's unambiguous as just "Smith". The same goes for "minimal" list context disambiguation for uniquename=mininit or minfull. For example, if we had the base name "Smith" to disambiguate in two entries with labelname "John Smith and Alan Jones", the data structure would look like: {Smith}->{Smith+Jones}->{John Smith+Alan Jones} = 2 Again, counting the keys of the context for the base name gives us "1" which means we have uniquename=false for "John Smith" in both entries because it's the same list. This also works for repeated names in the same list "John Smith and Bert Smith". Disambiguating "Smith" in this: {Smith}->{Smith+Smith}->{John Smith+Bert Smith} = 2 So both "John Smith" and "Bert Smith" in this entry get uniquename=false (of course, as long as there are no other "X Smith and Y Smith" entries where X != "John" or Y != "Bert"). The values from biblatex.sty: false = 0 init = 1 true = 2 full = 2 allinit = 3 allfull = 4 mininit = 5 minfull = 6 generate_uniquenameGenerate the per-name uniquename values using the information harvested by create_uniquename_info() create_uniquelist_infoGather the uniquelist information as we look through the names generate_uniquelistGenerate the per-namelist uniquelist values using the information harvested by create_uniquelist_info() generate_contextdataGenerate information for data which may changes per datalist generate_singletitleGenerate the singletitle field, if requested. The information for generating this is gathered in process_workuniqueness() generate_uniquetitleGenerate the uniquetitle field, if requested. The information for generating this is gathered in process_workuniqueness() generate_uniquebaretitleGenerate the uniquebaretitle field, if requested. The information for generating this is gathered in process_workuniqueness() generate_uniqueworkGenerate the uniquework field, if requested. The information for generating this is gathered in process_workuniqueness() generate_uniquepaGenerate the uniqueprimaryauthor field, if requested. The information for generating this is gathered in create_uniquename_info() sort_listSort a list using information in entries according to a certain sorting template. Use a flag to skip info messages on first pass preprocess_optionsPreprocessing for options. Used primarily to perform process-intensive operations which can be done once instead of inside dense loops later. prepareDo the main work. Process and sort all entries before writing the output. prepare_toolDo the main work for tool mode fetch_dataFetch citekey and dependents data from section datasources Expects to find datasource packages named: Biber::Input::<type>::<datatype> and one defined subroutine called: Biber::Input::<type>::<datatype>::extract_entries which takes args: 1: Biber object 2: Datasource name 3: Reference to an array of cite keys to look for and returns an array of the cite keys it did not find in the datasource get_dependentsGet dependents of the entries for a given list of citekeys. Is called recursively until there are no more dependents to look for. remove_undef_dependentRemove undefined dependent keys from an entry using a map of dependent keys to entries _parse_sortConvenience sub to parse a .bcf sorting section and return nice sorting object _filedump and _stringdumpDump the biber object with Data::Dump for debugging AUTHORSPhilip Kime "<philip at kime.org.uk>" BUGSPlease report any bugs or feature requests on our Github tracker at <https://github.com/plk/biber/issues>. COPYRIGHT & LICENSECopyright 2009-2012 François Charette and Philip Kime, all rights reserved. Copyright 2012-2024 Philip Kime, all rights reserved. This module is free software. You can redistribute it and/or modify it under the terms of the Artistic License 2.0. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
|