fixes #1060: sorted and unique editors' names
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Mon, 24 Jan 2011 11:27:35 +0000 (12:27 +0100)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Mon, 24 Jan 2011 11:45:02 +0000 (12:45 +0100)
tests fix

librarian/dcparser.py
librarian/epub/xsltLast.xsl
librarian/pdf.py
librarian/pdf/wl.sty
librarian/pdf/wl2tex.xslt
librarian/text.py
tests/files/text/asnyk_miedzy_nami_expected.html
tests/files/text/asnyk_miedzy_nami_expected.txt
tests/files/text/asnyk_miedzy_nami_nodc.txt [deleted file]
tests/test_html.py
tests/test_text.py

index 49a33d4..e2f91a0 100644 (file)
@@ -44,6 +44,11 @@ class Person(object):
     def __eq__(self, right):
         return self.last_name == right.last_name and self.first_names == right.first_names
 
     def __eq__(self, right):
         return self.last_name == right.last_name and self.first_names == right.first_names
 
+    def __cmp__(self, other):
+        return cmp((self.last_name, self.first_names), (other.last_name, other.first_names))
+
+    def __hash__(self):
+        return hash((self.last_name, self.first_names))
 
     def __unicode__(self):
         if len(self.first_names) > 0:
 
     def __unicode__(self):
         if len(self.first_names) > 0:
index 3949878..0739606 100644 (file)
@@ -81,7 +81,8 @@
     <xsl:if test="//dc:contributor.editor|//dc:contributor.technical_editor">\r
         <p class="info">\r
             <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>\r
     <xsl:if test="//dc:contributor.editor|//dc:contributor.technical_editor">\r
         <p class="info">\r
             <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>\r
-            <xsl:for-each select="//dc:contributor.editor|//dc:contributor.technical_editor">\r
+            <xsl:for-each select="//dc:contributor.editor|//dc:contributor.technical_editor[not(//dc:contributor.editor/text()=text())]">\r
+                <xsl:sort />\r
                 <xsl:if test="position() != 1">, </xsl:if>\r
                 <xsl:apply-templates mode="person" />\r
             </xsl:for-each>.\r
                 <xsl:if test="position() != 1">, </xsl:if>\r
                 <xsl:apply-templates mode="person" />\r
             </xsl:for-each>.\r
index f8a4d73..41de1b3 100644 (file)
@@ -135,6 +135,7 @@ def parse_creator(doc):
         p = Person.from_text(person.text)
         person_parsed = deepcopy(person)
         person_parsed.tag = person.tag + '_parsed'
         p = Person.from_text(person.text)
         person_parsed = deepcopy(person)
         person_parsed.tag = person.tag + '_parsed'
+        person_parsed.set('sortkey', person.text)
         person_parsed.text = p.readable()
         person.getparent().insert(0, person_parsed)
 
         person_parsed.text = p.readable()
         person.getparent().insert(0, person_parsed)
 
@@ -288,7 +289,6 @@ def load_including_children(provider, slug=None, uri=None, file_path=None):
         parse_dublincore=True)
 
     f.close()
         parse_dublincore=True)
 
     f.close()
-    print document.book_info
     for child_uri in document.book_info.parts:
         print child_uri
         child = load_including_children(provider, uri=child_uri)
     for child_uri in document.book_info.parts:
         print child_uri
         child = load_including_children(provider, uri=child_uri)
index 3a8016f..897535e 100644 (file)
@@ -142,7 +142,7 @@ Letters={SmallCaps,UppercaseSmallCaps}
     \description
     \vspace{.6em}
 
     \description
     \vspace{.6em}
 
-    Opracowanie redakcyjne i przypisy: \editors.
+    \editors
 
     \color{black}
   }
 
     \color{black}
   }
index 4ca109e..c577313 100644 (file)
 </xsl:template>
 
 <xsl:template name="editors">
 </xsl:template>
 
 <xsl:template name="editors">
-    <xsl:for-each select=".//dc:contributor.editor_parsed|.//dc:contributor.technical_editor_parsed">
-        <xsl:if test="position() != 1">, </xsl:if>
-        <xsl:apply-templates mode="inline" />
-    </xsl:for-each>
+    <xsl:if test="//dc:contributor.editor_parsed|//dc:contributor.technical_editor_parsed">
+        <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>
+        <xsl:for-each select="//dc:contributor.editor_parsed|//dc:contributor.technical_editor_parsed[not(//dc:contributor.editor_parsed/text()=text())]">
+            <xsl:sort select="@sortkey" />
+            <xsl:if test="position() != 1">, </xsl:if>
+            <xsl:apply-templates mode="inline" />
+        </xsl:for-each>.
+    </xsl:if>
 </xsl:template>
 
 <xsl:template name="translators">
 </xsl:template>
 
 <xsl:template name="translators">
index 64c956e..bcb031d 100644 (file)
@@ -25,9 +25,7 @@ Utwór opracowany został w ramach projektu Wolne Lektury przez fundację Nowocz
 
 %(license_description)s.%(source)s
 
 
 %(license_description)s.%(source)s
 
-%(description)s
-
-Opracowanie redakcyjne i przypisy: %(contributors)s
+%(description)s%(contributors)s
 """
 
 def transform(input_file, output_file, parse_dublincore=True, **options):
 """
 
 def transform(input_file, output_file, parse_dublincore=True, **options):
@@ -57,7 +55,9 @@ def transform(input_file, output_file, parse_dublincore=True, **options):
         else:
             source = ''
 
         else:
             source = ''
 
-        contributors = ', '.join(person.readable() for person in (parsed_dc.technical_editors + parsed_dc.editors))
+        contributors = ', '.join(person.readable() for person in sorted(set(parsed_dc.technical_editors + parsed_dc.editors)))
+        if contributors:
+            contributors = "\n\nOpracowanie redakcyjne i przypisy: %s" % contributors
     else:
         description = 'Publikacja zrealizowana w ramach projektu Wolne Lektury (http://wolnelektury.pl).'
         url = '*' * 10
     else:
         description = 'Publikacja zrealizowana w ramach projektu Wolne Lektury (http://wolnelektury.pl).'
         url = '*' * 10
index 456aaf6..6bc7649 100644 (file)
@@ -1,4 +1,4 @@
-<div xmlns:wl="http://wolnelektury.pl/functions" id="book-text">
+<div xmlns:wl="http://wolnelektury.pl/functions" xmlns:dc="http://purl.org/dc/elements/1.1/" id="book-text">
 <div id="toc">
 <h2>Spis treści</h2>
 <ol></ol>
 <div id="toc">
 <h2>Spis treści</h2>
 <ol></ol>
@@ -8,38 +8,26 @@
 </h1>
 <a name="m1189062500041" class="theme-begin" fid="1189062500041">Miłość platoniczna</a><div class="stanza">
 <p class="verse"><a name="f1" class="target"> </a><a href="#f1" class="anchor">1</a>Między nami nic nie było!</p>
 </h1>
 <a name="m1189062500041" class="theme-begin" fid="1189062500041">Miłość platoniczna</a><div class="stanza">
 <p class="verse"><a name="f1" class="target"> </a><a href="#f1" class="anchor">1</a>Między nami nic nie było!</p>
-<p class="verse">
-Żadnych zwierzeń, wyznań żadnych!</p>
-<p class="verse">
-Nic nas z sobą nie łączyło —</p>
-<p class="verse">
-Prócz wiosennych marzeń zdradnych;</p>
+<p class="verse">Żadnych zwierzeń, wyznań żadnych!</p>
+<p class="verse">Nic nas z sobą nie łączyło —</p>
+<p class="verse">Prócz wiosennych marzeń zdradnych;</p>
 </div>
 <div class="stanza">
 <p class="verse"><a name="f5" class="target"> </a><a href="#f5" class="anchor">5</a><a name="m1189062528872" class="theme-begin" fid="1189062528872">Natura</a>Prócz tych woni, barw i blasków,</p>
 </div>
 <div class="stanza">
 <p class="verse"><a name="f5" class="target"> </a><a href="#f5" class="anchor">5</a><a name="m1189062528872" class="theme-begin" fid="1189062528872">Natura</a>Prócz tych woni, barw i blasków,</p>
-<p class="verse">
-Unoszących się w przestrzeni;</p>
-<p class="verse">
-Prócz szumiących śpiewem lasków</p>
-<p class="verse">
-I tej świeżej łąk zieleni;</p>
+<p class="verse">Unoszących się w przestrzeni;</p>
+<p class="verse">Prócz szumiących śpiewem lasków</p>
+<p class="verse">I tej świeżej łąk zieleni;</p>
 </div>
 <div class="stanza">
 <p class="verse">Prócz tych kaskad i potoków,</p>
 </div>
 <div class="stanza">
 <p class="verse">Prócz tych kaskad i potoków,</p>
-<p class="verse"><a name="f10" class="target"> </a><a href="#f10" class="anchor">10</a>
-Zraszających każdy parów,</p>
-<p class="verse">
-Prócz girlandy tęcz, obłoków,</p>
-<p class="verse">
-Prócz natury słodkich czarów;</p>
+<p class="verse"><a name="f10" class="target"> </a><a href="#f10" class="anchor">10</a>Zraszających każdy parów,</p>
+<p class="verse">Prócz girlandy tęcz, obłoków,</p>
+<p class="verse">Prócz natury słodkich czarów;</p>
 </div>
 <div class="stanza">
 <p class="verse">Prócz tych wspólnych, jasnych zdrojów,</p>
 </div>
 <div class="stanza">
 <p class="verse">Prócz tych wspólnych, jasnych zdrojów,</p>
-<p class="verse">
-Z których serce zachwyt piło;</p>
-<p class="verse"><a name="f15" class="target"> </a><a href="#f15" class="anchor">15</a>
-Prócz pierwiosnków i powojów,—</p>
-<p class="verse">
-Między nami nic nie było!<span class="theme-end" fid="1189062528872"></span><span class="theme-end" fid="1189062500041"></span></p>
+<p class="verse">Z których serce zachwyt piło;</p>
+<p class="verse"><a name="f15" class="target"> </a><a href="#f15" class="anchor">15</a>Prócz pierwiosnków i powojów,—</p>
+<p class="verse">Między nami nic nie było!<span class="theme-end" fid="1189062528872"></span><span class="theme-end" fid="1189062500041"></span></p>
 </div>
 </div>
 </div>
 </div>
index 4441c70..70c3185 100644 (file)
@@ -1,18 +1,3 @@
-Kodowanie znaków w dokumencie: UTF-8.
------
-Publikacja zrealizowana w ramach projektu Wolne Lektury (http://wolnelektury.pl). Reprodukcja cyfrowa wykonana przez Bibliotekę Narodową z egzemplarza pochodzącego ze zbiorów BN. 
-
-Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie publicznej, co oznacza, że możesz go swobodnie wykorzystywać, publikować i rozpowszechniać.
-
-Na podstawie: (Asnyk, Adam) El...y (1838-1897), Poezye, t. 3,  Gebethner i Wolff, wyd. nowe poprzedzone słowem wstępnym St. Krzemińskiego, Warszawa, 1898
-
-Wersja lektury w opracowaniu merytorycznym i krytycznym (przypisy i motywy) dostępna jest na stronie http://wolnelektury.pl/katalog/lektura/miedzy-nami-nic-nie-bylo.
------
-
-
-
-
-
 Adam Asnyk
 
 Między nami nic nie było
 Adam Asnyk
 
 Między nami nic nie było
@@ -38,3 +23,20 @@ Prócz tych wspólnych, jasnych zdrojów,
 Z których serce zachwyt piło;
 Prócz pierwiosnków i powojów,—
 Między nami nic nie było!
 Z których serce zachwyt piło;
 Prócz pierwiosnków i powojów,—
 Między nami nic nie było!
+
+
+
+
+-----
+Ta lektura, podobnie jak tysiące innych, dostępna jest na stronie wolnelektury.pl.
+Wersja lektury w opracowaniu merytorycznym i krytycznym (przypisy i motywy) dostępna jest na stronie http://wolnelektury.pl/katalog/lektura/miedzy-nami-nic-nie-bylo.
+
+Utwór opracowany został w ramach projektu Wolne Lektury przez fundację Nowoczesna Polska.
+
+Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować i rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi materiałami (przypisy, motywy literackie etc.), które podlegają prawu autorskiemu, to te dodatkowe materiały udostępnione są na licencji Creative Commons Uznanie Autorstwa – Na Tych Samych Warunkach 3.0 PL (http://creativecommons.org/licenses/by-sa/3.0/).
+
+Tekst opracowany na podstawie: (Asnyk, Adam) El...y (1838-1897), Poezye, t. 3,  Gebethner i Wolff, wyd. nowe poprzedzone słowem wstępnym St. Krzemińskiego, Warszawa, 1898
+
+Publikacja zrealizowana w ramach projektu Wolne Lektury (http://wolnelektury.pl). Reprodukcja cyfrowa wykonana przez Bibliotekę Narodową z egzemplarza pochodzącego ze zbiorów BN.
+
+Opracowanie redakcyjne i przypisy: Aleksandra Sekuła, Olga Sutkowska
diff --git a/tests/files/text/asnyk_miedzy_nami_nodc.txt b/tests/files/text/asnyk_miedzy_nami_nodc.txt
deleted file mode 100644 (file)
index e69de29..0000000
index 4fbbaad..5187e06 100644 (file)
@@ -29,7 +29,7 @@ def test_transform():
 def test_no_dublincore():
     html.transform(
         get_fixture('text', 'asnyk_miedzy_nami_nodc.xml'),
 def test_no_dublincore():
     html.transform(
         get_fixture('text', 'asnyk_miedzy_nami_nodc.xml'),
-        get_fixture('text', 'asnyk_miedzy_nami_nodc.html'),
+        get_fixture('text', 'asnyk_miedzy_nami.html'),
     )
 
 
     )
 
 
index 5b01718..7ff94ca 100644 (file)
@@ -18,8 +18,8 @@ def test_transform():
     expected_output_file_path = get_fixture('text', 'asnyk_miedzy_nami_expected.txt')
 
     text.transform(
     expected_output_file_path = get_fixture('text', 'asnyk_miedzy_nami_expected.txt')
 
     text.transform(
-        get_fixture('text', 'asnyk_miedzy_nami.xml'),
-        output_file_path,
+        open(get_fixture('text', 'asnyk_miedzy_nami.xml')),
+        open(output_file_path, 'w'),
     )
 
     assert_equal(file(output_file_path).read(), file(expected_output_file_path).read())
     )
 
     assert_equal(file(output_file_path).read(), file(expected_output_file_path).read())
@@ -29,8 +29,8 @@ def test_transform():
 @raises(NoDublinCore)
 def test_no_dublincore():
     text.transform(
 @raises(NoDublinCore)
 def test_no_dublincore():
     text.transform(
-        get_fixture('text', 'asnyk_miedzy_nami_nodc.xml'),
-        get_fixture('text', 'asnyk_miedzy_nami_nodc.txt'),
+        open(get_fixture('text', 'asnyk_miedzy_nami_nodc.xml')),
+        open(get_fixture('text', 'asnyk_miedzy_nami.txt'), 'w'),
     )
 
 
     )
 
 
@@ -38,7 +38,7 @@ def test_no_dublincore():
 def test_passing_parse_dublincore_to_transform():
     """Passing parse_dublincore=False to transform omits DublinCore parsing."""
     text.transform(
 def test_passing_parse_dublincore_to_transform():
     """Passing parse_dublincore=False to transform omits DublinCore parsing."""
     text.transform(
-        get_fixture('text', 'asnyk_miedzy_nami_nodc.xml'),
-        get_fixture('text', 'asnyk_miedzy_nami.txt'),
+        open(get_fixture('text', 'asnyk_miedzy_nami_nodc.xml')),
+        open(get_fixture('text', 'asnyk_miedzy_nami.txt'), 'w'),
         parse_dublincore=False,
     )
         parse_dublincore=False,
     )