Просмотр исходного кода

nanorst: better inline formatting in tables

Marian Beermann 8 лет назад
Родитель
Сommit
a04625cd13
2 измененных файлов с 17 добавлено и 2 удалено
  1. 7 2
      src/borg/archiver.py
  2. 10 0
      src/borg/nanorst.py

+ 7 - 2
src/borg/archiver.py

@@ -2449,16 +2449,21 @@ class Archiver:
         Encryption modes
         ++++++++++++++++
 
+        .. nanorst: inline-fill
+
         +----------+---------------+------------------------+--------------------------+
         | Hash/MAC | Not encrypted | Not encrypted,         | Encrypted (AEAD w/ AES)  |
         |          | no auth       | but authenticated      | and authenticated        |
         +----------+---------------+------------------------+--------------------------+
-        | SHA-256  | none          | `authenticated`        | repokey, keyfile         |
+        | SHA-256  | none          | `authenticated`        | repokey                  |
+        |          |               |                        | keyfile                  |
         +----------+---------------+------------------------+--------------------------+
-        | BLAKE2b  | n/a           | `authenticated-blake2` | `repokey-blake2`,        |
+        | BLAKE2b  | n/a           | `authenticated-blake2` | `repokey-blake2`         |
         |          |               |                        | `keyfile-blake2`         |
         +----------+---------------+------------------------+--------------------------+
 
+        .. nanorst: inline-replace
+
         `Marked modes` are new in Borg 1.1 and are not backwards-compatible with Borg 1.0.x.
 
         On modern Intel/AMD CPUs (except very cheap ones), AES is usually

+ 10 - 0
src/borg/nanorst.py

@@ -58,6 +58,7 @@ def rst_to_text(text, state_hook=None, references=None):
     state_hook = state_hook or (lambda old_state, new_state, out: None)
     references = references or {}
     state = 'text'
+    inline_mode = 'replace'
     text = TextPecker(text)
     out = io.StringIO()
 
@@ -117,17 +118,26 @@ def rst_to_text(text, state_hook=None, references=None):
                 directive, is_directive, arguments = text.readline().partition('::')
                 text.read(1)
                 if not is_directive:
+                    # partition: if the separator is not in the text, the leftmost output is the entire input
+                    if directive == 'nanorst: inline-fill':
+                        inline_mode = 'fill'
+                    elif directive == 'nanorst: inline-replace':
+                        inline_mode = 'replace'
                     continue
                 process_directive(directive, arguments.strip(), out, state_hook)
                 continue
         if state in inline_single and char == state:
             state_hook(state, 'text', out)
             state = 'text'
+            if inline_mode == 'fill':
+                out.write(2 * ' ')
             continue
         if state == '``' and char == next == '`':
             state_hook(state, 'text', out)
             state = 'text'
             text.read(1)
+            if inline_mode == 'fill':
+                out.write(4 * ' ')
             continue
         if state == '**' and char == next == '*':
             state_hook(state, 'text', out)