Skip to content

Commit 48becf0

Browse files
Refactoring of fole and classes names.
1 parent 869e90f commit 48becf0

File tree

7 files changed

+65
-73
lines changed

7 files changed

+65
-73
lines changed

src/umlsequence2/__init__.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1 @@
1-
import os
2-
import sys
3-
4-
from .renderer import Renderer
5-
from .parser import Parser
6-
7-
def generate_svg(input_fp, output_path, percent_zoom, debug, bgcolor):
8-
cmds, raw = Parser(input_fp.read()).parse()
9-
10-
if debug:
11-
print(raw, file=sys.stderr)
12-
print("----------", file=sys.stderr)
13-
for cmd in cmds:
14-
print(cmd[0], ', '.join([repr(a) for a in cmd[1:]]))
15-
16-
Renderer(cmds, output_path, percent_zoom, bgcolor).run()
1+
# File needed for this dir to be a package

src/umlsequence2/convert.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/umlsequence2/run.py renamed to src/umlsequence2/main.py

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,34 @@
1-
#!/usr/bin/env python3
2-
3-
"""Command-line UML sequence diagram generator (version 2).
4-
Converts a textual UML sequence description into a graphic file.
5-
-----
6-
See https://github.com/pbauermeister/umlsequence2/ for information,
7-
syntax and examples.
8-
-----
9-
(C) Copyright 2021 by Pascal Bauermeister.
10-
-----
11-
Usage:
12-
umlsequence2 -h print help for options
13-
umlsequence2 FILE.umlsequence generates FILE.svg
14-
15-
See README.md for more information.
16-
"""
1+
"""Orchestrate the work.
2+
3+
Parse commandline args, read input, generate diagram, and convert to
4+
desired output format.
175
6+
"""
187
import argparse
198
import io
209
import os
2110
import re
2211
import sys
2312
import tempfile
2413

25-
from umlsequence2 import generate_svg
26-
from umlsequence2.convert import convert
14+
from .converter import convert
15+
from .uml_builder import UmlBuilder
16+
from .parser import Parser
17+
18+
19+
def generate_svg(input_fp, output_path, percent_zoom, debug, bgcolor):
20+
cmds, raw = Parser(input_fp.read()).parse()
2721

28-
def run(input_fp, output_path, percent_zoom, debug, bgcolor, format):
22+
if debug:
23+
print(raw, file=sys.stderr)
24+
print("----------", file=sys.stderr)
25+
for cmd in cmds:
26+
print(cmd[0], ', '.join([repr(a) for a in cmd[1:]]))
27+
28+
UmlBuilder(cmds, output_path, percent_zoom, bgcolor).run()
29+
30+
31+
def generate(input_fp, output_path, percent_zoom, debug, bgcolor, format):
2932
if debug:
3033
print(dict(input=input_fp.name,
3134
output=output_path,
@@ -44,11 +47,8 @@ def run(input_fp, output_path, percent_zoom, debug, bgcolor, format):
4447
convert(path, output_path, format)
4548

4649

47-
def main():
48-
parts = [each.strip() for each in __doc__.split('-----')]
49-
parser = argparse.ArgumentParser(
50-
description=parts[0],
51-
epilog=parts[1])
50+
def main(description, epilog):
51+
parser = argparse.ArgumentParser(description=description, epilog=epilog)
5252

5353
parser.add_argument('INPUT_FILE',
5454
action="store",
@@ -110,8 +110,8 @@ def main():
110110
inp = io.StringIO(snippet['src'])
111111
name = snippet['output']
112112
inp.name = name
113-
run(inp, name, args.percent_zoom, args.debug, args.background_color,
114-
args.format)
113+
generate(inp, name, args.percent_zoom, args.debug,
114+
args.background_color, args.format)
115115
print(f'{sys.argv[0]}: generated {name}', file=sys.stderr)
116116
sys.exit(0)
117117

@@ -128,15 +128,12 @@ def main():
128128
# output to stdout
129129
with tempfile.TemporaryDirectory() as d:
130130
path = os.path.join(d, 'file.svg')
131-
run(inp, path, args.percent_zoom, args.debug, args.background_color,
132-
args.format)
131+
generate(inp, path, args.percent_zoom, args.debug,
132+
args.background_color, args.format)
133133
with open(path) as f:
134134
print(f.read())
135135
else:
136136
# output to file
137-
run(inp, name, args.percent_zoom, args.debug, args.background_color,
138-
args.format)
137+
generate(inp, name, args.percent_zoom, args.debug,
138+
args.background_color, args.format)
139139
sys.exit(0)
140-
141-
if __name__ == "__main__":
142-
main()

src/umlsequence2/parser.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
"""Parse input code.
2+
3+
Tokenize and parse input code, and translate to intermediate commands.
4+
5+
"""
16
import re
27

38

49
def escape(s):
510
return s.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
611

7-
###############################################################################
8-
912

1013
class Parser:
1114
RE_MESSAGE = re.compile(

src/umlsequence2/svg_builder.py renamed to src/umlsequence2/svg_renderer.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1+
"""Implement graphic primitives as SVG elements."""
12
import svgwrite
23
from svgwrite import cm, mm
34

45
from .config import CONFIG
56

7+
68
def cm2px(cm):
79
return cm * 35.43307
810
return round(cm * 35.43307, 2)
911

12+
1013
def px2cm(px):
1114
return px / 35.43307
1215
return round(px / 35.43307, 2)
1316

1417

15-
class SvgBuilder:
18+
class SvgRenderer:
1619
def __init__(self, out_path, percent_zoom, bg_color='white'):
1720
self.dwg = svgwrite.Drawing(filename=out_path, debug=True)
1821
self.zoom = percent_zoom/100

src/umlsequence2/renderer.py renamed to src/umlsequence2/uml_builder.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
1+
"""Render intermediate UML code to graphic primitives."""
12
import sys
23
import re
34
from subprocess import Popen, PIPE
45
from collections import OrderedDict, namedtuple
56

67
from .config import CONFIG as C
7-
from .svg_builder import SvgBuilder
8+
from .svg_renderer import SvgRenderer
89

910
RX_COMMENT_POS = re.compile(r'\s*(\S+)\s+(\S+)')
1011
RX_FRAME_OPTS = re.compile(r'\s*(\S+)\s+(\S+)')
1112

12-
1313
Object = namedtuple('object', 'type index name label ypos row')
1414
Comment = namedtuple('comment', 'x y width height')
1515
Frame = namedtuple('frame', 'xpos ypos label out')
1616

1717

18-
def error(message, renderer):
18+
def error(message, builder):
1919
print(f'ERROR: {message}:', file=sys.stderr)
20-
print(f' {renderer.line_nr}: {renderer.line}', file=sys.stderr)
20+
print(f' {builder.line_nr}: {builder.line}', file=sys.stderr)
2121
sys.exit(1)
2222

2323

2424
class CheckedOrderedDict(OrderedDict):
25-
def __init__(self, name, renderer):
25+
def __init__(self, name, builder):
2626
self.name = name
27-
self.renderer = renderer
27+
self.builder = builder
2828
super().__init__()
2929

3030
def __getitem__(self, key):
3131
try:
3232
return super().__getitem__(key)
3333
except KeyError:
34-
error(f'There is no {self.name} named "{key}"', self.renderer)
34+
error(f'There is no {self.name} named "{key}"', self.builder)
3535
sys.exit(1)
3636

3737

38-
class Renderer:
38+
class UmlBuilder:
3939
def __init__(self, lines, out_path, percent_zoom, bg_color):
4040
self.lines = lines
41-
self.gfx = SvgBuilder(out_path, percent_zoom, bg_color)
41+
self.gfx = SvgRenderer(out_path, percent_zoom, bg_color)
4242
self.warnings = set()
4343
self.g = {}
4444

umlsequence2

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
#!/usr/bin/env python3
2+
3+
"""Command-line UML sequence diagram generator (version 2).
4+
Converts a textual UML sequence description into a graphic file.
5+
-----
6+
See https://github.com/pbauermeister/umlsequence2/ for information,
7+
syntax and examples.
8+
-----
9+
(C) Copyright 2021 by Pascal Bauermeister.
10+
-----
11+
See README.md for more information.
12+
"""
13+
214
import os.path
315
import sys
416

517
home = os.path.split(sys.argv[0])[0]
618
sys.path.append(os.path.join(home, 'src'))
719

820
if __name__ == "__main__":
9-
from src.umlsequence2.run import main
10-
main()
21+
from src.umlsequence2.main import main
22+
23+
desc, epilog, _, _ = [each.strip() for each in __doc__.split('-----')]
24+
main(desc, epilog)

0 commit comments

Comments
 (0)