1Biber::Utils(3)       User Contributed Perl Documentation      Biber::Utils(3)
2
3
4

NAME

6       Biber::Utils - Various utility subs used in Biber
7

EXPORT

9       All functions are exported by default.
10

FUNCTIONS

12   glob_data_file
13         Expands a data file glob to a list of filenames
14
15   slurp_switchr
16         Use different read encoding/slurp interfaces for Windows due to its
17         horrible legacy codepage system
18
19   slurp_switchw
20         Use different write encoding/slurp interfaces for Windows due to its
21         horrible legacy codepage system
22
23   locate_data_file
24         Searches for a data file by
25
26         The exact path if the filename is absolute
27         In the input_directory, if defined
28         In the output_directory, if defined
29         Relative to the current directory
30         In the same directory as the control file
31         Using kpsewhich, if available
32
33
34         Check existence of NFC/NFD file variants and return correct one.
35         Account for windows file encodings
36
37   check_empty
38           Wrapper around empty check to deal with Win32 Unicode filenames
39
40   check_exists
41           Wrapper around exists check to deal with Win32 Unicode filenames
42
43   biber_warn
44           Wrapper around various warnings bits and pieces.
45           Add warning to the list of .bbl warnings and the master list of warnings
46
47   biber_error
48           Wrapper around error logging
49           Forces an exit.
50
51   makenamesid
52       Given a Biber::Names object, return an underscore normalised
53       concatenation of all of the full name strings.
54
55   makenameid
56       Given a Biber::Name object, return an underscore normalised
57       concatenation of the full name strings.
58
59   latex_recode_output
60         Tries to convert UTF-8 to TeX macros in passed string
61
62   strip_noinit
63         Removes elements which are not to be considered during initials generation
64         in names
65
66   strip_nosort
67         Removes elements which are not to be used in sorting a name from a string
68
69   strip_nonamestring
70         Removes elements which are not to be used in certain name-related operations like:
71
72         * fullhash generation
73         * uniquename generation
74
75        from a name
76
77   normalise_string_label
78       Remove some things from a string for label generation. Don't strip
79       \p{Dash} as this is needed to process compound names or label
80       generation.
81
82   normalise_string_sort
83       Removes LaTeX macros, and all punctuation, symbols, separators as well
84       as leading and trailing whitespace for sorting strings.  Control chars
85       don't need to be stripped as they are completely ignorable in DUCET
86
87   normalise_string_bblxml
88       Some string normalisation for bblxml output
89
90   normalise_string
91       Removes LaTeX macros, and all punctuation, symbols, separators and
92       control characters, as well as leading and trailing whitespace for
93       sorting strings.  Only decodes LaTeX character macros into Unicode if
94       output is UTF-8
95
96   normalise_string_common
97         Common bit for normalisation
98
99   normalise_string_hash
100         Normalise strings used for hashes. We collapse LaTeX macros into a vestige
101         so that hashes are unique between things like:
102
103         Smith
104         {\v S}mith
105
106         we replace macros like this to preserve their vestiges:
107
108         \v S -> v:
109         \" -> 34:
110
111   normalise_string_underscore
112         Like normalise_string, but also substitutes ~ and whitespace with underscore.
113
114   escape_label
115         Escapes a few special character which might be used in labels
116
117   unescape_label
118         Unscapes a few special character which might be used in label but which need
119         sorting without escapes
120
121   reduce_array
122       reduce_array(\@a, \@b) returns all elements in @a that are not in @b
123
124   remove_outer
125           Remove surrounding curly brackets:
126               '{string}' -> 'string'
127           but not
128               '{string} {string}' -> 'string} {string'
129
130           Return (boolean if stripped, string)
131
132   has_outer
133           Return (boolean if surrounded in braces
134
135   add_outer
136           Add surrounding curly brackets:
137               'string' -> '{string}'
138
139   ucinit
140           upper case of initial letters in a string
141
142   is_undef
143           Checks for undefness of arbitrary things, including
144           composite method chain calls which don't reliably work
145           with defined() (see perldoc for defined())
146           This works because we are just testing the value passed
147           to this sub. So, for example, this is randomly unreliable
148           even if the resulting value of the arg to defined() is "undef":
149
150           defined($thing->method($arg)->method)
151
152           whereas:
153
154           is_undef($thing->method($arg)->method)
155
156           works since we only test the return value of all the methods
157           with defined()
158
159   is_def
160           Checks for definedness in the same way as is_undef()
161
162   is_undef_or_null
163           Checks for undef or nullness (see is_undef() above)
164
165   is_def_and_notnull
166           Checks for def and unnullness (see is_undef() above)
167
168   is_def_and_null
169           Checks for def and nullness (see is_undef() above)
170
171   is_null
172           Checks for nullness
173
174   is_notnull
175           Checks for notnullness
176
177   is_notnull_scalar
178           Checks for notnullness of a scalar
179
180   is_notnull_array
181           Checks for notnullness of an array (passed by ref)
182
183   is_notnull_hash
184           Checks for notnullness of an hash (passed by ref)
185
186   is_notnull_object
187           Checks for notnullness of an object (passed by ref)
188
189   stringify_hash
190           Turns a hash into a string of keys and values
191
192   normalise_utf8
193         Normalise any UTF-8 encoding string immediately to exactly what we want
194         We want the strict perl utf8 "UTF-8"
195
196   inits
197          We turn the initials into an array so we can be flexible with them later
198          The tie here is used only so we know what to split on. We don't want to make
199          any typesetting decisions in Biber, like what to use to join initials so on
200          output to the .bbl, we only use BibLaTeX macros.
201
202   join_name
203         Replace all join typsetting elements in a name part (space, ties) with BibLaTeX macros
204         so that typesetting decisions are made in BibLaTeX, not hard-coded in Biber
205
206   filter_entry_options
207           Process any per_entry option transformations which are necessary on output
208
209   imatch
210           Do an interpolating (neg)match using a match RE and a string passed in as variables
211           Using /g on matches so that $1,$2 etc. can be populated from repeated matches of
212           same capture group as well as different groups
213
214   ireplace
215           Do an interpolating match/replace using a match RE, replacement RE
216           and string passed in as variables
217
218   validate_biber_xml
219         Validate a biber/biblatex XML metadata file against an RNG XML schema
220
221   map_boolean
222           Convert booleans between strings and numbers. Because standard XML "boolean"
223           datatype considers "true" and "1" the same etc.
224
225   process_entry_options
226           Set per-entry options
227
228   merge_entry_options
229           Merge entry options, dealing with conflicts
230
231   expand_option_input
232           Expand options such as meta-options coming from biblatex
233
234   parse_date_range
235         Parse of ISO8601 date range
236
237   parse_date_unspecified
238         Parse of ISO8601-2:2016 4.3 unspecified format into date range
239         Returns range plus specification of granularity of unspecified
240
241   parse_date_start
242         Convenience wrapper
243
244   parse_date_end
245         Convenience wrapper
246
247   parse_date
248         Parse of EDTF dates
249
250   date_monthday
251         Force month/day to ISO8601-2:2016 format with leading zero
252
253   biber_decode_utf8
254           Perform NFD form conversion as well as UTF-8 conversion. Used to normalize
255           bibtex input as the T::B interface doesn't allow a neat whole file slurping.
256
257   out
258         Output to target. Outputs NFC UTF-8 if output is UTF-8
259
260   process_comment
261         Fix up some problems with comments after being processed by btparse
262
263   locale2bcp47
264         Map babel/polyglossia language options to a sensible CLDR (bcp47) locale default
265         Return input string if there is no mapping
266
267   bcp472locale
268         Map CLDR (bcp47) locale to a babel/polyglossia locale
269         Return input string if there is no mapping
270
271   rangelen
272         Calculate the length of a range field
273         Range fields are an array ref of two-element array refs [range_start, range_end]
274         range_end can be be empty for open-ended range or undef
275         Deals with Unicode and ASCII roman numerals via the magic of Unicode NFKD form
276
277         m-n -> [m, n]
278         m   -> [m, undef]
279         m-  -> [m, '']
280         -n  -> ['', n]
281         -   -> ['', undef]
282
283   match_indices
284         Return array ref of array refs of matches and start indices of matches
285         for provided array of compiled regexps into string
286
287   parse_range
288         Parses a range of values into a two-value array ref.
289         Ranges with no starting value default to "1"
290         Ranges can be open-ended and it's up to surrounding code to interpret this
291         Ranges can be single figures which is shorthand for 1-x
292
293   strip_annotation
294         Removes annotation marker from a field name
295
296   parse_range_alt
297         Parses a range of values into a two-value array ref.
298         Either start or end can be undef and it's up to surrounding code to interpret this
299
300   maploopreplace
301         Replace loop markers with values.
302
303   get_transliterator
304         Get a ref to a transliterator for the given from/to
305         We are abstracting this in this way because it is not clear what the future
306         of the transliteration library is. We want to be able to switch.
307
308   call_transliterator
309         Run a transliterator on passed text. Hides call semantics of transliterator
310         so we can switch engine in the future.
311

AUTHOR

313       Philip Kime "<philip at kime.org.uk>"
314

BUGS

316       Please report any bugs or feature requests on our Github tracker at
317       <https://github.com/plk/biber/issues>.
318
320       Copyright 2012-2022 Philip Kime, all rights reserved.
321
322       This module is free software.  You can redistribute it and/or modify it
323       under the terms of the Artistic License 2.0.
324
325       This program is distributed in the hope that it will be useful, but
326       without any warranty; without even the implied warranty of
327       merchantability or fitness for a particular purpose.
328
329
330
331perl v5.36.0                      2023-01-18                   Biber::Utils(3)
Impressum