fragment = Fragment(id=element.get('fid'), themes=element.text)
# Append parents
- if element.getparent().get('id', None) != 'book-text':
- parents = [element.getparent()]
- while parents[-1].getparent().get('id', None) != 'book-text':
- parents.append(parents[-1].getparent())
-
- parents.reverse()
- for parent in parents:
- fragment.append('start', parent)
+ parent = element.getparent()
+ parents = []
+ while parent.get('id', None) != 'book-text':
+ cparent = copy.deepcopy(parent)
+ cparent.text = None
+ parents.append(cparent)
+ parent = parent.getparent()
+
+ parents.reverse()
+ for parent in parents:
+ fragment.append('start', parent)
open_fragments[fragment.id] = fragment
<div id="themes"><ol>
<li>Miłość platoniczna: <a href="#m1189062500041">1</a> <a href="#m1189062500041">2</a> </li>
<li>Natura: <a href="#m1189062528872">1</a> </li>
+<li>Nicość: <a href="#m1">1</a> </li>
</ol></div>
<h1>
<span class="author">Adam Asnyk</span><span class="title"><a name="m1189062500041" class="theme-begin" fid="1189062500041">Miłość platoniczna</a>Między nami nic nie było</span>
</h1>
<a name="m1189062500041" class="theme-begin" fid="1189062500041">Miłość platoniczna</a><div class="stanza">
-<a name="sec4"></a><a name="f1" class="target"> </a><a href="#f1" class="anchor">1</a><p class="verse">Między nami nic nie było!</p>
+<a name="sec4"></a><a name="f1" class="target"> </a><a href="#f1" class="anchor">1</a><p class="verse">Między nami <a name="m1" class="theme-begin" fid="1">Nicość</a>nic nie było!<span class="theme-end" fid="1"></span></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>
--- /dev/null
+1: Nicość
+<div class="stanza"><p class="verse">nic nie było!</p>
+</div>
+
+
+1189062500041: Miłość platoniczna
+<div class="stanza">
+<p class="verse">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>
+</div>
+<div class="stanza">
+<p class="verse">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>
+</div>
+<div class="stanza">
+<p class="verse">Prócz tych kaskad i potoków,</p>
+<p class="verse">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>
+<p class="verse">Z których serce zachwyt piło;</p>
+<p class="verse">Prócz pierwiosnków i powojów,—</p>
+<p class="verse">Między nami nic nie było!</p>
+</div>
+
+
+1189062528872: Natura
+<div class="stanza"><p class="verse">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>
+</div>
+<div class="stanza">
+<p class="verse">Prócz tych kaskad i potoków,</p>
+<p class="verse">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>
+<p class="verse">Z których serce zachwyt piło;</p>
+<p class="verse">Prócz pierwiosnków i powojów,—</p>
+<p class="verse">Między nami nic nie było!</p>
+</div>
-<strofa>Między nami nic nie było!/
+<strofa>Między nami <begin id="b1"/><motyw id="m1">Nicość</motyw>nic nie było!<end id="e1"/>/
Żadnych zwierzeń, wyznań żadnych!/
Nic nas z sobą nie łączyło ---/
Prócz wiosennych marzeń zdradnych;</strofa>
--- /dev/null
+# -*- coding: utf-8 -*-
+#
+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+from librarian.html import extract_fragments
+from nose.tools import *
+from utils import get_fixture
+
+
+def test_fragments():
+ expected_output_file_path = get_fixture('text', 'asnyk_miedzy_nami_fragments.html')
+
+ closed_fragments, open_fragments = extract_fragments(
+ get_fixture('text', 'asnyk_miedzy_nami_expected.html'))
+ assert not open_fragments
+ fragments_text = u"\n\n".join(u"%s: %s\n%s" % (f.id, f.themes, f)
+ for f in closed_fragments.values())
+ assert_equal(fragments_text, file(expected_output_file_path).read().decode('utf-8'))
+