mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
commit
56ab1be76c
@ -552,6 +552,11 @@ In `GPM` the functions described in `Single Function Mode` all require an additi
|
||||
|
||||
format_date(raw_field('pubdate'), 'yyyy')
|
||||
|
||||
* ``format_date_field(field_name, format_string)`` -- format the value in the field ``field_name``, which must be the lookup name of date field, either standard or custom. See ``format_date()`` for the formatting codes. This function is much faster than format_date and should be used when you are formatting the value in a field (column). It can't be used for computed dates or dates in string variables. Examples::
|
||||
|
||||
format_date_field('pubdate', 'yyyy.MM.dd')
|
||||
format_date_field('#date_read', 'MMM dd, yyyy')
|
||||
|
||||
* ``formats_modtimes(date_format_string)`` -- return a comma-separated list of colon-separated items ``FMT:DATE`` representing modification times for the formats of a book. The ``date_format_string`` parameter specifies how the date is to be formatted. See the ``format_date()`` function for details. You can use the ``select`` function to get the modification time for a specific format. Note that format names are always uppercase, as in EPUB.
|
||||
* ``formats_paths()`` -- return a comma-separated list of colon-separated items ``FMT:PATH`` giving the full path to the formats of a book. You can use the select function to get the path for a specific format. Note that format names are always uppercase, as in EPUB.
|
||||
* ``formats_sizes()`` -- return a comma-separated list of colon-separated ``FMT:SIZE`` items giving the sizes in bytes of the formats of a book. You can use the select function to get the size for a specific format. Note that format names are always uppercase, as in EPUB.
|
||||
|
@ -1285,6 +1285,40 @@ class BuiltinFormatDate(BuiltinFormatterFunction):
|
||||
return s
|
||||
|
||||
|
||||
class BuiltinFormatDateField(BuiltinFormatterFunction):
|
||||
name = 'format_date_field'
|
||||
arg_count = 2
|
||||
category = 'Formatting values'
|
||||
__doc__ = doc = _("format_date_field(field_name, format_string) -- format "
|
||||
"the value in the field 'field_name', which must be the lookup name "
|
||||
"of date field, either standard or custom. See 'format_date' for "
|
||||
"the formatting codes. This function is much faster than format_date "
|
||||
"and should be used when you are formatting the value in a field "
|
||||
"(column). It can't be used for computed dates or dates in string "
|
||||
"variables. Example: format_date_field('pubdate', 'yyyy.MM.dd')")
|
||||
|
||||
def evaluate(self, formatter, kwargs, mi, locals, field, format_string):
|
||||
try:
|
||||
if field not in mi.all_field_keys():
|
||||
return _('Unknown field %s passed to function %s')%(field, 'format_date_field')
|
||||
val = mi.get(field, None)
|
||||
if val is None:
|
||||
s = ''
|
||||
elif format_string == 'to_number':
|
||||
s = val.timestamp()
|
||||
elif format_string.startswith('from_number'):
|
||||
val = datetime.fromtimestamp(float(val))
|
||||
f = format_string[12:]
|
||||
s = format_date(val, f if f else 'iso')
|
||||
else:
|
||||
s = format_date(val, format_string)
|
||||
return s
|
||||
except:
|
||||
traceback.print_exc()
|
||||
s = 'BAD DATE'
|
||||
return s
|
||||
|
||||
|
||||
class BuiltinUppercase(BuiltinFormatterFunction):
|
||||
name = 'uppercase'
|
||||
arg_count = 1
|
||||
@ -2522,7 +2556,7 @@ _formatter_builtins = [
|
||||
BuiltinExtraFileNames(), BuiltinExtraFileSize(), BuiltinExtraFileModtime(),
|
||||
BuiltinFirstNonEmpty(), BuiltinField(), BuiltinFieldExists(),
|
||||
BuiltinFinishFormatting(), BuiltinFirstMatchingCmp(), BuiltinFloor(),
|
||||
BuiltinFormatDate(), BuiltinFormatNumber(), BuiltinFormatsModtimes(),
|
||||
BuiltinFormatDate(), BuiltinFormatDateField(), BuiltinFormatNumber(), BuiltinFormatsModtimes(),
|
||||
BuiltinFormatsPaths(), BuiltinFormatsSizes(), BuiltinFractionalPart(),
|
||||
BuiltinGlobals(), BuiltinHasExtraFiles(),
|
||||
BuiltinHasCover(), BuiltinHumanReadable(), BuiltinIdentifierInList(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user