From 8b280c03c3cbe71fcef512b6932d0cb7e9e3709a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 31 Mar 2019 13:45:46 +0530 Subject: [PATCH] py3: Port RTF metadata module --- setup/test.py | 5 +- src/calibre/ebooks/metadata/rtf.py | 156 ++++++++++++++++------------- src/polyglot/builtins.py | 4 + 3 files changed, 94 insertions(+), 71 deletions(-) diff --git a/setup/test.py b/setup/test.py index 486162b40a..378101d0db 100644 --- a/setup/test.py +++ b/setup/test.py @@ -9,7 +9,7 @@ import unittest from setup import Command, islinux, isosx, iswindows, SRC -TEST_MODULES = frozenset('srv db polish opf css docx cfi matcher icu smartypants build misc dbcli'.split()) +TEST_MODULES = frozenset('srv db polish opf css docx cfi matcher icu smartypants build misc dbcli ebooks'.split()) class TestImports(unittest.TestCase): @@ -103,6 +103,9 @@ def find_tests(which_tests=None): if ok('smartypants'): from calibre.utils.smartypants import run_tests a(run_tests(return_tests=True)) + if ok('ebooks'): + from calibre.ebooks.metadata.rtf import find_tests + a(find_tests()) if ok('misc'): from calibre.ebooks.metadata.tag_mapper import find_tests a(find_tests()) diff --git a/src/calibre/ebooks/metadata/rtf.py b/src/calibre/ebooks/metadata/rtf.py index 5f05ce0d6e..4361d5dc99 100644 --- a/src/calibre/ebooks/metadata/rtf.py +++ b/src/calibre/ebooks/metadata/rtf.py @@ -1,20 +1,23 @@ -__license__ = 'GPL v3' -__copyright__ = '2008, Kovid Goyal ' +#!/usr/bin/env python2 +# vim:fileencoding=utf-8 +# License: GPLv3 Copyright: 2008, Kovid Goyal """ Edit metadata in RTF files. """ -import re, codecs +from __future__ import absolute_import, division, print_function, unicode_literals +import codecs +import re from calibre import force_unicode -from calibre.ebooks.metadata import MetaInformation, string_to_authors -from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes +from calibre.ebooks.metadata import MetaInformation +from polyglot.builtins import codepoint_to_chr, string_or_bytes, unicode_type, int_to_byte -title_pat = re.compile(r'\{\\info.*?\{\\title(.*?)(?some ⊹comments

' + m.publisher = 'publiSher' + set_metadata(stream, m) + stream.seek(0) + o = get_metadata(stream) + for attr in 'title authors publisher comments tags'.split(): + self.assertEqual(getattr(m, attr), getattr(o, attr)) + + return unittest.defaultTestLoader.loadTestsFromTestCase(Test) diff --git a/src/polyglot/builtins.py b/src/polyglot/builtins.py index 67b194a97b..da0a0cb857 100644 --- a/src/polyglot/builtins.py +++ b/src/polyglot/builtins.py @@ -59,6 +59,9 @@ if is_py3: def cmp(a, b): return (a > b) - (a < b) + def int_to_byte(x): + return bytes((x,)) + else: exec("""def reraise(tp, value, tb=None): try: @@ -78,6 +81,7 @@ else: exec_path = execfile raw_input = builtins.raw_input cmp = builtins.cmp + int_to_byte = chr def iteritems(d): return d.iteritems()