home · contact · privacy
Switch testing over to running server against playwright.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 22 Jan 2026 18:51:02 +0000 (19:51 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 22 Jan 2026 18:51:02 +0000 (19:51 +0100)
20 files changed:
src/ledgplom/http.py
src/ledgplom/testing.py
src/requirements.txt
src/templates/_base.tmpl
src/templates/_macros.tmpl
src/templates/balance.html
src/templates/edit_structured.html
src/templates/ledger_raw.html
src/templates/ledger_structured.html
src/tests/empty.balance
src/tests/empty.ledger_raw
src/tests/empty.ledger_structured
src/tests/full.balance
src/tests/full.edit_raw.1
src/tests/full.edit_raw.4
src/tests/full.edit_structured.1
src/tests/full.edit_structured.4
src/tests/full.ledger_raw
src/tests/full.ledger_structured
src/tests/full.taint_js [deleted symlink]

index b3e9b518549f4655bf484b66333493e746fdbf1e..38fb747f9e1fb50e0dff69ac95eca45047b1b1ad 100644 (file)
@@ -8,43 +8,27 @@ from plomlib.web import PlomHttpHandler, PlomHttpServer, PlomQueryMap
 from ledgplom.ledger import DEFAULT_INDENT, Ledger
 
 
-PATH_TEMPLATES = Path('templates')
+_PATH_TEMPLATES = Path('templates')
 _PREFIX_EDIT = 'edit'
 _PREFIX_FILE = 'file'
 _PREFIX_LEDGER = 'ledger'
 _SERVER_HOST = '127.0.0.1'
 _SERVER_PORT = 8084
-SUFFIX_HTML = '.html'
-SUFFIX_JS = '.js'
+_SUFFIX_HTML = '.html'
+_SUFFIX_JS = '.js'
 _SUFFIX_STRUCTURED = 'structured'
 _PAGENAME_EDIT_STRUCTURED = f'{_PREFIX_EDIT}_{_SUFFIX_STRUCTURED}'
 
 
-def render_ctx_on_path(ledger, short_path_toks):
-    'Prepare template rendering context based on ledger and path.'
-    pagename = short_path_toks[0]
-    prefix, suffix = (pagename + '_').split('_')[:2]
-    method = getattr(ledger, f'view_ctx_{prefix}')
-    method_kwargs = {}
-    if prefix != _PREFIX_LEDGER:
-        method_kwargs['id_'] = -1
-        if len(short_path_toks) > 1:
-            id_str = short_path_toks[1] or '-1'
-            if id_str.isdigit() or (id_str[1:].isdigit() and id_str[0] == '-'):
-                method_kwargs['id_'] = int(id_str)
-    if prefix == _PREFIX_EDIT:
-        method_kwargs['raw'] = suffix != _SUFFIX_STRUCTURED
-    return method(**method_kwargs)
-
-
 class Server(PlomHttpServer):
     'Extends parent by loading .dat file into database for Handler.'
 
     def __init__(self, path_dat: Path, *args, **kwargs) -> None:
-        super().__init__(PATH_TEMPLATES,
+        super().__init__(_PATH_TEMPLATES,
                          (_SERVER_HOST, _SERVER_PORT),
                          _Handler)
         self.ledger = Ledger(path_dat)
+        self.jinja.trim_blocks = True
 
 
 class _Handler(PlomHttpHandler):
@@ -126,8 +110,8 @@ class _Handler(PlomHttpHandler):
                     Path(f'/{_PAGENAME_EDIT_STRUCTURED}', self.path_toks[2]))
         ctx: dict[str, Any] = {}
         template_names = tuple(str(path.parts[-1])
-                               for path in PATH_TEMPLATES.iterdir())
-        if self.pagename.endswith(SUFFIX_JS):
+                               for path in _PATH_TEMPLATES.iterdir())
+        if self.pagename.endswith(_SUFFIX_JS):
             if self.pagename not in template_names:
                 return send_404()
             if self.pagename.startswith(_PAGENAME_EDIT_STRUCTURED):
@@ -138,16 +122,27 @@ class _Handler(PlomHttpHandler):
                     + [tf_line.as_dict
                        for tf_line in block.booking.transfer_lines]
                     ) if block.booking else []
-            self.send_http(
+            return self.send_http(
                     bytes(self.server.jinja.get_template(self.pagename
                                                          ).render(**ctx),
                           encoding='utf8'),
                     [('Content-Type', 'text/javascript')])
-            return
-        template_name = f'{self.pagename}{SUFFIX_HTML}'
+        template_name = f'{self.pagename}{_SUFFIX_HTML}'
         if template_name not in template_names:
             return send_404()
         ctx['path'] = self.path
         ctx['unsaved_changes'] = self.server.ledger.tainted
-        ctx |= render_ctx_on_path(self.server.ledger, self.path_toks[1:])
-        self.send_rendered(Path(f'{self.pagename}{SUFFIX_HTML}'), ctx)
+        prefix, suffix = (self.pagename + '_').split('_')[:2]
+        method_kwargs = {}
+        if prefix != _PREFIX_LEDGER:
+            method_kwargs['id_'] = -1
+            if len(self.path_toks) > 2:
+                id_str = self.path_toks[2] or '-1'
+                if id_str.isdigit() or (id_str[1:].isdigit()
+                                        and id_str[0] == '-'):
+                    method_kwargs['id_'] = int(id_str)
+        if prefix == _PREFIX_EDIT:
+            method_kwargs['raw'] = suffix != _SUFFIX_STRUCTURED
+        ctx |= getattr(self.server.ledger,
+                       f'view_ctx_{prefix}')(**method_kwargs)
+        return self.send_rendered(Path(f'{self.pagename}{_SUFFIX_HTML}'), ctx)
index 4abdbf630752736249720ba23be44d899653e1b7..bf528fe5de35aa1227cc9bf3cb4fe29de05d0f48 100644 (file)
@@ -2,14 +2,13 @@
 # built-ins
 from sys import exit as sys_exit
 from pathlib import Path
-from typing import Any, Optional
+from threading import Thread
+from typing import Optional
 # requirements.txt
-from jinja2 import (Environment as JinjaEnv,
-                    FileSystemLoader as JinjaFSLoader)
+from playwright.sync_api import sync_playwright
 # ourselves
-from ledgplom.http import (PATH_TEMPLATES, SUFFIX_HTML, SUFFIX_JS,
-                           render_ctx_on_path)
-from ledgplom.ledger import Ledger
+from ledgplom.http import Server
+from plomlib.web import PlomHttpServer
 
 
 _EXT_DAT = '.dat'
@@ -18,32 +17,26 @@ _PATH_TESTS = Path('tests')
 
 def run_tests() -> None:
     'Run tests from tests directory.'
-    def fail(abort_msg: str, msg_prefix: str, idx: Optional[int]) -> None:
-        for jdx, line in enumerate(lines_rendered[:idx], start=1):
-            print(f'{jdx}: [{line}]')
-        print(f'{msg_prefix} FAILED – {abort_msg}')
-        sys_exit(1)
-
-    jinja = JinjaEnv(loader=JinjaFSLoader(PATH_TEMPLATES),
-                     autoescape=True,
-                     trim_blocks=True)
     paths = tuple(_PATH_TESTS.iterdir())
-    for dat_path in [p for p in paths if p.parts[-1].endswith(_EXT_DAT)]:
-        ledger = Ledger(dat_path)
+
+    def f(dat_path: Path, server: PlomHttpServer):
+
+        def fail(abort_msg: str, msg_prefix: str, idx: Optional[int]) -> None:
+            for jdx, line in enumerate(lines_rendered[:idx], start=1):
+                print(f'{jdx}: [{line}]')
+            print(f'{msg_prefix} FAILED – {abort_msg}')
+            sys_exit(1)
+
+        test_name = str(dat_path.parts[-1])[:-len(_EXT_DAT)]
+        pw = sync_playwright().start()
+        page = pw.firefox.launch().new_page()
         for test_path in [p for p in paths
                           if p != dat_path
-                          and p.parts[-1].startswith(
-                              str(dat_path.parts[-1])[:-len(_EXT_DAT)] + '.')]:
-            path_toks = str(test_path.parts[-1]).split('.')[1:]
-            tmpl_name = path_toks[0]
-            ctx: dict[str, Any] = {}
-            if tmpl_name.endswith(SUFFIX_JS.replace('.', '_')):
-                tmpl_name = tmpl_name[:-len(SUFFIX_JS)] + SUFFIX_JS
-            else:
-                tmpl_name += SUFFIX_HTML
-                ctx |= render_ctx_on_path(ledger, path_toks)
-            lines_rendered = jinja.get_template(tmpl_name).render(ctx
-                                                                  ).split('\n')
+                          and p.parts[-1].startswith(f'{test_name}.')]:
+            path = str(test_path.parts[-1]
+                       ).split('.', maxsplit=1)[1].replace('.', '/')
+            page.goto(f'http://localhost:8084/{path}')
+            lines_rendered = page.content().split('\n')
             with test_path.open('r', encoding='utf8') as f:
                 lines_expected = tuple(line.rstrip('\n')
                                        for line in f.readlines())
@@ -61,3 +54,10 @@ def run_tests() -> None:
             if len(lines_expected) > idx1:
                 fail(f'more lines expected line {idx1}', msg_prefix, None)
             print(f'{msg_prefix} passed')
+        pw.stop()
+        server.shutdown()
+
+    for dat_path in [p for p in paths if p.parts[-1].endswith(_EXT_DAT)]:
+        server = Server(dat_path)
+        Thread(target=f, args=(dat_path, server,)).start()
+        server.serve()
index 7cb100d62da7034e29e3ec76abc2983b9d495fd0..20890f4efb94271de17318f0546a33c3946c2af1 100644 (file)
@@ -1 +1,2 @@
 Jinja2==3.1.5
+playwright==1.57.0
index 6e600bc10560bd06027c7c9c7023c62b53eeaffa..da2adb57b626ed29934678fc90c4562a1dc40746 100644 (file)
@@ -50,8 +50,8 @@ td {
 {% if unsaved_changes %}
             <span class="critical">
                 · unsaved changes:
-                <input type="submit"name="file_load" value="reload" />
-                · <input type="submit" name="file_save" value="save">
+                <input type="submit" name="file_load" value="reload" />
+                · <input type="submit" name="file_save" value="save" />
                 &nbsp;
             </span>
 {% else %}
index b41be34326295a6851bc2c5851b39f58c61091e1..fc8964fbe3ef9ac12d608197412dbed970e9f92c 100644 (file)
@@ -84,28 +84,26 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
 {% macro ledger_block_columns(mode, block) %}
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_{{  block.id_ }}">
-        <td rowspan={{ block.lines | length + 1 }} {# -#}
+        <td rowspan={{ block.lines | length + 1 }}
             class="block_column{{ ' critical' if block.date_error }}">
             <input type="submit"
                    name="ledger_moveup_{{ block.id_ }}"
                    value="^"
-                   {{- '
-                   disabled' if not block.can_move(1) }}
+                   {{ 'disabled' if not block.can_move(1) }}
                    />
             <br />
             <input type="submit"
                    name="ledger_movedown_{{ block.id_ }}"
                    value="v"
-                   {{- '
-                   disabled' if not block.can_move(0) }}
+                   {{ 'disabled' if not block.can_move(0) }}
                    />
             <br />
-            <input type="submit" {# -#}
-                   name="ledger_copy_{{ block.id_ }}" {# -#}
-                   value="C"{# -#}
+            <input type="submit"
+                   name="ledger_copy_{{ block.id_ }}"
+                   value="C"
                    />
         </td>
-        <td rowspan={{ block.lines | length + 1 }} {# -#}
+        <td rowspan={{ block.lines | length + 1 }}
             class="block_column{{ ' critical' if block.booking
                                               and block.booking.sink_error }}">
             [<a href="#block_{{ block.id_ }}">#</a>]<br />
@@ -174,6 +172,7 @@ td.direct_target {
 {######}{% macro td_wealth(wealth_dict) %}
         <td>
             <table>
+            <tbody>
 {##########}{% for curr, amt in wealth_dict.items() %}
                 <tr>
                     <td class="balance amount">
@@ -184,6 +183,7 @@ td.direct_target {
                     </td>
                 </tr>
 {##########}{% endfor %}
+            </tbody>
             </table>
         </td>{##}
 {######}{% endmacro %}
@@ -201,6 +201,7 @@ td.direct_target {
 {##}{% endmacro -%}
 
 <table class="alternating{{ ' critical' if not valid }}">
+<tbody>
     <tr>
         <th>account</th>
         <th>before</th>
@@ -210,6 +211,7 @@ td.direct_target {
 {% for root in roots %}
     {{- booking_balance_account_with_children(root) -}}
 {% endfor %}
+</tbody>
 </table>
 
 {%- endmacro %}
index 684fa45106ece3919e4af7143a51ce31b3483332..05e9d30eafe1e6c1501e7c97d70edce42c0570bf 100644 (file)
@@ -46,24 +46,30 @@ span.indent {
 {{_()}}    <td class="money">
 {##}{% if account.get_wealth_at(block_id).moneys | length == 1 %}
 {{_()}}        <table>
+{{_()}}        <tbody>
 {######}{% for cur, amt in account.get_wealth_at(block_id).moneys.items() %}
                    {{- tr_money_balance(amt, cur) -}}
 {######}{% endfor %}
+{{_()}}        </tbody>
 {{_()}}        </table>
 {##}{% else %}
 {{_()}}        <details>
 {{_()}}            <summary>
 {{_()}}                <table>
+{{_()}}                <tbody>
 {######}{% for cur, amt in account.get_wealth_at(block_id).moneys.items() %}
                            {{- tr_money_balance(amt, cur, i=6)
                                if 1 == loop.index -}}
 {######}{% endfor %}
+{{_()}}                </tbody>
 {{_()}}                </table>
 {{_()}}            </summary>
 {{_()}}            <table>
+{{_()}}            <tbody>
 {######}{% for cur, amt in account.get_wealth_at(block_id).moneys.items() %}
                        {{- tr_money_balance(amt, cur, 5) if 1 < loop.index -}}
 {######}{% endfor %}
+{{_()}}            </tbody>
 {{_()}}            </table>
 {{_()}}        </details>
 {##}{% endif %}
@@ -96,8 +102,10 @@ span.indent {
     </a>
 </p>
 <table class="alternating {% if not valid %}critical{% endif %}">
+<tbody>
 {% for root in roots %}
 {{ account_with_children(block.id_, root, name_indent=0) -}}
 {% endfor %}
+</tbody>
 </table>
 {% endblock %}
index 59e52d80ad86d47aff8e3a92e9b0b98509e77bbd..675954a3d626d8bc08be5f4a794a243127a89274 100644 (file)
@@ -50,7 +50,7 @@ to
 </form>
 <datalist id="all_accounts">
 {% for acc in all_accounts %}
-<option value="{{ acc }}">{{ acc }}</a>
+<option value="{{ acc }}">{{ acc }}</option>
 {% endfor %}
 </datalist>
 <hr />
index d421cc213f2602d45a5a493d83a336e50539f9f2..08003eecbaac1d6701e17bb4154b63e7bc3faaf8 100644 (file)
@@ -15,6 +15,7 @@ table {
 <form action="/ledger_raw" method="POST">
 {{ macros.ledger_empty_lines_fix(has_redundant_empty_lines) -}}
 <table class="alternating">
+<tbody>
 {% for block in blocks %}
 {{ macros.ledger_block_columns('raw', block) -}}
 {##}{% for line in block.lines %}
@@ -25,6 +26,7 @@ table {
     </tr>
 {##}{% endfor %}
 {% endfor %}
+</tbody>
 </table>
 </form>
 {% endblock %}
index b045164d718e08d82a610bfb0cbc584998cea824..6c06acdec5b003662d9436360a976ba0f01ed783 100644 (file)
@@ -13,6 +13,7 @@
 <form action="/ledger_structured" method="POST">
 {{ macros.ledger_empty_lines_fix(has_redundant_empty_lines) -}}
 <table class="alternating">
+<tbody>
 {% for block in blocks %}
 {{ macros.ledger_block_columns('structured', block) -}}
 {##}{% if block.booking %}
@@ -44,6 +45,7 @@
     </tr>
 {##}{% endfor %}
 {% endfor %}
+</tbody>
 </table>
 <input type="submit" name="add_booking" value="add booking" />
 </form>
index f4a8f0c360924e7e11cab7d0aae199952534ed99..0205b1fefbac1dae59efee77c962408372a0a83d 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -70,12 +68,12 @@ span.indent {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/balance" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -86,6 +84,8 @@ span.indent {
     balance after <a href="/blocks/0">booking 0 (: )</a>
 </p>
 <table class="alternating ">
+<tbody>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index 2408dbe12efe0f6338ddba24a4ddad8821b7e21a..def169cce0b9c6ab6e54006774918d5faec9bb88 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -43,42 +41,36 @@ table {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/ledger_raw" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
 <form action="/ledger_raw" method="POST">
 <table class="alternating">
+<tbody>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_0">
-        <td rowspan=2 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_0"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_0"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_0" value="C"/>
+        <td rowspan="2" class="block_column">
+            <input type="submit" name="ledger_moveup_0" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_0" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_0" value="C">
         </td>
-        <td rowspan=2 class="block_column">
-            [<a href="#block_0">#</a>]<br />
-            [<a href="/balance/0">b</a>]<br />
+        <td rowspan="2" class="block_column">
+            [<a href="#block_0">#</a>]<br>
+            [<a href="/balance/0">b</a>]<br>
             [<a href="/edit_raw/0">e</a>]
         </td>
     </tr>
     <tr><td>&nbsp;</td></tr>
+</tbody>
 </table>
 </form>
-</body>
-</html>
+
+</body></html>
index 3dbab6a2ecada3351922daad73e77ef0dc0b1564..34da94775fdf05507d994a30a7196cbda553cea8 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -48,45 +46,39 @@ td.currency {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/ledger_structured" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
 <form action="/ledger_structured" method="POST">
 <table class="alternating">
+<tbody>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_0">
-        <td rowspan=2 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_0"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_0"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_0" value="C"/>
+        <td rowspan="2" class="block_column">
+            <input type="submit" name="ledger_moveup_0" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_0" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_0" value="C">
         </td>
-        <td rowspan=2 class="block_column">
-            [<a href="#block_0">#</a>]<br />
-            [<a href="/balance/0">b</a>]<br />
+        <td rowspan="2" class="block_column">
+            [<a href="#block_0">#</a>]<br>
+            [<a href="/balance/0">b</a>]<br>
             [<a href="/edit_structured/0">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
+</tbody>
 </table>
-<input type="submit" name="add_booking" value="add booking" />
+<input type="submit" name="add_booking" value="add booking">
 </form>
-</body>
-</html>
+
+</body></html>
index d43eddeb77d7d3d14a2c1aac36d0682eb1e7254a..2ae2b44f2321a37e563710210d25a66b4655f070 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -70,12 +68,12 @@ span.indent {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/balance" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -86,22 +84,27 @@ span.indent {
     balance after <a href="/blocks/4">booking 4 (2001-01-01: test)</a>
 </p>
 <table class="alternating critical">
+<tbody>
     <tr>
         <td class="money">
             <details>
                 <summary>
                     <table>
+                    <tbody>
                         <tr>
                             <td class="balance amount">-9</td>
                             <td class="balance currency">€</td>
                         </tr>
+                    </tbody>
                     </table>
                 </summary>
                 <table>
+                <tbody>
                     <tr>
                         <td class="balance amount">-1</td>
                         <td class="balance currency">USD</td>
                     </tr>
+                </tbody>
                 </table>
             </details>
         </td>
@@ -113,10 +116,12 @@ span.indent {
     <tr>
         <td class="money">
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
@@ -127,10 +132,12 @@ span.indent {
     <tr>
         <td class="money">
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
@@ -141,10 +148,12 @@ span.indent {
     <tr>
         <td class="money">
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
@@ -155,10 +164,12 @@ span.indent {
     <tr>
         <td class="money">
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
@@ -171,17 +182,21 @@ span.indent {
             <details>
                 <summary>
                     <table>
+                    <tbody>
                         <tr>
                             <td class="balance amount">20</td>
                             <td class="balance currency">€</td>
                         </tr>
+                    </tbody>
                     </table>
                 </summary>
                 <table>
+                <tbody>
                     <tr>
                         <td class="balance amount">1</td>
                         <td class="balance currency">USD</td>
                     </tr>
+                </tbody>
                 </table>
             </details>
         </td>
@@ -195,17 +210,21 @@ span.indent {
             <details>
                 <summary>
                     <table>
+                    <tbody>
                         <tr>
                             <td class="balance amount">10</td>
                             <td class="balance currency">€</td>
                         </tr>
+                    </tbody>
                     </table>
                 </summary>
                 <table>
+                <tbody>
                     <tr>
                         <td class="balance amount">1</td>
                         <td class="balance currency">USD</td>
                     </tr>
+                </tbody>
                 </table>
             </details>
         </td>
@@ -214,6 +233,7 @@ span.indent {
         </td>
         <td></td>
     </tr>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index 282a832f525fa3b1a77035bc8ad1158b1d84848f..bf3f02b72689da3f4cbc8899f18315bd39edfdf2 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <script type="module" src="/taint.js">
 </script>
@@ -59,12 +57,12 @@ td.direct_target {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/edit_raw/1" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -73,18 +71,8 @@ td.direct_target {
 <a href="/blocks/0">prev</a>
 <a href="/blocks/2">next</a>
 </span>
-<input class="enable_on_taint"
-       type="submit"
-       name="apply"
-       value="apply"
-       disabled
-       />
-<input class="enable_on_taint"
-       type="submit"
-       name="revert"
-       value="revert"
-       disabled
-       />
+<input class="enable_on_taint" type="submit" name="apply" value="apply" disabled="">
+<input class="enable_on_taint" type="submit" name="revert" value="revert" disabled="">
 <span class="disable_on_taint">
 <a href="/edit_structured/1">switch to structured</a>
 ·
@@ -92,20 +80,16 @@ td.direct_target {
 ·
 <a href="/ledger_raw/#block_1">in ledger</a>
 </span>
-<hr />
+<hr>
 
-<textarea name="raw_lines"
-          class="tainter"
-          cols=100
-          rows=5
-          >
-2001-01-01 test ; foo
+<textarea name="raw_lines" class="tainter" cols="100" rows="5">2001-01-01 test ; foo
   foo  10 €
   bar  -10 €
 
 </textarea>
 </form>
 <table class="alternating">
+<tbody>
     <tr>
         <th>account</th>
         <th>before</th>
@@ -116,26 +100,32 @@ td.direct_target {
         <td class="direct_target">bar</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -143,29 +133,36 @@ td.direct_target {
         <td class="direct_target">foo</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index 8230dc61e534b775a03f98b664b487b96582f725..aaca7c0410704166853ea7b8bb173d5f4edb91b4 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <script type="module" src="/taint.js">
 </script>
@@ -59,12 +57,12 @@ td.direct_target {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/edit_raw/4" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -73,18 +71,8 @@ td.direct_target {
 <a href="/blocks/3">prev</a>
 <del>next</del>
 </span>
-<input class="enable_on_taint"
-       type="submit"
-       name="apply"
-       value="apply"
-       disabled
-       />
-<input class="enable_on_taint"
-       type="submit"
-       name="revert"
-       value="revert"
-       disabled
-       />
+<input class="enable_on_taint" type="submit" name="apply" value="apply" disabled="">
+<input class="enable_on_taint" type="submit" name="revert" value="revert" disabled="">
 <span class="disable_on_taint">
 <a href="/edit_structured/4">switch to structured</a>
 ·
@@ -92,20 +80,15 @@ td.direct_target {
 ·
 <a href="/ledger_raw/#block_4">in ledger</a>
 </span>
-<hr />
+<hr>
 <div class="critical">
     block-wide errors:
     date &lt; previous date
     – and:
 </div>
-<hr />
+<hr>
 
-<textarea name="raw_lines"
-          class="tainter"
-          cols=100
-          rows=7
-          >
-2001-01-01 test
+<textarea name="raw_lines" class="tainter" cols="100" rows="7">2001-01-01 test
   foo:x  10 €
   foo:x  1 USD
   bar:x:y  -10 €
@@ -114,6 +97,7 @@ td.direct_target {
 </textarea>
 </form>
 <table class="alternating critical">
+<tbody>
     <tr>
         <th>account</th>
         <th>before</th>
@@ -124,6 +108,7 @@ td.direct_target {
         <td>bar:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">1</td>
                     <td class="balance currency">€</td>
@@ -132,10 +117,12 @@ td.direct_target {
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
@@ -144,10 +131,12 @@ td.direct_target {
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-9</td>
                     <td class="balance currency">€</td>
@@ -156,6 +145,7 @@ td.direct_target {
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -163,26 +153,32 @@ td.direct_target {
         <td>bar:x:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -190,26 +186,32 @@ td.direct_target {
         <td class="direct_target">bar:x:y</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -217,26 +219,32 @@ td.direct_target {
         <td class="direct_target">bar:z</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -244,6 +252,7 @@ td.direct_target {
         <td>foo:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -252,10 +261,12 @@ td.direct_target {
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -264,10 +275,12 @@ td.direct_target {
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">20</td>
                     <td class="balance currency">€</td>
@@ -276,6 +289,7 @@ td.direct_target {
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -283,6 +297,7 @@ td.direct_target {
         <td class="direct_target">foo:x</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
@@ -291,10 +306,12 @@ td.direct_target {
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -303,10 +320,12 @@ td.direct_target {
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -315,9 +334,11 @@ td.direct_target {
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index 195c72bd746f2e617e8739bccfaa0708e89f281d..6e525d71ed4fffd466f21a7d7287343ddef4c3c7 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <script type="module" src="/edit_structured.js/1">
 </script>
@@ -68,12 +66,12 @@ input.amount {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/edit_structured/1" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -82,18 +80,8 @@ input.amount {
 <a href="/blocks/0">prev</a>
 <a href="/blocks/2">next</a>
 </span>
-<input class="enable_on_taint"
-       type="submit"
-       name="apply"
-       value="apply"
-       disabled
-       />
-<input class="enable_on_taint"
-       type="submit"
-       name="revert"
-       value="revert"
-       disabled
-       />
+<input class="enable_on_taint" type="submit" name="apply" value="apply" disabled="">
+<input class="enable_on_taint" type="submit" name="revert" value="revert" disabled="">
 <span class="disable_on_taint">
 <a href="/edit_raw/1">switch to raw</a>
 ·
@@ -101,7 +89,7 @@ input.amount {
 ·
 <a href="/ledger_structured/#block_1">in ledger</a>
 </span>
-<hr />
+<hr>
 
 <span class="disable_on_taint">
 <input id="btn_mirror" type="button" value="mirror">
@@ -109,33 +97,27 @@ input.amount {
 |
 <input id="btn_replace" type="button" value="replace string">
 from
-<input id="replace_from" />
+<input id="replace_from">
 to
-<input id="replace_to" />
+<input id="replace_to">
 </span>
-<hr />
-<table id="booking_lines" class="alternating">
-</table>
+<hr>
+<table id="booking_lines" class="alternating"><tr><td colspan="1"></td><td colspan="3"><input name="line_0_date" size="10" id="date_input"><input name="line_0_target" size="37"></td><td colspan="1"><input name="line_0_comment" size="40"></td><td colspan="1"><button type="button">add new</button></td></tr><tr><td colspan="1"><button type="button" disabled="">^</button><button type="button">v</button></td><td colspan="1"><input name="line_1_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_1_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_1_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_1_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr><tr><td colspan="1"><button type="button">^</button><button type="button">v</button></td><td colspan="1"><input name="line_2_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_2_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_2_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_2_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr></table>
 <div>Gap:</div>
-<textarea id="gap_lines"
-          name="raw_lines"
-          cols=100
-          rows=2
-          class="tainter"
-          >
-</textarea>
+<textarea id="gap_lines" name="raw_lines" cols="100" rows="2" class="tainter"></textarea>
 </form>
 <datalist id="all_accounts">
-<option value="bar">bar</a>
-<option value="bar:x">bar:x</a>
-<option value="bar:x:y">bar:x:y</a>
-<option value="bar:z">bar:z</a>
-<option value="baz">baz</a>
-<option value="foo">foo</a>
-<option value="foo:x">foo:x</a>
+<option value="bar">bar</option>
+<option value="bar:x">bar:x</option>
+<option value="bar:x:y">bar:x:y</option>
+<option value="bar:z">bar:z</option>
+<option value="baz">baz</option>
+<option value="foo">foo</option>
+<option value="foo:x">foo:x</option>
 </datalist>
-<hr />
+<hr>
 <table class="alternating">
+<tbody>
     <tr>
         <th>account</th>
         <th>before</th>
@@ -146,26 +128,32 @@ to
         <td class="direct_target">bar</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -173,29 +161,36 @@ to
         <td class="direct_target">foo</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index d217c6245263c176d9d554d4af5fb34b0c08c12a..3e79ac695b7c90ac9784f05aef795b8db04d2c3c 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <script type="module" src="/edit_structured.js/4">
 </script>
@@ -68,12 +66,12 @@ input.amount {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/edit_structured/4" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
@@ -82,18 +80,8 @@ input.amount {
 <a href="/blocks/3">prev</a>
 <del>next</del>
 </span>
-<input class="enable_on_taint"
-       type="submit"
-       name="apply"
-       value="apply"
-       disabled
-       />
-<input class="enable_on_taint"
-       type="submit"
-       name="revert"
-       value="revert"
-       disabled
-       />
+<input class="enable_on_taint" type="submit" name="apply" value="apply" disabled="">
+<input class="enable_on_taint" type="submit" name="revert" value="revert" disabled="">
 <span class="disable_on_taint">
 <a href="/edit_raw/4">switch to raw</a>
 ·
@@ -101,13 +89,13 @@ input.amount {
 ·
 <a href="/ledger_structured/#block_4">in ledger</a>
 </span>
-<hr />
+<hr>
 <div class="critical">
     block-wide errors:
     date &lt; previous date
     – and:
 </div>
-<hr />
+<hr>
 
 <span class="disable_on_taint">
 <input id="btn_mirror" type="button" value="mirror">
@@ -115,33 +103,27 @@ input.amount {
 |
 <input id="btn_replace" type="button" value="replace string">
 from
-<input id="replace_from" />
+<input id="replace_from">
 to
-<input id="replace_to" />
+<input id="replace_to">
 </span>
-<hr />
-<table id="booking_lines" class="alternating">
-</table>
+<hr>
+<table id="booking_lines" class="alternating"><tr><td colspan="1"></td><td colspan="3"><input name="line_0_date" size="10" id="date_input"><input name="line_0_target" size="37"></td><td colspan="1"><input name="line_0_comment" size="40"></td><td colspan="1"><button type="button">add new</button></td></tr><tr><td colspan="1"><button type="button" disabled="">^</button><button type="button">v</button></td><td colspan="1"><input name="line_1_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_1_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_1_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_1_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr><tr><td colspan="1"><button type="button">^</button><button type="button">v</button></td><td colspan="1"><input name="line_2_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_2_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_2_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_2_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr><tr><td colspan="1"><button type="button">^</button><button type="button">v</button></td><td colspan="1"><input name="line_3_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_3_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_3_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_3_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr><tr><td colspan="1"><button type="button">^</button><button type="button">v</button></td><td colspan="1"><input name="line_4_account" size="30" list="all_accounts" autocomplete="off"></td><td colspan="1"><input name="line_4_amount" size="12" pattern="^-?[0-9]+(.[0-9]+)?$" class="amount"></td><td colspan="1"><input name="line_4_currency" size="3" placeholder="€"></td><td colspan="1"><input name="line_4_comment" size="40"></td><td colspan="1"><button type="button">add new</button><button type="button">delete</button></td></tr></table>
 <div>Gap:</div>
-<textarea id="gap_lines"
-          name="raw_lines"
-          cols=100
-          rows=2
-          class="tainter"
-          >
-</textarea>
+<textarea id="gap_lines" name="raw_lines" cols="100" rows="2" class="tainter"></textarea>
 </form>
 <datalist id="all_accounts">
-<option value="bar">bar</a>
-<option value="bar:x">bar:x</a>
-<option value="bar:x:y">bar:x:y</a>
-<option value="bar:z">bar:z</a>
-<option value="baz">baz</a>
-<option value="foo">foo</a>
-<option value="foo:x">foo:x</a>
+<option value="bar">bar</option>
+<option value="bar:x">bar:x</option>
+<option value="bar:x:y">bar:x:y</option>
+<option value="bar:z">bar:z</option>
+<option value="baz">baz</option>
+<option value="foo">foo</option>
+<option value="foo:x">foo:x</option>
 </datalist>
-<hr />
+<hr>
 <table class="alternating critical">
+<tbody>
     <tr>
         <th>account</th>
         <th>before</th>
@@ -152,6 +134,7 @@ to
         <td>bar:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">1</td>
                     <td class="balance currency">€</td>
@@ -160,10 +143,12 @@ to
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
@@ -172,10 +157,12 @@ to
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-9</td>
                     <td class="balance currency">€</td>
@@ -184,6 +171,7 @@ to
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -191,26 +179,32 @@ to
         <td>bar:x:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -218,26 +212,32 @@ to
         <td class="direct_target">bar:x:y</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-10</td>
                     <td class="balance currency">€</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -245,26 +245,32 @@ to
         <td class="direct_target">bar:z</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">-1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -272,6 +278,7 @@ to
         <td>foo:</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -280,10 +287,12 @@ to
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -292,10 +301,12 @@ to
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">20</td>
                     <td class="balance currency">€</td>
@@ -304,6 +315,7 @@ to
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
@@ -311,6 +323,7 @@ to
         <td class="direct_target">foo:x</td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">0</td>
                     <td class="balance currency">€</td>
@@ -319,10 +332,12 @@ to
                     <td class="balance amount">0</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -331,10 +346,12 @@ to
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
         <td>
             <table>
+            <tbody>
                 <tr>
                     <td class="balance amount">10</td>
                     <td class="balance currency">€</td>
@@ -343,9 +360,11 @@ to
                     <td class="balance amount">1</td>
                     <td class="balance currency">USD</td>
                 </tr>
+            </tbody>
             </table>
         </td>
     </tr>
+</tbody>
 </table>
-</body>
-</html>
+
+</body></html>
index a9bd1692e0a1b9fa8671e9ecf9fd7582dbf62bcc..a679990c9243eb68cd68adc90fe28f37a8b01d9e 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -43,39 +41,32 @@ table {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/ledger_raw" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
 <form action="/ledger_raw" method="POST">
-Detected redundant empty lines in gaps, <input type="submit" name="remove_redundant_empty_lines" value="fix?" />
-<hr />
+Detected redundant empty lines in gaps, <input type="submit" name="remove_redundant_empty_lines" value="fix?">
+<hr>
 <table class="alternating">
+<tbody>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_0">
-        <td rowspan=3 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_0"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_0"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_0" value="C"/>
+        <td rowspan="3" class="block_column">
+            <input type="submit" name="ledger_moveup_0" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_0" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_0" value="C">
         </td>
-        <td rowspan=3 class="block_column">
-            [<a href="#block_0">#</a>]<br />
-            [<a href="/balance/0">b</a>]<br />
+        <td rowspan="3" class="block_column">
+            [<a href="#block_0">#</a>]<br>
+            [<a href="/balance/0">b</a>]<br>
             [<a href="/edit_raw/0">e</a>]
         </td>
     </tr>
@@ -83,24 +74,16 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
     <tr><td>&nbsp;</td></tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_1">
-        <td rowspan=5 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_1"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_1"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_1" value="C"/>
+        <td rowspan="5" class="block_column">
+            <input type="submit" name="ledger_moveup_1" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_1" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_1" value="C">
         </td>
-        <td rowspan=5 class="block_column">
-            [<a href="#block_1">#</a>]<br />
-            [<a href="/balance/1">b</a>]<br />
+        <td rowspan="5" class="block_column">
+            [<a href="#block_1">#</a>]<br>
+            [<a href="/balance/1">b</a>]<br>
             [<a href="/edit_raw/1">e</a>]
         </td>
     </tr>
@@ -110,23 +93,16 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
     <tr><td>&nbsp;</td></tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_2">
-        <td rowspan=7 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_2"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_2"
-                   value="v"
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_2" value="C"/>
+        <td rowspan="7" class="block_column">
+            <input type="submit" name="ledger_moveup_2" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_2" value="v">
+            <br>
+            <input type="submit" name="ledger_copy_2" value="C">
         </td>
-        <td rowspan=7 class="block_column">
-            [<a href="#block_2">#</a>]<br />
-            [<a href="/balance/2">b</a>]<br />
+        <td rowspan="7" class="block_column">
+            [<a href="#block_2">#</a>]<br>
+            [<a href="/balance/2">b</a>]<br>
             [<a href="/edit_raw/2">e</a>]
         </td>
     </tr>
@@ -138,23 +114,16 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
     <tr><td>&nbsp;</td></tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_3">
-        <td rowspan=6 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_3"
-                   value="^"
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_3"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_3" value="C"/>
+        <td rowspan="6" class="block_column">
+            <input type="submit" name="ledger_moveup_3" value="^">
+            <br>
+            <input type="submit" name="ledger_movedown_3" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_3" value="C">
         </td>
-        <td rowspan=6 class="block_column critical">
-            [<a href="#block_3">#</a>]<br />
-            [<a href="/balance/3">b</a>]<br />
+        <td rowspan="6" class="block_column critical">
+            [<a href="#block_3">#</a>]<br>
+            [<a href="/balance/3">b</a>]<br>
             [<a href="/edit_raw/3">e</a>]
         </td>
     </tr>
@@ -165,24 +134,16 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
     <tr><td>&nbsp;</td></tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_4">
-        <td rowspan=7 class="block_column critical">
-            <input type="submit"
-                   name="ledger_moveup_4"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_4"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_4" value="C"/>
+        <td rowspan="7" class="block_column critical">
+            <input type="submit" name="ledger_moveup_4" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_4" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_4" value="C">
         </td>
-        <td rowspan=7 class="block_column">
-            [<a href="#block_4">#</a>]<br />
-            [<a href="/balance/4">b</a>]<br />
+        <td rowspan="7" class="block_column">
+            [<a href="#block_4">#</a>]<br>
+            [<a href="/balance/4">b</a>]<br>
             [<a href="/edit_raw/4">e</a>]
         </td>
     </tr>
@@ -192,7 +153,8 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
     <tr><td>  bar:x:y  -10 €&nbsp;</td></tr>
     <tr><td>  bar:z  -1 USD&nbsp;</td></tr>
     <tr><td>&nbsp;</td></tr>
+</tbody>
 </table>
 </form>
-</body>
-</html>
+
+</body></html>
index d4fc05d3c464145a7df82ca4ef93ab8f7dfcef4e..a5ef5c138cc820120d82d1be33d37c53c010e7ea 100644 (file)
@@ -1,6 +1,4 @@
-<!DOCTYPE html>
-<html>
-<head>
+<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <style>
 html {
@@ -48,73 +46,58 @@ td.currency {
 </head>
 <body>
 <div id="header">
-    <form action="" method="POST">
+    <form action="/ledger_structured" method="POST">
         <span class="disable_on_taint">
             ledger <a href="/ledger_structured">structured</a>
             / <a href="/ledger_raw">raw</a>
             · <a href="/balance">balance</a>
-            · <input type="submit"name="file_load" value="reload" />
+            · <input type="submit" name="file_load" value="reload">
         </span>
     </form>
 </div>
 <form action="/ledger_structured" method="POST">
-Detected redundant empty lines in gaps, <input type="submit" name="remove_redundant_empty_lines" value="fix?" />
-<hr />
+Detected redundant empty lines in gaps, <input type="submit" name="remove_redundant_empty_lines" value="fix?">
+<hr>
 <table class="alternating">
+<tbody>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_0">
-        <td rowspan=3 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_0"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_0"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_0" value="C"/>
+        <td rowspan="3" class="block_column">
+            <input type="submit" name="ledger_moveup_0" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_0" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_0" value="C">
         </td>
-        <td rowspan=3 class="block_column">
-            [<a href="#block_0">#</a>]<br />
-            [<a href="/balance/0">b</a>]<br />
+        <td rowspan="3" class="block_column">
+            [<a href="#block_0">#</a>]<br>
+            [<a href="/balance/0">b</a>]<br>
             [<a href="/edit_structured/0">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=4>; #def bar:x bla bla bla&nbsp;</td>
+        <td colspan="4">; #def bar:x bla bla bla&nbsp;</td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_1">
-        <td rowspan=5 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_1"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_1"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_1" value="C"/>
+        <td rowspan="5" class="block_column">
+            <input type="submit" name="ledger_moveup_1" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_1" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_1" value="C">
         </td>
-        <td rowspan=5 class="block_column">
-            [<a href="#block_1">#</a>]<br />
-            [<a href="/balance/1">b</a>]<br />
+        <td rowspan="5" class="block_column">
+            [<a href="#block_1">#</a>]<br>
+            [<a href="/balance/1">b</a>]<br>
             [<a href="/edit_structured/1">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=3>2001-01-01 test</td>
+        <td colspan="3">2001-01-01 test</td>
         <td>foo</td>
     </tr>
     <tr>
@@ -130,32 +113,25 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
         <td></td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_2">
-        <td rowspan=7 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_2"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_2"
-                   value="v"
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_2" value="C"/>
+        <td rowspan="7" class="block_column">
+            <input type="submit" name="ledger_moveup_2" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_2" value="v">
+            <br>
+            <input type="submit" name="ledger_copy_2" value="C">
         </td>
-        <td rowspan=7 class="block_column">
-            [<a href="#block_2">#</a>]<br />
-            [<a href="/balance/2">b</a>]<br />
+        <td rowspan="7" class="block_column">
+            [<a href="#block_2">#</a>]<br>
+            [<a href="/balance/2">b</a>]<br>
             [<a href="/edit_structured/2">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=3>2001-01-02 test</td>
+        <td colspan="3">2001-01-02 test</td>
         <td></td>
     </tr>
     <tr>
@@ -177,35 +153,28 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
         <td></td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_3">
-        <td rowspan=6 class="block_column">
-            <input type="submit"
-                   name="ledger_moveup_3"
-                   value="^"
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_3"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_3" value="C"/>
+        <td rowspan="6" class="block_column">
+            <input type="submit" name="ledger_moveup_3" value="^">
+            <br>
+            <input type="submit" name="ledger_movedown_3" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_3" value="C">
         </td>
-        <td rowspan=6 class="block_column critical">
-            [<a href="#block_3">#</a>]<br />
-            [<a href="/balance/3">b</a>]<br />
+        <td rowspan="6" class="block_column critical">
+            [<a href="#block_3">#</a>]<br>
+            [<a href="/balance/3">b</a>]<br>
             [<a href="/edit_structured/3">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=3>2001-01-02 test</td>
+        <td colspan="3">2001-01-02 test</td>
         <td></td>
     </tr>
     <tr>
@@ -227,33 +196,25 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
         <td>baz</td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
     <tr></tr><!-- keep the background-color alternation in proper order -->
     <tr id="block_4">
-        <td rowspan=7 class="block_column critical">
-            <input type="submit"
-                   name="ledger_moveup_4"
-                   value="^"
-                   disabled
-                   />
-            <br />
-            <input type="submit"
-                   name="ledger_movedown_4"
-                   value="v"
-                   disabled
-                   />
-            <br />
-            <input type="submit" name="ledger_copy_4" value="C"/>
+        <td rowspan="7" class="block_column critical">
+            <input type="submit" name="ledger_moveup_4" value="^" disabled="">
+            <br>
+            <input type="submit" name="ledger_movedown_4" value="v" disabled="">
+            <br>
+            <input type="submit" name="ledger_copy_4" value="C">
         </td>
-        <td rowspan=7 class="block_column">
-            [<a href="#block_4">#</a>]<br />
-            [<a href="/balance/4">b</a>]<br />
+        <td rowspan="7" class="block_column">
+            [<a href="#block_4">#</a>]<br>
+            [<a href="/balance/4">b</a>]<br>
             [<a href="/edit_structured/4">e</a>]
         </td>
     </tr>
     <tr>
-        <td colspan=3>2001-01-01 test</td>
+        <td colspan="3">2001-01-01 test</td>
         <td></td>
     </tr>
     <tr>
@@ -281,10 +242,11 @@ Detected redundant empty lines in gaps, <input type="submit" name="remove_redund
         <td></td>
     </tr>
     <tr>
-        <td colspan=4>&nbsp;</td>
+        <td colspan="4">&nbsp;</td>
     </tr>
+</tbody>
 </table>
-<input type="submit" name="add_booking" value="add booking" />
+<input type="submit" name="add_booking" value="add booking">
 </form>
-</body>
-</html>
+
+</body></html>
diff --git a/src/tests/full.taint_js b/src/tests/full.taint_js
deleted file mode 120000 (symlink)
index 1ad99e1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../templates/taint.js
\ No newline at end of file