mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Refactor to make build_template_regexp a utility function
This commit is contained in:
parent
2292991006
commit
8bec5211c1
@ -5,7 +5,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
|||||||
Device drivers.
|
Device drivers.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import sys, time, pprint, operator
|
import sys, time, pprint, operator, re
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
|
|
||||||
@ -27,6 +27,29 @@ def strftime(epoch, zone=time.gmtime):
|
|||||||
src[2] = INVERSE_MONTH_MAP[int(src[2])]
|
src[2] = INVERSE_MONTH_MAP[int(src[2])]
|
||||||
return ' '.join(src)
|
return ' '.join(src)
|
||||||
|
|
||||||
|
def build_template_regexp(template):
|
||||||
|
from calibre import prints
|
||||||
|
|
||||||
|
def replfunc(match, seen=None):
|
||||||
|
v = match.group(1)
|
||||||
|
if v in ['authors', 'author_sort']:
|
||||||
|
v = 'author'
|
||||||
|
if v in ('title', 'series', 'series_index', 'isbn', 'author'):
|
||||||
|
if v not in seen:
|
||||||
|
seen.add(v)
|
||||||
|
return '(?P<' + v + '>.+?)'
|
||||||
|
return '(.+?)'
|
||||||
|
s = set()
|
||||||
|
f = partial(replfunc, seen=s)
|
||||||
|
|
||||||
|
try:
|
||||||
|
template = template.rpartition('/')[2]
|
||||||
|
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
||||||
|
except:
|
||||||
|
prints(u'Failed to parse template: %r'%template)
|
||||||
|
template = u'{title} - {authors}'
|
||||||
|
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
||||||
|
|
||||||
def get_connected_device():
|
def get_connected_device():
|
||||||
from calibre.customize.ui import device_plugins
|
from calibre.customize.ui import device_plugins
|
||||||
from calibre.devices.scanner import DeviceScanner
|
from calibre.devices.scanner import DeviceScanner
|
||||||
|
@ -7,8 +7,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2012, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2012, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import re
|
from functools import wraps
|
||||||
from functools import wraps, partial
|
|
||||||
|
|
||||||
from calibre import prints
|
from calibre import prints
|
||||||
from calibre.constants import DEBUG
|
from calibre.constants import DEBUG
|
||||||
@ -61,27 +60,12 @@ class MTPDeviceBase(DevicePlugin):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def build_template_regexp(self):
|
def build_template_regexp(self):
|
||||||
return None
|
from calibre.devices import build_template_regexp
|
||||||
# TODO: Implement this
|
# TODO: Use the device specific template here
|
||||||
def replfunc(match, seen=None):
|
return build_template_regexp(self.default_save_template)
|
||||||
v = match.group(1)
|
|
||||||
if v in ['authors', 'author_sort']:
|
|
||||||
v = 'author'
|
|
||||||
if v in ('title', 'series', 'series_index', 'isbn', 'author'):
|
|
||||||
if v not in seen:
|
|
||||||
seen.add(v)
|
|
||||||
return '(?P<' + v + '>.+?)'
|
|
||||||
return '(.+?)'
|
|
||||||
s = set()
|
|
||||||
f = partial(replfunc, seen=s)
|
|
||||||
template = None
|
|
||||||
try:
|
|
||||||
template = self.save_template().rpartition('/')[2]
|
|
||||||
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
|
||||||
except:
|
|
||||||
prints(u'Failed to parse template: %r'%template)
|
|
||||||
template = u'{title} - {authors}'
|
|
||||||
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def default_save_template(cls):
|
||||||
|
from calibre.library.save_to_disk import config
|
||||||
|
return config().parse().send_template
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ driver. It is intended to be subclassed with the relevant parts implemented
|
|||||||
for a particular device.
|
for a particular device.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import os, re, time, json, functools, shutil
|
import os, time, json, shutil
|
||||||
from itertools import cycle
|
from itertools import cycle
|
||||||
|
|
||||||
from calibre.constants import numeric_version
|
from calibre.constants import numeric_version
|
||||||
@ -404,25 +404,8 @@ class USBMS(CLI, Device):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def build_template_regexp(cls):
|
def build_template_regexp(cls):
|
||||||
def replfunc(match, seen=None):
|
from calibre.devices import build_template_regexp
|
||||||
v = match.group(1)
|
return build_template_regexp(cls.save_template())
|
||||||
if v in ['authors', 'author_sort']:
|
|
||||||
v = 'author'
|
|
||||||
if v in ('title', 'series', 'series_index', 'isbn', 'author'):
|
|
||||||
if v not in seen:
|
|
||||||
seen.add(v)
|
|
||||||
return '(?P<' + v + '>.+?)'
|
|
||||||
return '(.+?)'
|
|
||||||
s = set()
|
|
||||||
f = functools.partial(replfunc, seen=s)
|
|
||||||
template = None
|
|
||||||
try:
|
|
||||||
template = cls.save_template().rpartition('/')[2]
|
|
||||||
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
|
||||||
except:
|
|
||||||
prints(u'Failed to parse template: %r'%template)
|
|
||||||
template = u'{title} - {authors}'
|
|
||||||
return re.compile(re.sub('{([^}]*)}', f, template) + '([_\d]*$)')
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def path_to_unicode(cls, path):
|
def path_to_unicode(cls, path):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user