mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Basic cleanups for the python template function merge
This commit is contained in:
parent
7e577735ba
commit
2d9ac6aa54
@ -509,8 +509,8 @@ The following program produces the same results as the original recipe, using on
|
|||||||
It would be possible to do the above with no custom columns by putting the program into the template box of the plugboard. However, to do so, all comments must be removed because the plugboard text box does not support multi-line editing. It is debatable whether the gain of not having the custom column is worth the vast increase in difficulty caused by the program being one giant line.
|
It would be possible to do the above with no custom columns by putting the program into the template box of the plugboard. However, to do so, all comments must be removed because the plugboard text box does not support multi-line editing. It is debatable whether the gain of not having the custom column is worth the vast increase in difficulty caused by the program being one giant line.
|
||||||
|
|
||||||
|
|
||||||
User-defined python template functions
|
User-defined Python template functions
|
||||||
-------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
You can add your own python functions to the template processor. Such functions are written in Python, and can be used in any of the three template programming modes. The functions are added by going to guilabel`Preferences -> Advanced -> Template functions`. Instructions are shown in that dialog.
|
You can add your own python functions to the template processor. Such functions are written in Python, and can be used in any of the three template programming modes. The functions are added by going to guilabel`Preferences -> Advanced -> Template functions`. Instructions are shown in that dialog.
|
||||||
|
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
|
# License: GPLv3 Copyright: 2020, Charles Haley
|
||||||
|
|
||||||
__license__ = 'GPL v3'
|
|
||||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
|
||||||
__docformat__ = 'restructuredtext en'
|
|
||||||
|
|
||||||
|
|
||||||
from calibre.gui2.actions import InterfaceAction
|
from calibre.gui2.actions import InterfaceAction
|
||||||
from calibre.gui2.preferences.main import Preferences
|
from calibre.gui2.preferences.main import Preferences
|
||||||
@ -27,4 +22,3 @@ class ShowTemplateFunctionsAction(InterfaceAction):
|
|||||||
d = Preferences(self.gui, initial_plugin=('Advanced', 'TemplateFunctions'),
|
d = Preferences(self.gui, initial_plugin=('Advanced', 'TemplateFunctions'),
|
||||||
close_after_initial=True)
|
close_after_initial=True)
|
||||||
d.exec_()
|
d.exec_()
|
||||||
|
|
||||||
|
@ -345,7 +345,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
def commit(self):
|
def commit(self):
|
||||||
pref_value = []
|
pref_value = []
|
||||||
for name, cls in iteritems(self.funcs):
|
for name, cls in iteritems(self.funcs):
|
||||||
print(name)
|
|
||||||
if name not in self.builtins:
|
if name not in self.builtins:
|
||||||
pref_value.append(cls.to_pref())
|
pref_value.append(cls.to_pref())
|
||||||
for v in self.st_funcs.values():
|
for v in self.st_funcs.values():
|
||||||
@ -359,6 +358,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from PyQt5.Qt import QApplication
|
from calibre import Application
|
||||||
app = QApplication([])
|
app = Application([])
|
||||||
test_widget('Advanced', 'TemplateFunctions')
|
test_widget('Advanced', 'TemplateFunctions')
|
||||||
|
del app
|
||||||
|
@ -307,7 +307,7 @@ class _Parser(object):
|
|||||||
if subprog is None:
|
if subprog is None:
|
||||||
text = self.funcs[name].program_text
|
text = self.funcs[name].program_text
|
||||||
if not text.startswith('program:'):
|
if not text.startswith('program:'):
|
||||||
self.error((_('A stored template must begin with program:')))
|
self.error(_('A stored template must begin with program:'))
|
||||||
text = text[len('program:'):]
|
text = text[len('program:'):]
|
||||||
subprog = _Parser().program(self, self.funcs,
|
subprog = _Parser().program(self, self.funcs,
|
||||||
self.parent.lex_scanner.scan(text))
|
self.parent.lex_scanner.scan(text))
|
||||||
@ -462,7 +462,7 @@ class _Interpreter(object):
|
|||||||
|
|
||||||
def do_node_call(self, prog, args=None):
|
def do_node_call(self, prog, args=None):
|
||||||
if args is None:
|
if args is None:
|
||||||
args = list()
|
args = []
|
||||||
for arg in prog.expression_list:
|
for arg in prog.expression_list:
|
||||||
# evaluate the expression (recursive call)
|
# evaluate the expression (recursive call)
|
||||||
args.append(self.expr(arg))
|
args.append(self.expr(arg))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user