mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
uniform region (extra-edit)
This commit is contained in:
parent
5f24dfb868
commit
5540126765
@ -12,7 +12,7 @@ test_article = None
|
|||||||
# test_article = 'https://www.theatlantic.com/health/archive/2020/12/covid-19-second-surge/617415/?utm_source=feed'
|
# test_article = 'https://www.theatlantic.com/health/archive/2020/12/covid-19-second-surge/617415/?utm_source=feed'
|
||||||
|
|
||||||
|
|
||||||
# {{{ parse article JSON
|
# parse article JSON {{{
|
||||||
def process_image_block(lines, block):
|
def process_image_block(lines, block):
|
||||||
caption = block.get('captionText')
|
caption = block.get('captionText')
|
||||||
caption_lines = []
|
caption_lines = []
|
||||||
|
@ -12,7 +12,7 @@ test_article = None
|
|||||||
# test_article = 'https://www.theatlantic.com/health/archive/2020/12/covid-19-second-surge/617415/?utm_source=feed'
|
# test_article = 'https://www.theatlantic.com/health/archive/2020/12/covid-19-second-surge/617415/?utm_source=feed'
|
||||||
|
|
||||||
|
|
||||||
# {{{ parse article JSON
|
# parse article JSON {{{
|
||||||
def process_image_block(lines, block):
|
def process_image_block(lines, block):
|
||||||
caption = block.get('captionText')
|
caption = block.get('captionText')
|
||||||
caption_lines = []
|
caption_lines = []
|
||||||
|
@ -9,7 +9,7 @@ from calibre import prepare_string_for_xml
|
|||||||
from calibre.web.feeds.news import BasicNewsRecipe, classes
|
from calibre.web.feeds.news import BasicNewsRecipe, classes
|
||||||
|
|
||||||
|
|
||||||
# {{{ parse article JSON
|
# parse article JSON {{{
|
||||||
def process_image_block(lines, block):
|
def process_image_block(lines, block):
|
||||||
caption = block.get('captionText')
|
caption = block.get('captionText')
|
||||||
caption_lines = []
|
caption_lines = []
|
||||||
|
@ -30,9 +30,8 @@ __all__ = ['pofile', 'POFile', 'POEntry', 'mofile', 'MOFile', 'MOEntry',
|
|||||||
# the default encoding to use when encoding cannot be detected
|
# the default encoding to use when encoding cannot be detected
|
||||||
default_encoding = 'utf-8'
|
default_encoding = 'utf-8'
|
||||||
|
|
||||||
|
|
||||||
# python 2/3 compatibility helpers {{{
|
# python 2/3 compatibility helpers {{{
|
||||||
|
|
||||||
|
|
||||||
PY3 = True
|
PY3 = True
|
||||||
text_type = str
|
text_type = str
|
||||||
|
|
||||||
@ -42,9 +41,9 @@ def b(s):
|
|||||||
def u(s):
|
def u(s):
|
||||||
return s
|
return s
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# _pofile_or_mofile {{{
|
# _pofile_or_mofile {{{
|
||||||
|
|
||||||
|
|
||||||
def _pofile_or_mofile(f, type, **kwargs):
|
def _pofile_or_mofile(f, type, **kwargs):
|
||||||
"""
|
"""
|
||||||
Internal function used by :func:`polib.pofile` and :func:`polib.mofile` to
|
Internal function used by :func:`polib.pofile` and :func:`polib.mofile` to
|
||||||
@ -67,9 +66,9 @@ def _pofile_or_mofile(f, type, **kwargs):
|
|||||||
instance.wrapwidth = kwargs.get('wrapwidth', 78)
|
instance.wrapwidth = kwargs.get('wrapwidth', 78)
|
||||||
return instance
|
return instance
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# _is_file {{{
|
# _is_file {{{
|
||||||
|
|
||||||
|
|
||||||
def _is_file(filename_or_contents):
|
def _is_file(filename_or_contents):
|
||||||
"""
|
"""
|
||||||
Safely returns the value of os.path.exists(filename_or_contents).
|
Safely returns the value of os.path.exists(filename_or_contents).
|
||||||
@ -85,9 +84,9 @@ def _is_file(filename_or_contents):
|
|||||||
except (TypeError, ValueError, UnicodeEncodeError):
|
except (TypeError, ValueError, UnicodeEncodeError):
|
||||||
return False
|
return False
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function pofile() {{{
|
# function pofile() {{{
|
||||||
|
|
||||||
|
|
||||||
def pofile(pofile, **kwargs):
|
def pofile(pofile, **kwargs):
|
||||||
"""
|
"""
|
||||||
Convenience function that parses the po or pot file ``pofile`` and returns
|
Convenience function that parses the po or pot file ``pofile`` and returns
|
||||||
@ -117,9 +116,9 @@ def pofile(pofile, **kwargs):
|
|||||||
"""
|
"""
|
||||||
return _pofile_or_mofile(pofile, 'pofile', **kwargs)
|
return _pofile_or_mofile(pofile, 'pofile', **kwargs)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function mofile() {{{
|
# function mofile() {{{
|
||||||
|
|
||||||
|
|
||||||
def mofile(mofile, **kwargs):
|
def mofile(mofile, **kwargs):
|
||||||
"""
|
"""
|
||||||
Convenience function that parses the mo file ``mofile`` and returns a
|
Convenience function that parses the mo file ``mofile`` and returns a
|
||||||
@ -151,9 +150,9 @@ def mofile(mofile, **kwargs):
|
|||||||
"""
|
"""
|
||||||
return _pofile_or_mofile(mofile, 'mofile', **kwargs)
|
return _pofile_or_mofile(mofile, 'mofile', **kwargs)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function detect_encoding() {{{
|
# function detect_encoding() {{{
|
||||||
|
|
||||||
|
|
||||||
def detect_encoding(file, binary_mode=False):
|
def detect_encoding(file, binary_mode=False):
|
||||||
"""
|
"""
|
||||||
Try to detect the encoding used by the ``file``. The ``file`` argument can
|
Try to detect the encoding used by the ``file``. The ``file`` argument can
|
||||||
@ -212,9 +211,9 @@ def detect_encoding(file, binary_mode=False):
|
|||||||
return enc
|
return enc
|
||||||
return default_encoding
|
return default_encoding
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function escape() {{{
|
# function escape() {{{
|
||||||
|
|
||||||
|
|
||||||
def escape(st):
|
def escape(st):
|
||||||
"""
|
"""
|
||||||
Escapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r``, ``\\v``,
|
Escapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r``, ``\\v``,
|
||||||
@ -229,9 +228,9 @@ def escape(st):
|
|||||||
.replace('\f', r'\f')\
|
.replace('\f', r'\f')\
|
||||||
.replace('\"', r'\"')
|
.replace('\"', r'\"')
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function unescape() {{{
|
# function unescape() {{{
|
||||||
|
|
||||||
|
|
||||||
def unescape(st):
|
def unescape(st):
|
||||||
"""
|
"""
|
||||||
Unescapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r``, ``\\v``,
|
Unescapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r``, ``\\v``,
|
||||||
@ -256,9 +255,9 @@ def unescape(st):
|
|||||||
return m # handles escaped double quote
|
return m # handles escaped double quote
|
||||||
return re.sub(r'\\(\\|n|t|r|v|b|f|")', unescape_repl, st)
|
return re.sub(r'\\(\\|n|t|r|v|b|f|")', unescape_repl, st)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# function natural_sort() {{{
|
# function natural_sort() {{{
|
||||||
|
|
||||||
|
|
||||||
def natural_sort(lst):
|
def natural_sort(lst):
|
||||||
"""
|
"""
|
||||||
Sort naturally the given list.
|
Sort naturally the given list.
|
||||||
@ -271,11 +270,10 @@ def natural_sort(lst):
|
|||||||
return [convert(c) for c in re.split('([0-9]+)', key)]
|
return [convert(c) for c in re.split('([0-9]+)', key)]
|
||||||
|
|
||||||
return sorted(lst, key=alphanum_key)
|
return sorted(lst, key=alphanum_key)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class _BaseFile {{{
|
# class _BaseFile {{{
|
||||||
|
|
||||||
|
|
||||||
class _BaseFile(list):
|
class _BaseFile(list):
|
||||||
"""
|
"""
|
||||||
Common base class for the :class:`~polib.POFile` and :class:`~polib.MOFile`
|
Common base class for the :class:`~polib.POFile` and :class:`~polib.MOFile`
|
||||||
@ -626,9 +624,9 @@ class _BaseFile(list):
|
|||||||
mixed = mixed.encode(self.encoding)
|
mixed = mixed.encode(self.encoding)
|
||||||
return mixed
|
return mixed
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class POFile {{{
|
# class POFile {{{
|
||||||
|
|
||||||
|
|
||||||
class POFile(_BaseFile):
|
class POFile(_BaseFile):
|
||||||
"""
|
"""
|
||||||
Po (or Pot) file reader/writer.
|
Po (or Pot) file reader/writer.
|
||||||
@ -734,9 +732,9 @@ class POFile(_BaseFile):
|
|||||||
if entry.msgid_with_context not in refpot_msgids:
|
if entry.msgid_with_context not in refpot_msgids:
|
||||||
entry.obsolete = True
|
entry.obsolete = True
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class MOFile {{{
|
# class MOFile {{{
|
||||||
|
|
||||||
|
|
||||||
class MOFile(_BaseFile):
|
class MOFile(_BaseFile):
|
||||||
"""
|
"""
|
||||||
Mo file reader/writer.
|
Mo file reader/writer.
|
||||||
@ -807,9 +805,9 @@ class MOFile(_BaseFile):
|
|||||||
"""
|
"""
|
||||||
return []
|
return []
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class _BaseEntry {{{
|
# class _BaseEntry {{{
|
||||||
|
|
||||||
|
|
||||||
class _BaseEntry:
|
class _BaseEntry:
|
||||||
"""
|
"""
|
||||||
Base class for :class:`~polib.POEntry` and :class:`~polib.MOEntry` classes.
|
Base class for :class:`~polib.POEntry` and :class:`~polib.MOEntry` classes.
|
||||||
@ -942,9 +940,9 @@ class _BaseEntry:
|
|||||||
return '{}{}{}'.format(self.msgctxt, "\x04", self.msgid)
|
return '{}{}{}'.format(self.msgctxt, "\x04", self.msgid)
|
||||||
return self.msgid
|
return self.msgid
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class POEntry {{{
|
# class POEntry {{{
|
||||||
|
|
||||||
|
|
||||||
class POEntry(_BaseEntry):
|
class POEntry(_BaseEntry):
|
||||||
"""
|
"""
|
||||||
Represents a po file entry.
|
Represents a po file entry.
|
||||||
@ -1186,9 +1184,9 @@ class POEntry(_BaseEntry):
|
|||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
return hash((self.msgid, self.msgstr))
|
return hash((self.msgid, self.msgstr))
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class MOEntry {{{
|
# class MOEntry {{{
|
||||||
|
|
||||||
|
|
||||||
class MOEntry(_BaseEntry):
|
class MOEntry(_BaseEntry):
|
||||||
"""
|
"""
|
||||||
Represents a mo file entry.
|
Represents a mo file entry.
|
||||||
@ -1221,11 +1219,10 @@ class MOEntry(_BaseEntry):
|
|||||||
|
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
return hash((self.msgid, self.msgstr))
|
return hash((self.msgid, self.msgstr))
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class _POFileParser {{{
|
# class _POFileParser {{{
|
||||||
|
|
||||||
|
|
||||||
class _POFileParser:
|
class _POFileParser:
|
||||||
"""
|
"""
|
||||||
A finite state machine to efficiently and correctly parse po
|
A finite state machine to efficiently and correctly parse po
|
||||||
@ -1658,9 +1655,9 @@ class _POFileParser:
|
|||||||
# don't change the current state
|
# don't change the current state
|
||||||
return False
|
return False
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# class _MOFileParser {{{
|
# class _MOFileParser {{{
|
||||||
|
|
||||||
|
|
||||||
class _MOFileParser:
|
class _MOFileParser:
|
||||||
"""
|
"""
|
||||||
A class to parse binary mo files.
|
A class to parse binary mo files.
|
||||||
|
@ -32,7 +32,7 @@ class TagX: # {{{
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return 'TAGX(tag=%02d, num_values=%d, bitmask=%r, eof=%d)' % (self.tag,
|
return 'TAGX(tag=%02d, num_values=%d, bitmask=%r, eof=%d)' % (self.tag,
|
||||||
self.num_values, bin(self.bitmask), self.eof)
|
self.num_values, bin(self.bitmask), self.eof)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
class SecondaryIndexHeader: # {{{
|
class SecondaryIndexHeader: # {{{
|
||||||
@ -231,7 +231,7 @@ class IndexHeader: # {{{
|
|||||||
a('Number of entries in the NCX: %d'% self.ncx_count)
|
a('Number of entries in the NCX: %d'% self.ncx_count)
|
||||||
|
|
||||||
return '\n'.join(ans)
|
return '\n'.join(ans)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
class Tag: # {{{
|
class Tag: # {{{
|
||||||
|
@ -518,7 +518,7 @@ def create_margin_files(container):
|
|||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# Link handling {{{
|
# Link handling {{{
|
||||||
def add_anchors_markup(root, uuid, anchors):
|
def add_anchors_markup(root, uuid, anchors):
|
||||||
body = last_tag(root)
|
body = last_tag(root)
|
||||||
div = body.makeelement(
|
div = body.makeelement(
|
||||||
|
@ -498,7 +498,7 @@ def create_theme(folder=None, parent=None):
|
|||||||
icon_resource_manager.set_theme()
|
icon_resource_manager.set_theme()
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Choose Theme {{{
|
# Choose Theme {{{
|
||||||
|
|
||||||
|
|
||||||
def download_cover(cover_url, etag=None, cached=b''):
|
def download_cover(cover_url, etag=None, cached=b''):
|
||||||
|
@ -151,7 +151,7 @@ class DateTimeEdit(DateTimeEditBase): # {{{
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Number Editor {{{
|
# Number Editor {{{
|
||||||
|
|
||||||
|
|
||||||
def make_clearing_spinbox(spinbox):
|
def make_clearing_spinbox(spinbox):
|
||||||
|
@ -454,7 +454,7 @@ class BooksView(QTableView): # {{{
|
|||||||
self.preserve_state = partial(PreserveViewState, self)
|
self.preserve_state = partial(PreserveViewState, self)
|
||||||
self.marked_changed_listener = FunctionDispatcher(self.marked_changed)
|
self.marked_changed_listener = FunctionDispatcher(self.marked_changed)
|
||||||
|
|
||||||
# {{{ Column Header setup
|
# Column Header setup {{{
|
||||||
self.can_add_columns = True
|
self.can_add_columns = True
|
||||||
self.was_restored = False
|
self.was_restored = False
|
||||||
self.allow_save_state = True
|
self.allow_save_state = True
|
||||||
|
@ -470,7 +470,7 @@ class PreviewSettings(BasicSettings): # {{{
|
|||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
# ToolbarSettings {{{
|
# ToolbarSettings {{{
|
||||||
|
|
||||||
|
|
||||||
class ToolbarList(QListWidget):
|
class ToolbarList(QListWidget):
|
||||||
|
@ -402,7 +402,8 @@ class Jump:
|
|||||||
jump_to_location(loc)
|
jump_to_location(loc)
|
||||||
|
|
||||||
|
|
||||||
jump = Jump() # }}}
|
jump = Jump()
|
||||||
|
# }}}
|
||||||
|
|
||||||
# Images {{{
|
# Images {{{
|
||||||
|
|
||||||
|
@ -1639,7 +1639,7 @@ class SpellCheck(Dialog):
|
|||||||
d.exec()
|
d.exec()
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Find next occurrence {{{
|
# Find next occurrence {{{
|
||||||
|
|
||||||
|
|
||||||
def find_next(word, locations, current_editor, current_editor_name,
|
def find_next(word, locations, current_editor, current_editor_name,
|
||||||
|
@ -814,10 +814,8 @@ class InsertLink(Dialog):
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Insert Semantics {{{
|
|
||||||
|
|
||||||
|
class InsertSemantics(Dialog): # {{{
|
||||||
class InsertSemantics(Dialog):
|
|
||||||
|
|
||||||
def __init__(self, container, parent=None):
|
def __init__(self, container, parent=None):
|
||||||
self.container = container
|
self.container = container
|
||||||
|
@ -839,7 +839,7 @@ class EbookViewer(MainWindow):
|
|||||||
return MainWindow.closeEvent(self, ev)
|
return MainWindow.closeEvent(self, ev)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Auto-hide mouse cursor {{{
|
# Auto-hide mouse cursor {{{
|
||||||
def setup_mouse_auto_hide(self):
|
def setup_mouse_auto_hide(self):
|
||||||
QApplication.instance().installEventFilter(self)
|
QApplication.instance().installEventFilter(self)
|
||||||
self.cursor_hidden = False
|
self.cursor_hidden = False
|
||||||
|
@ -233,7 +233,7 @@ def books(ctx, rd, library_id):
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Categories (Tag Browser) {{{
|
# Categories (Tag Browser) {{{
|
||||||
|
|
||||||
|
|
||||||
@endpoint('/ajax/categories/{library_id=None}', postprocess=json)
|
@endpoint('/ajax/categories/{library_id=None}', postprocess=json)
|
||||||
|
@ -153,7 +153,7 @@ def get_ranges(headervalue, content_length): # {{{
|
|||||||
return result
|
return result
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# gzip transfer encoding {{{
|
# gzip transfer encoding {{{
|
||||||
|
|
||||||
|
|
||||||
def gzip_prefix():
|
def gzip_prefix():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user