Reference for all built-in template language functions

Here, we document all the built-in functions available in the calibre template language. Every function is implemented as a class in python and you can click the source links to see the source code, in case the documentation is insufficient. The functions are arranged in logical groups by type.

Arithmetic

add(x, y)

class calibre.utils.formatter_functions.BuiltinAdd[source]

add(x, y) -- kembalikan x + y. Buang pengecualian jika sama ada x atau y bukan nombor.

divide(x, y)

class calibre.utils.formatter_functions.BuiltinDivide[source]

divide(x, y) -- kembalikan x / y. Buang pengecualian jika sama ada x atau y bukan nombor.

multiply(x, y)

class calibre.utils.formatter_functions.BuiltinMultiply[source]

multiply(x, y) -- kembalikan x * y. Buang pengecualian jika sama ada x atau y bukan nombor.

subtract(x, y)

class calibre.utils.formatter_functions.BuiltinSubtract[source]

subtract(x, y) -- kembalikan x - y. Buang pengecualian jika sama ada x atau y bukan nombor.

Boolean

and(value, value, ...)

class calibre.utils.formatter_functions.BuiltinAnd[source]

and(value, value, ...) -- kembalikan rentetan "1" jika semua nilai tidak kosong, jika tidak kembalikan rentetan kosong. Fungsi ini berfungsi baik dengan test atau first_non_empty. Anda boleh adakan sebanyak mana nilai yang anda mahu.

not(value)

class calibre.utils.formatter_functions.BuiltinNot[source]

not(value) -- kembalikan rentetan "1" jika semua nilai tidak kosong, jika tidak kembalikan rentetan kosong. Fungsi ini berfungsi baik dengan test atau first_non_empty.

or(value, value, ...)

class calibre.utils.formatter_functions.BuiltinOr[source]

or(value, value, ...) -- kembalikan rentetan "1" jika semua nilai tidak kosong, jika tidak kembalikan rentetan kosong. Fungsi ini berfungsi baik dengan test atau first_non_empty. Anda boleh adakan sebanyak mana nilai yang anda mahu.

Date functions

days_between(date1, date2)

class calibre.utils.formatter_functions.BuiltinDaysBetween[source]

days_between(date1, date2) -- kembalikan bilangan hari diantara date1 dan date2. Bilangan adalah positif jika date1 lebih besar dari date2, jika tidak ia bernilai negatif. Jika date1 atau date2 tidak mempunyai tarikh, maka fungsi kembalikan rentetan kosong.

today()

class calibre.utils.formatter_functions.BuiltinToday[source]

today() -- kembalikan retetan tarikh untuk hari ini. Nilai ini direka untuk kegunaan dalam format_date atau days_between, tetapi boleh dimanipulasi seperti mana-mana rentetan. Tarikh dalam format ISO.

Formatting values

finish_formatting(val, fmt, prefix, suffix)

class calibre.utils.formatter_functions.BuiltinFinishFormatting[source]

finish_formatting(val, fmt, prefix, suffix) -- laksanakan format, awalan, dan akhiran pada nilai dalam cara yang sama dibuat dalam templat seperti {series_index:05.2f| - |- }. Sebagai contoh, program berikut hasilkan output yang sama seperti di atas template: program: finish_formatting(field("series_index"), "05.2f", " - ", " - ")

format_date(val, format_string)

class calibre.utils.formatter_functions.BuiltinFormatDate[source]

format_date(val, format_string) -- formatkan nilai, iaitu tarikh, menggunakan format_string, mengembalikan rentetan. Kod pemformatan adalah: d : hari dalam nombor tanpa sifar dihadapan (1 hingga 31) dd : hari sebagai nombor dengan sifar dihadapan (01 hingga 31) ddd : singkatan nama hari (contoh. "Isn" hingga "Ahd"). dddd : nama hari tempatan panjang (contoh "Isnin" hingga "Ahad"). M : bulan sebagai nombor tanpa sifar dihadapan (1 hingga 12). MM : bulan sebagai nombor dengan sifat dihadapan (01 hingga 12) MMM : singkatan nama bulan tempatan (contoh. "Jan" hingga "Dis"). MMMM : nama bulan tempatan panjang (contoh "Januari" hingga "Disember"). yy : tahun dalam dua nombor digit (00 hingga 99). yyyy : tahun dalam empat nombor digit. h : jam tanpa sifar dihadapan 0 (0 hingga 11 atau 0 hingga 23, bergantung pada am/pm) hh : jam dengan sifar dihadapan 0 (00 hingga 11 atau 00 hingga 23, bergantung pada am/pm) m : minit tanpa sifar dihadapan 0 (0 hingga 59) mm : minit dengan sifar dihadapan 0 (00 hingga 59) s : saat tanpa sifar dihadapan 0 (0 hingga 59) ss : saat tanpa sifar dihadapan 0 (00 hingga 59) ap : guna jam 12 selain dari jam 24, dengan "ap" diganti dengan rentetan tempatan bagi am atau pm AP : guna jam 12 selain dari jam 2, dengan "AP" diganti oleh rentetan tempatan untuk AM atau PM iso : tarikh dengan masa dan zon waktu. Mesti dalam format semasa sahaja

format_number(v, template)

class calibre.utils.formatter_functions.BuiltinFormatNumber[source]

format_number(v, template) -- format the number v using a Python formatting template such as "{0:5.2f}" or "{0:,d}" or "${0:5,.2f}". The field_name part of the template must be a 0 (zero) (the "{0:" in the above examples). See the template language and Python documentation for more examples. You can leave off the leading "{0:" and trailing "}" if the template contains only a format. Returns the empty string if formatting fails.

human_readable(v)

class calibre.utils.formatter_functions.BuiltinHumanReadable[source]

human_readable(v) -- kembalikan rentetan yang diwakili dengan nombor v dalam KB, MB, GB, dan lain-lain.

Get values from metadata

approximate_formats()

class calibre.utils.formatter_functions.BuiltinApproximateFormats[source]

approximate_formats() -- kembalikan senarai dipisah-tanda-koma bagi format yang mana satu keadaan dikaitkan dengan buku. Tiada jaminan senarai ini adalah betul, walaupun ia mungkin betul. Fungsi ini boleh dipanggil dalam mod program templat menggunakan template "{:'approximate_formats()'}". Perhatian nama format sentiasa berhuruf besar, seperti dalam EPUB. Fungsi hanya berfungsi dalam GUI. Jika anda mahu guna nilai ini dalam templat save-to-disk atau send-to-device maka anda mesti buat "Column built from other columns" suai, guna fungsi dalam templat lajur, dan guna nilai lajur tersebut dalam templat simpan/hantar anda

author_sorts(val_separator)

class calibre.utils.formatter_functions.BuiltinAuthorSorts[source]

author_sorts(val_separator) -- kembalikan rentetan mengandungi senarai nilai isih pengarang untuk pengarang buku. Isih adalah salah satu data meta pengarang (berbeza dari author_sort di dalam buku). Senarai yang dikembalikan mempunyai bentuk author isih 1 val_separator author isih 2 dan lain-lain. Nilai isih pengarang dalam senarai ini adalah dalam tertib yang sama seperti pengarang buku. Jika anda mahu jarak disekitar val_separator maka sertakannya di dalam rentetan pemisah

booksize()

class calibre.utils.formatter_functions.BuiltinBooksize[source]

booksize() -- kembalikan nilai medan saiz. Fungsi ini hanya berkesan dalam GUI. Jika anda mahu guna nilai ini dalam templat save-to-disk atau send-to-device maka anda mesti buat "Column built from other columns" suai, gunakan fungsi yang mana dalam lajur templat, dan gunan ilai lajur dalam templat simpan/hantar anda

current_library_name()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryName[source]

current_library_name() -- kembalikan nama terakhir pada laluan ke pustaka calibre semasa. Fungsi ini boleh dipanggil dalam mod program templat menggunakan templat "{:'current_library_name()'}".

current_library_path()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath[source]

current_library_path() -- kembalikan laluan ke pustaka calibre semasa. Fungsi ini boleh dikenali dalam mod program templat menggunakan templat "{:'current_library_path()'}".

field(name)

class calibre.utils.formatter_functions.BuiltinField[source]

field(name) -- kembalikan medan data meta dinamakan mengikut nama

formats_modtimes(date_format)

class calibre.utils.formatter_functions.BuiltinFormatsModtimes[source]

formats_modtimes(date_format) -- kembalikan senarai dipisah-tanda-koma bagi item dipisah tanda-titik-bertindih yang mewakili waktu pengubahsuaian untuk format sesebuah buku. Parameter date_format menyatakan bagaimana tarikh diformatkan. Sila rujuk fungsi format_date untuk perincian. Anda boleh guna fungsi pilih untuk dapatkan waktu mod bagi format tertentu. Perhatian nama format sentiasa berhuruf-besar, sepertimana dalam EPUB.

formats_paths()

class calibre.utils.formatter_functions.BuiltinFormatsPaths[source]

formats_paths() -- kembalikan senarai dipisah tanda-koma bagi item dipisah tanda-titik-bertindih mewakili laluan penuh ke format sesebuah buku. Anda boleh guna fungsi pilih untuk dapatkan laluan untuk format tertentu. Perhatian nama format sentiasa berhuruf besar, sepertimana dalam EPUB.

formats_sizes()

class calibre.utils.formatter_functions.BuiltinFormatsSizes[source]

formats_sizes() -- kembalikan senarai dipisah tanda-koma bagi item dipisah tanda-titik-bertindih mewakili saiz dalam baik bagi format sesebuah buku. Anda boleh guna fungsi pilih untuk dapatkan saiz bagi format tertentu. Perhatian nama format sentiasa berhuruf besar, sepertimana dalam EPUB.

has_cover()

class calibre.utils.formatter_functions.BuiltinHasCover[source]

has_cover() -- kembalikan Yes jika buku mempunyai kulit buku, jika tidak kembalikan rentetan kosong

language_codes(lang_strings)

class calibre.utils.formatter_functions.BuiltinLanguageCodes[source]

language_codes(lang_strings) -- kembalian kod bahasa bagi rentetan yang dilepasi dalam lang_strings. Rentetan mestilah dalam bahasa lokal semasa. Lang_strings adalah senarai dipisah-tanda-koma.

language_strings(lang_codes, localize)

class calibre.utils.formatter_functions.BuiltinLanguageStrings[source]

language_strings(lang_codes, localize) -- kembalikan rentetan kod bahasa yang dilepasi dalam lang_codes. Jika dilokalkan adalah sifar, kembalikan rentetan dalam bahasa Inggeris. Jika dilokalkan tidak benilai sifar, maka kembalikan rentetan dalam bahasa lokal semasa. Lang_codes adalah senarai dipisah-tanda-koma.

ondevice()

class calibre.utils.formatter_functions.BuiltinOndevice[source]

ondevice() -- kembalikan Ya jika ondevice ditetapkan, jika tidak kembalikan rentetan kosong. Fungsi ini hanya berkesan dalam GUI. Jika anda mahu guna nilai ini dalam templat save-to-disk atau send-to-device maka anda mesti buat "Column built from other columns" suai, gunakan fungsi yang mana dalam lajur templat, dan gunan ilai lajur dalam templat simpan/hantar anda

raw_field(name)

class calibre.utils.formatter_functions.BuiltinRawField[source]

raw_field(name) -- kembalikan medan data meta dinamakan mengikut nama tanpa melaksanakan apa-apa pemformatan.

raw_list(name, separator)

class calibre.utils.formatter_functions.BuiltinRawList[source]

raw_list(name, separator) -- kembalikan senarai data meta dinamakan mengikut nama tanpa melaksanakan apa-apa pemformatan atau mengisih dan dengan item diasing dengan pemisah.

series_sort()

class calibre.utils.formatter_functions.BuiltinSeriesSort[source]

series_sort() -- kembalikan siri isih nilai

user_categories()

class calibre.utils.formatter_functions.BuiltinUserCategories[source]

user_categories() -- kembalikan senarai dipisah-tanda-koma bagi kategori pengguna yang terkandung dalam buku ini. Fungsi ini hanya berfungsi dalam GUI. Jika anda mahu guna nilai ini dalam templat save-to-disk atau send-to-device maka anda mesti buat "Column built from other columns" suai, guna fungsi dalam templat lajur, dan guna nilai lajur dalam templat simpan/hantar anda

virtual_libraries()

class calibre.utils.formatter_functions.BuiltinVirtualLibraries[source]

virtual_libraries() -- kembalikan senarai dipisah-tanda-koma bagi pustaka maya yang terkandung dalam buku ini. Fungsi ini hanya berfungsi dalam GUI. Jika anda mahu guna nilai ini dalam templat save-to-disk atau send-to-device maka anda mesti buat "Column built from other columns" suai, guna fungsi dalam templat lajur, dan guna nilai lajur dalam templat simpan/hantar anda

If-then-else

contains(val, pattern, text if match, text if not match)

class calibre.utils.formatter_functions.BuiltinContains[source]

contains(val, pattern, text if match, text if not match) -- periksa jika val mengandungi padanan untuk ungkapan nalar pattern. Kembalikan text if match jika padanan ditemui, jika tidak kembalikan text if no match

ifempty(val, text if empty)

class calibre.utils.formatter_functions.BuiltinIfempty[source]

ifempty(val, text if empty) -- kembalikan val jika val tidak kosong, jika tidak kembalikan text if empty

test(val, text if not empty, text if empty)

class calibre.utils.formatter_functions.BuiltinTest[source]

test(val, text if not empty, text if empty) -- kembalikan text if not empty jika val tidak kosong, jika tidak kembalikan text if empty

Iterating over values

first_non_empty(value, value, ...)

class calibre.utils.formatter_functions.BuiltinFirstNonEmpty[source]

first_non_empty(value, value, ...) -- kembalikan nilai pertama yang tidak kosong. Jika semua nilai adalah kosong, maka nilai kosong dikembalikan. Anda boleh adakan sebanyak mana nilai yang anda mahu.

lookup(val, pattern, field, pattern, field, ..., else_field)

class calibre.utils.formatter_functions.BuiltinLookup[source]

lookup(val, pattern, field, pattern, field, ..., else_field) -- seperti switch, kecuali argumen adalah nama medan (data meta), bukan teks. Nilai medan bersesuaian akan diperoleh dan digunakan. Perhatian oleh kerana lajur komposit adalah medan, anda boleh guna fungsi ini dalam satu medan komposit untuk guna nila bagi beberapa medan komposit yang lain. Ia sangat-sangat berguna ketika membina laluan penyimpanan pembolehubah

switch(val, pattern, value, pattern, value, ..., else_value)

class calibre.utils.formatter_functions.BuiltinSwitch[source]

switch(val, pattern, value, pattern, value, ..., else_value) -- bagi setiap pattern, value pair, semak jika val sepadan dengan ungkapan nalar pattern dan jika ia, kembalikan value tersebut. Jika tiada pola dipadankan, maka else_value dikembalikan. Anda boleh adakan sebanyak mana pasangan pattern, value yang anda kehendaki

List lookup

_identifier_in_list(val, id, found_val, not_found_val)

class calibre.utils.formatter_functions.BuiltinIdentifierInList[source]

_identifier_in_list(val, id, found_val, not_found_val) -- anggap val sebagai senarai pengecam yang dipisah dengan tanda koma, membandingkan rentetan terhadap setiap nilai dalam senarai. Satu pengecam mempunyai format "identifier:value". Parameter id patut sama ada "id" atau "id:regexp". Padanan kata pertama jika terdapat mana-mana pengecam yang id tersebut. Padanan kata kedua jika ungkapan nalar sepadan dengan nilai pengecam. Jika terdapat satu padanan kembalikan found_val, jika tidak kembalikan not_found_val.

in_list(val, separator, pattern, found_val, ..., not_found_val)

class calibre.utils.formatter_functions.BuiltinInList[source]

in_list(val, separator, pattern, found_val, ..., not_found_val) -- treat val as a list of items separated by separator, evaluating the pattern against each value in the list. If the pattern matches a value, return found_val, otherwise return not_found_val. The pattern and found_value can be repeated as many times as desired, permitting returning different values depending on the search. The patterns are checked in order. The first match is returned.

list_item(val, index, separator)

class calibre.utils.formatter_functions.BuiltinListitem[source]

list_item(val, index, separator) -- tafsir nilai sebagai senarai item dipisah dengan separator, kembalikan item ke-index. Item pertam adalah nombor sifar. Item terakhir boleh dikembalikan menggunakan list_item(-1,separator). Jika item tidak berada dalam senarai, nilai kosong dikembalikan. Pemisah mempunyai maksud yang sama dalam fungsi kiraan.

select(val, key)

class calibre.utils.formatter_functions.BuiltinSelect[source]

select(val, key) -- tafsir nilai sebagai senarai item dipisah-tanda-koma, dengan item sebagai "id:value". Cari pasangan dengan id menyamai key, dan kembalikan nilai berkaitan.

str_in_list(val, separator, string, found_val, ..., not_found_val)

class calibre.utils.formatter_functions.BuiltinStrInList[source]

str_in_list(val, separator, string, found_val, ..., not_found_val) -- treat val as a list of items separated by separator, comparing the string against each value in the list. If the string matches a value (ignoring case) then return found_val, otherwise return not_found_val. If the string contains separators, then it is also treated as a list and each value is checked. The string and found_value can be repeated as many times as desired, permitting returning different values depending on the search. The strings are checked in order. The first match is returned.

List manipulation

count(val, separator)

class calibre.utils.formatter_functions.BuiltinCount[source]

count(val, separator) -- tafsir nilai sebagai senarai item dipisah dengan tanda separator, mengembalikan sebilangan item di dalam senarai. Kebanyakan senarai gunakan tanda koma sebagai pemisah, tetapi pengarang boleh gunakan tanda ampersan. Contoh: {tags:count(,)}, {authors:count(&)}

list_difference(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListDifference[source]

list_difference(list1, list2, separator) -- kembalikan senarai dengan membuang item list1 yang ditemui dalam list2, menggunakan perbandingan tak-sensitif-kata. Item dalam list1 dan list2 diasing dengan tanda-pemisah, begitu juga item dalam senarai dikembalikan.

list_equals(list1, sep1, list2, sep2, yes_val, no_val)

class calibre.utils.formatter_functions.BuiltinListEquals[source]

list_equals(list1, sep1, list2, sep2, yes_val, no_val) -- kembalikan yes_val jika list1 dan list2 mengandungi item yang sama, jika tidak kembalikan no_val. Item ditentukan oleh pemisahan setiap senarai menggunakan aksara pemisah yang sesuai (sep1 atau sep2). Tertib item dalam senarai tidak relevan. Perbandingan adalah tidak-sensitif-kata.

list_intersection(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListIntersection[source]

list_intersection(list1, list2, separator) -- kembalikan senarai dengan membuang item list1 yang ditemui dalam list2, menggunakan perbandingan tak-sensitif-kata. Item dalam list1 dan list2 diasing dengan tanda-pemisah, begitu juga item dalam senarai dikembalikan.

list_re(src_list, separator, include_re, opt_replace)

class calibre.utils.formatter_functions.BuiltinListRe[source]

list_re(src_list, separator, include_re, opt_replace) -- Biina senarai dengan pemisahan pertama src_list ke dalam item menggunakan aksara pemisah. Bagi setiap item di dalam senarai, tandakan jika memadani include_re. Jika ia berlaku, maka tambah ia ke dalam senarai yang dikembalikan. Jika opt_replace bukan rentetan kosong, maka laksana penggantian sebelum menambah item ke dalam senarai dikembalikan.

list_re_group(src_list, separator, include_re, search_re, group_1_template, ...)

class calibre.utils.formatter_functions.BuiltinListReGroup[source]

list_re_group(src_list, separator, include_re, search_re, group_1_template, ...) -- Seperti list_re pengecualian penggantian bukan pilihan. Ia menggunakan re_group(list_item, search_re, group_1_template, ...) bila membuat penggantian pada senarai hasil.

list_sort(list, direction, separator)

class calibre.utils.formatter_functions.BuiltinListSort[source]

list_sort(list, direction, separator) -- kembalikan senarai terisih menggunakan isih sensitif-kata. Jika arah adalah sifat, senarai diisih menaik, jika tidak menurun. Item senarai diasing dengan tanda-pemisah, begitu juga item dalam senarai dikembalikan.

list_union(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListUnion[source]

list_union(list1, list2, separator) -- kembalikan senarai yang dibuat dengan menggabungkan item di dalam list1 dan list2, membuang item pendua menggunakan perbandingan tak-sensitif-kata. Jika item berbeza kata, yang berada dalam list1 digunakan. Item dalam list1 dan list2 diasing dengan tanda-pemisah, begitu juga item dalam senarai dikembalikan.

subitems(val, start_index, end_index)

class calibre.utils.formatter_functions.BuiltinSubitems[source]

subitems(val, start_index, end_index) -- Fungsi ini digunakan untuk pecahkan senarai item seperti genre. Ia tafsir nilai sebagai senarai item dipisah tanda-koma, yang mana setiap item adalah senarai dipisah tanda-noktah. Kembalikan senarai baharu dibuat oleh pencarian pertama semua item dipisah tanda-noktah, kemudian bagi setiap item tersebut, ekstrak komponen start_index hingga the end_index, seterusnya gabungkan keputusan bersama-sama. Komponen pertama ialah senarai dipisah tanda-noktah yang mempunyai indeks sifar. Jika indeks adalah negatif, maka ia dikira dari penghujung senarai. Dalam kes khas, end_index sifar dianggap sebagai panjang senarai. Contoh penggunaan mod templat asas dan anggap nilai #genre bagi "A.B.C": {#genre:subitems(0,1)} kembalikan "A". {#genre:subitems(0,2)} kembalikan "A.B". {#genre:subitems(1,0)} kembalikan "B.C". Menganggap nilai #genre bagi "A.B.C, D.E.F", {#genre:subitems(0,1)} kembalikan "A, D". {#genre:subitems(0,2)} kembalikan "A.B, D.E"

sublist(val, start_index, end_index, separator)

class calibre.utils.formatter_functions.BuiltinSublist[source]

sublist(val, start_index, end_index, separator) -- interpret the value as a list of items separated by separator, returning a new list made from the start_index to the end_index item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples using basic template mode and assuming that the tags column (which is comma-separated) contains "A, B, C": {tags:sublist(0,1,\,)} returns "A". {tags:sublist(-1,0,\,)} returns "C". {tags:sublist(0,-1,\,)} returns "A, B".

Other

assign(id, val)

class calibre.utils.formatter_functions.BuiltinAssign[source]

assign(id, val) -- umpuk val ke id, kemudian kembalikan val. id mestilah pengecam, bukan ungkapan

Recursion

eval(template)

class calibre.utils.formatter_functions.BuiltinEval[source]

eval(template) -- nilaikan templat, melepasi pembolehubah setempat (yang telah diumpuk) selain dari data meta buku. Ia membenarkan penggunaan pemproses templat untuk bina keputusan yang lebih kompleks dari pembolehubah semasa. Oleh kerana aksara { and } adalah istimewa, anda mesti gunakan [[ untuk aksara { dan ]] untuk aksara }; ia ditukar secara automatik. Perhatian awalan dan akhiran (sintaks |prefix|suffix) tidak dapat digunakan dalam argumen bagi fungsi ini bila menggunakan mod program templat.

template(x)

class calibre.utils.formatter_functions.BuiltinTemplate[source]

template(x) -- nilaikan x sebagai templat. Penilaian ini selesai dalam konteks ia sendiri, bermaksud pembolehubah tidak berkongsi diantara pemanggil dengan penilaian templat. Oleh kerana aksara { and } adalah istimewa, anda mesti gunakan [[ untuk aksara { dan ]] untuk aksara }; ia ditukar secara automatik. Sebagai contoh, template('[[title_sort]]') akan nilaikan templat {title_sort} dan kembalikan nilainya. Perhatian awalan dan akhiran (sintaks |prefix|suffix) tidak daapt digunakan dalam argumen bagi fungsi ini bila menggunakan mod program templat.

Relational

cmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinCmp[source]

cmp(x, y, lt, eq, gt) -- buat perbandingan selepas menukar kedua-dua kepada nombor. Kembalikan lt jika x < y. Kembalikan eq jika x == y. Jika tidak kembalikan gt.

first_matching_cmp(val, cmp1, result1, cmp2, r2, ..., else_result)

class calibre.utils.formatter_functions.BuiltinFirstMatchingCmp[source]

first_matching_cmp(val, cmp1, result1, cmp2, r2, ..., else_result) -- bandingkan "val < cmpN" dalam jujukan, mengembalikan resultN bagi perbandingan pertama yang berjaya. Kembalikan else_result jika tiada perbandingan yang berjaya. Contohnya: first_matching_cmp(10,5,"small",10,"middle",15,"large","giant") kembalikan "large". Contohnya yang sama dengan nilai pertama 16 kembalikan "giant".

strcmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinStrcmp[source]

strcmp(x, y, lt, eq, gt) -- buat perbandingan tidak-sensitif-kata bagi x dan y sebagai rentetan. Kembalikan lt jika x < y. Kembalikan eq jika x == y. Jika tidak kembalikan gt.

String case changes

capitalize(val)

class calibre.utils.formatter_functions.BuiltinCapitalize[source]

capitalize(val) -- kembalikan val dibesarkan hurufnya

lowercase(val)

class calibre.utils.formatter_functions.BuiltinLowercase[source]

lowercase(val) -- kembalikan val dengan huruf kecil

titlecase(val)

class calibre.utils.formatter_functions.BuiltinTitlecase[source]

titlecase(val) -- kembalikan val dengan kata-tajuk

uppercase(val)

class calibre.utils.formatter_functions.BuiltinUppercase[source]

uppercase(val) -- kembalikan val dengan huruf besar

String manipulation

re(val, pattern, replacement)

class calibre.utils.formatter_functions.BuiltinRe[source]

re(val, pattern, replacement) -- return val after applying the regular expression. All instances of pattern are replaced with replacement. As in all of calibre, these are Python-compatible regular expressions

re_group(val, pattern, template_for_group_1, for_group_2, ...)

class calibre.utils.formatter_functions.BuiltinReGroup[source]

re_group(val, pattern, template_for_group_1, for_group_2, ...) -- kembalikan rentetan yang dibuat dengan melaksanakan pola ungkapan nalar pada val dan ganti setiap kejadian yang sepadan dengan rentetan yang dikira dengan menggantikan setiap kumpulan sepadan dengan nilai dikembalikan oleh templat berkenaan. Nilai sepadan asal bagi kumpulan tersedia sebagai $. Dalam mod program templat, seperti untuk templat dan fungsi eval, anda guna [[ { dan ]] untuk }. Contoh berikut dalam mod program templat adalah untuk siri lebih dari satu perkataan dan huruf besar perkataan pertama: {series:'re_group($, "(S* )(.*)", "[[$:uppercase()]]", "[[$]]")'}

shorten(val, left chars, middle text, right chars)

class calibre.utils.formatter_functions.BuiltinShorten[source]

shorten(val, left chars, middle text, right chars) -- Kembalikan versi pendek val, mengandungi aksara left chars dari permulaan val ,diikuti dengan middle text, diikuti dengan aksara right chars dari penghujung rentetan. Left chars dan`right chars` mestilah integer. Contoh, anggap tajuk buku ialah Ancient English Laws in the Times of Ivanhoe, dan anda mahu ia dimuat-suakan dengan jarak maksimum 15 aksara. Jika anda guna {title:shorten(9,-,5)}, hasil akan jadi Ancient E-nhoe. Jika panjang medan kurang dari aksara kiri + aksara kanan + panjang teks tengah bagi middle text, maka medan akan guna yang asal. Contohnya, tajuk The Dome tidak akan berubah.

strcat(a, b, ...)

class calibre.utils.formatter_functions.BuiltinStrcat[source]

strcat(a, b, ...) -- boleh ambil mana-mana bilangan argumen. Kembalikan rentetan yang terbentuk dengan memangkas semua argumen

strcat_max(max, string1, prefix2, string2, ...)

class calibre.utils.formatter_functions.BuiltinStrcatMax[source]

strcat_max(max, string1, prefix2, string2, ...) -- Kembalikan rentetan yang terbentuk oleh pemangkasan argumen. Nilai dikembalikan adalah diawali pada string1. Pasangan Prefix, string ditambah ke penghujung nilai asalkan panjang rentetan yang terhasil adalah kurang dari max. String1 dikembalikan walaupun jika string1 lebih panjang berbanding max. Anda boleh lepasi sebanyak mana pasangan prefix, string yang anda kehendaki.

strlen(a)

class calibre.utils.formatter_functions.BuiltinStrlen[source]

strlen(a) -- Kembalikan panjang rentetan yang dilepasi sebagai argumen

substr(str, start, end)

class calibre.utils.formatter_functions.BuiltinSubstr[source]

substr(str, start, end) -- kembalikan aksara start hingga end bagi str. Aksara pertama dalam str ialah aksara sifar. Jika penghujung adalah negatif, maka ia menunjukkan kebanyakan aksara dikira dari sebelah kanan. Jika penghujung adalah sifar, maka ia menunjukkan aksara terakhir. Sebagai contoh, substr('12345', 1, 0) kembalikan '2345', dan substr('12345', 1, -1) kembalikan '234'.

swap_around_comma(val)

class calibre.utils.formatter_functions.BuiltinSwapAroundComma[source]

swap_around_comma(val) -- berikan nilai dalam bentuk "B, A", kembalikan "A B". Ia merupakan pertukaran nama paling berguna dalam format LN, FN ke FN LN. Jika tiada tanda koma, fungsi mengembalikan val tanpa perubahan

transliterate(a)

class calibre.utils.formatter_functions.BuiltinTransliterate[source]

transliterate(a) -- Kembalikan rentetan dalam abjad latin terbentuk oleh penganggaran sebutan perkataan dalam rentetan sumber. Sebagai contoh, jika sumber ialah "Фёдор Миха́йлович Достоевский" fungsi kembalikan "Fiodor Mikhailovich Dostoievskii".

API of the Metadata objects

The python implementation of the template functions is passed in a Metadata object. Knowing it's API is useful if you want to define your own template functions.

class calibre.ebooks.metadata.book.base.Metadata(title, authors=(u'Tidak Diketahui', ), other=None, template_cache=None, formatter=None)[source]

A class representing all the metadata for a book. The various standard metadata fields are available as attributes of this object. You can also stick arbitrary attributes onto this object.

Metadata from custom columns should be accessed via the get() method, passing in the lookup name for the column, for example: "#mytags".

Use the is_null() method to test if a field is null.

This object also has functions to format fields into strings.

The list of standard metadata fields grows with time is in STANDARD_METADATA_FIELDS.

Please keep the method based API of this class to a minimum. Every method becomes a reserved field name.

is_null(field)[source]

Return True if the value of field is null in this object. 'null' means it is unknown or evaluates to False. So a title of _('Unknown') is null or a language of 'und' is null.

Be careful with numeric fields since this will return True for zero as well as None.

Also returns True if the field does not exist.

deepcopy(class_generator=<function <lambda>>)[source]

Do not use this method unless you know what you are doing, if you want to create a simple clone of this object, use deepcopy_metadata() instead. Class_generator must be a function that returns an instance of Metadata or a subclass of it.

get_identifiers()[source]

Return a copy of the identifiers dictionary. The dict is small, and the penalty for using a reference where a copy is needed is large. Also, we don't want any manipulations of the returned dict to show up in the book.

set_identifiers(identifiers)[source]

Set all identifiers. Note that if you previously set ISBN, calling this method will delete it.

set_identifier(typ, val)[source]

If val is empty, deletes identifier of type typ

standard_field_keys()[source]

return a list of all possible keys, even if this book doesn't have them

custom_field_keys()[source]

return a list of the custom fields in this book

all_field_keys()[source]

All field keys known by this instance, even if their value is None

metadata_for_field(key)[source]

return metadata describing a standard or custom field.

all_non_none_fields()[source]

Return a dictionary containing all non-None metadata fields, including the custom ones.

get_standard_metadata(field, make_copy)[source]

return field metadata from the field if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

get_all_standard_metadata(make_copy)[source]

return a dict containing all the standard field metadata associated with the book.

get_all_user_metadata(make_copy)[source]

return a dict containing all the custom field metadata associated with the book.

get_user_metadata(field, make_copy)[source]

return field metadata from the object if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

set_all_user_metadata(metadata)[source]

store custom field metadata into the object. Field is the key name not the label

set_user_metadata(field, metadata)[source]

store custom field metadata for one column into the object. Field is the key name not the label

template_to_attribute(other, ops)[source]

Takes a list [(src,dest), (src,dest)], evaluates the template in the context of other, then copies the result to self[dest]. This is on a best-efforts basis. Some assignments can make no sense.

smart_update(other, replace_metadata=False)[source]

Merge the information in other into self. In case of conflicts, the information in other takes precedence, unless the information in other is NULL.

format_field(key, series_with_index=True)[source]

Returns the tuple (display_name, formatted_value)

to_html()[source]

A HTML representation of this object.

calibre.ebooks.metadata.book.base.STANDARD_METADATA_FIELDS

The set of standard metadata fields.

__docformat__ = 'restructuredtext en'

'''
All fields must have a NULL value represented as None for simple types,
an empty list/dictionary for complex types and (None, None) for cover_data
'''

SOCIAL_METADATA_FIELDS = frozenset((
    'tags',             # Ordered list
    'rating',           # A floating point number between 0 and 10
    'comments',         # A simple HTML enabled string
    'series',           # A simple string
    'series_index',     # A floating point number
    # Of the form { scheme1:value1, scheme2:value2}
    # For example: {'isbn':'123456789', 'doi':'xxxx', ... }
    'identifiers',
))

'''
The list of names that convert to identifiers when in get and set.
'''

TOP_LEVEL_IDENTIFIERS = frozenset((
    'isbn',
))

PUBLICATION_METADATA_FIELDS = frozenset((
    'title',            # title must never be None. Should be _('Unknown')
    # Pseudo field that can be set, but if not set is auto generated
    # from title and languages
    'title_sort',
    'authors',          # Ordered list. Must never be None, can be [_('Unknown')]
    'author_sort_map',  # Map of sort strings for each author
    # Pseudo field that can be set, but if not set is auto generated
    # from authors and languages
    'author_sort',
    'book_producer',
    'timestamp',        # Dates and times must be timezone aware
    'pubdate',
    'last_modified',
    'rights',
    # So far only known publication type is periodical:calibre
    # If None, means book
    'publication_type',
    'uuid',             # A UUID usually of type 4
    'languages',        # ordered list of languages in this publication
    'publisher',        # Simple string, no special semantics
    # Absolute path to image file encoded in filesystem_encoding
    'cover',
    # Of the form (format, data) where format is, for e.g. 'jpeg', 'png', 'gif'...
    'cover_data',
    # Either thumbnail data, or an object with the attribute
    # image_path which is the path to an image file, encoded
    # in filesystem_encoding
    'thumbnail',
))

BOOK_STRUCTURE_FIELDS = frozenset((
    # These are used by code, Null values are None.
    'toc', 'spine', 'guide', 'manifest',
))

USER_METADATA_FIELDS = frozenset((
    # A dict of dicts similar to field_metadata. Each field description dict
    # also contains a value field with the key #value#.
    'user_metadata',
))

DEVICE_METADATA_FIELDS = frozenset((
    'device_collections',   # Ordered list of strings
    'lpath',                # Unicode, / separated
    'size',                 # In bytes
    'mime',                 # Mimetype of the book file being represented
))

CALIBRE_METADATA_FIELDS = frozenset((
    'application_id',   # An application id, currently set to the db_id.
    'db_id',            # the calibre primary key of the item.
    'formats',          # list of formats (extensions) for this book
    # a dict of user category names, where the value is a list of item names
    # from the book that are in that category
    'user_categories',
    # a dict of author to an associated hyperlink
    'author_link_map',
))

ALL_METADATA_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           USER_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# All fields except custom fields
STANDARD_METADATA_FIELDS = SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# Metadata fields that smart update must do special processing to copy.
SC_FIELDS_NOT_COPIED =     frozenset(('title', 'title_sort', 'authors',
                                      'author_sort', 'author_sort_map',
                                      'cover_data', 'tags', 'languages',
                                      'identifiers'))

# Metadata fields that smart update should copy only if the source is not None
SC_FIELDS_COPY_NOT_NULL =  frozenset(('device_collections', 'lpath', 'size', 'comments', 'thumbnail'))

# Metadata fields that smart update should copy without special handling
SC_COPYABLE_FIELDS =       SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS) - \
                           SC_FIELDS_NOT_COPIED.union(
                           SC_FIELDS_COPY_NOT_NULL)

SERIALIZABLE_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           USER_METADATA_FIELDS).union(
                           PUBLICATION_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS) - \
                           frozenset(('device_collections', 'formats',
                               'cover_data'))
# these are rebuilt when needed