View Single Post
Old 04-25-2022, 06:53 AM   #77
chaley
Grand Sorcerer
chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.chaley ought to be getting tired of karma fortunes by now.
 
Posts: 11,779
Karma: 7029971
Join Date: Jan 2010
Location: Notts, England
Device: Kobo Libra 2
New template function list_join()

25 April 2022 (In calibre source)
  • New template function
    Code:
    list_join(with_separator, list1, separator1 [, list2, separator2]*)
    Returns a list made by joining the items in the source lists (list1 etc) using with_separator between the items in the result list. Items in each source list[123...] are separated by the associated separator[123...]. A list can contain zero values. It can be a field like publisher that is single-valued, effectively a one-item list. Duplicates are removed using a case-insensitive comparison. Items are returned in the order they appear in the source lists. If items on lists differ only in letter case then the last is used. All separators can be more than one character.

    Example:
    Code:
    program:
      list_join(':@:', $authors, '&', $tags, ',')
    You can use list_join on the results of previous calls to list_join as follows:
    Code:
    program:
      a = list_join(':@:', $authors, '&', $tags, ',');
      b = list_join(':@:', a, ':@:', $#genre, ',', $#people, '&', 'some value', ',')
    You can use expressions to generate a list. For example, assume you want items for authors and #genre, but with the genre changed to the word "Genre: " followed by the first letter of the genre, i.e. the genre "Fiction" becomes "Genre: F". The following will do that:
    Code:
    program:
      list_join(':@:', $authors, '&', list_re($#genre, ',', '^(.).*$', 'Genre: \1'),  ',')

Last edited by chaley; 04-25-2022 at 07:13 AM.
chaley is offline   Reply With Quote