spreadsheet

terminal spreadsheet application
git clone https://git.ce9e.org/spreadsheet.git

commit
1dbe4aeb58c046b9b7634c21afaf43cecdd5f3ed
parent
adbc8cd0f116dafb81c5fc161b71dd2ae17cf161
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-07-20 17:13
add command line args for evaluation

Diffstat

M sheet/__main__.py 33 ++++++++++++++++++++++++++++-----

1 files changed, 28 insertions, 5 deletions


diff --git a/sheet/__main__.py b/sheet/__main__.py

@@ -1,13 +1,16 @@
   -1     1 import argparse
    1     2 import sys
    2     3 
    3     4 import boon
    4     5 
   -1     6 from .csv import dump_csv
    5     7 from .csv import load_csv
    6     8 from .expression import shift_refs
    7     9 from .expression import unparse
    8    10 from .expression import x2col
    9    11 from .input import Input
   10    12 from .sheet import Bar
   -1    13 from .sheet import Sheet
   11    14 from .sheet import iter_range
   12    15 from .term import align_center
   13    16 from .term import align_left
@@ -32,10 +35,13 @@ def to_cell(value: float|int|str|None|Exception, width: int) -> str:
   32    35 
   33    36 
   34    37 class App(boon.App):
   35    -1     def __init__(self):
   -1    38     def __init__(self, path=None):
   36    39         super().__init__()
   37    -1         with open(sys.argv[1]) as fh:
   38    -1             self.sheet = load_csv(fh)
   -1    40         if path:
   -1    41             with open(path) as fh:
   -1    42                 self.sheet = load_csv(fh)
   -1    43         else:
   -1    44             self.sheet = Sheet()
   39    45         self.x0 = 0
   40    46         self.y0 = 0
   41    47         self.cursor_x = 0
@@ -197,5 +203,22 @@ class App(boon.App):
  197   203             self.drag = self.cursor
  198   204 
  199   205 
  200    -1 app = App()
  201    -1 app.run()
   -1   206 def get_parser():
   -1   207     parser = argparse.ArgumentParser()
   -1   208     parser.add_argument('path', nargs='?')
   -1   209     parser.add_argument('--eval')
   -1   210     return parser
   -1   211 
   -1   212 
   -1   213 if __name__ == '__main__':
   -1   214     args = get_parser().parse_args()
   -1   215     if args.eval:
   -1   216         if not args.path:
   -1   217             raise ValueError('path missing')
   -1   218         with open(args.path) as fh:
   -1   219             sheet = load_csv(fh)
   -1   220         with open(args.eval, 'w') as fh:
   -1   221             dump_csv(sheet, fh, display=True)
   -1   222     else:
   -1   223         app = App(args.path)
   -1   224         app.run()