Add wsdiff article
This commit is contained in:
parent
3fd0c107e0
commit
d2891b448a
2 changed files with 1016 additions and 0 deletions
127
content/blog/wsdiff-static-html-diffs/index.rst
Normal file
127
content/blog/wsdiff-static-html-diffs/index.rst
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
---
|
||||
title: "wsdiff: Responsive diffs in plain HTML"
|
||||
date: 2025-07-25T23:42:00+01:00
|
||||
summary: >
|
||||
There's many tools that render diffs on the web, but almost none that work well on small screens such as phones. I
|
||||
fixed this by publishing wsdiff, a diffing tool written in Python that produces diffs as beautiful, responsive,
|
||||
static, self-contained HTML pages. wsdiffs wrap text to fit the window, and dynamically switch between unified and
|
||||
split diffs based on screen size using only CSS.
|
||||
---
|
||||
|
||||
Demo
|
||||
----
|
||||
|
||||
First off, have a demo. Because of the width of this page, the output will show an unified diff. To try out the split
|
||||
diff layout, make sure your browser window is wide enough and open the demo in a separate tab using `this link
|
||||
</wsdiff-example.html>`__.
|
||||
|
||||
wsdiff supports dark mode, try it out by toggling dark mode in your operating system!
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe src="/wsdiff-example.html" style="width: 100%; height: 30em; border: 1px #d0d0d0 solid" id="wsdiff example diff"></iframe>
|
||||
|
||||
Core Features
|
||||
-------------
|
||||
|
||||
There's many tools that render diffs on the web, but almost none that work well on small screens such as phones. I fixed
|
||||
this by publishing `wsdiff <https://pypi.org/project/wsdiff/>`__, a diffing tool written in Python that produces diffs
|
||||
as beautiful, responsive, static, self-contained HTML pages. wsdiffs wrap text to fit the window, and dynamically switch
|
||||
between unified and split diffs based on screen size using only CSS.
|
||||
|
||||
Responsive Line Wrapping
|
||||
........................
|
||||
|
||||
The first challenge I solved was wrapping source code lines to match the available screen space. Other tools often just
|
||||
show horizontal scroll bars, which is an okay workaround when you're mostly working with hard-wrapped source code on a
|
||||
laptop or desktop screen, but which results in catastrophic UX on any phone.
|
||||
|
||||
I solved line breaking with a combination of CSS-controlled, web-standard word breaking rules: ``overflow-wrap:
|
||||
anywhere`` for source code (`MDN link <https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap>`__) and
|
||||
``white-space: pre-wrap`` to preserve whitespace accurately (`MDN link
|
||||
<https://developer.mozilla.org/en-US/docs/Web/CSS/white-space>`__). To make both sides of the split diff align, and to
|
||||
align line numbers with wrapped source code lines, the diff is laid out using a `CSS grid layout`_. In side-by-side
|
||||
view, the layout has four columns: two for line numbers and two for the content. In unified view, the left ("old")
|
||||
content column is dropped, and the deleted or modified lines that are highlighted in it in side-by-side view are slotted
|
||||
into the remaining right column.
|
||||
|
||||
When soft-wrapping source code, text editors will often display a little curved arrow marker to indicate that a line was
|
||||
soft-wrapped, and that there is not actually a newline character in the file at that location. wsdiff solves this
|
||||
using the same technique I used for the soft-wrapping code blocks in this blog, described `here <{{<ref
|
||||
"blog/css-only-code-blocks/index.rst">}}>`__. It inserts a string of ``"\a↳\a↳\a↳\a↳\a↳..."`` into the line number
|
||||
element's ``::after`` pseudo-element. This string evaluates to a sequence of unicode arrows separated by line breaks,
|
||||
and starting with an empty line. The ``::after`` pseudo-element is positioned using ``position: absolute``, and the
|
||||
parent ``<span class="lineno">`` has ``position: relative`` set. This way, the arrow pseudo-element gets placed on top
|
||||
of the lineno span without affecting the layout at all. By setting ``overflow: clip`` on the parent ``<span
|
||||
class="lineno">``, the arrow pseudo-element gets cut off vertically wherever the parent line number element naturally
|
||||
ends. Since both the line and the line number element share a grid row, the line number element always matches the
|
||||
height of the soft-wrapped line.
|
||||
|
||||
Responsive Split/Unified Layout Selection
|
||||
.........................................
|
||||
|
||||
To dynamically change between unified and side-by-side views, wsdiff uses a web-standard `Media Query`_. By default, the
|
||||
page is laid out for side-by-side view. In the HTML source, the diff is listed as it is displayed in side-by-side view,
|
||||
with the old and new lines along with their line numbers interleaved.
|
||||
|
||||
The magic happens when the media query gets triggered by a narrow screen width. The media query re-adjusts the layout in
|
||||
four core steps:
|
||||
|
||||
1. All unchanged lines in the left (old) column are hidden.
|
||||
2. The left content column of the grid layout is hidden, so that now there are three columns: old line number, new line
|
||||
number, and unified content.
|
||||
3. All deleted or changed lines from the left (old) column are re-located to the right column. They naturally slot in
|
||||
in the right spot because they already appear in the right order in the HTML source.
|
||||
4. By slotting in the old lines in the right column, we have created gaps in the line number columns. Every deleted
|
||||
line has an empty cell in the new line number column, and every inserted line has one in the old line number column.
|
||||
The CSS adjusts the layout of these empty cells such that the border lines align nicely, and it overrides the
|
||||
newline markers so that they only show in the right (new) line number column, not both.
|
||||
|
||||
Since this is all CSS, it happens automatically and near-instantly. Since it is using only web standard features, it
|
||||
works across browsers and platforms.
|
||||
|
||||
Unchanged Line Folding in CSS
|
||||
.............................
|
||||
|
||||
When showing the diff of a large file, it is usually best to hide large runs of unchanged lines. wsdiff does this
|
||||
similar to code folding in text editors. When a long run of unchanged lines is detected, a marker is placed spanning the
|
||||
diff. This marker contains a checkbox that can be toggled to hide the unchanged lines. This feature is done completely
|
||||
in CSS using a ``:has(input[type="checkbox"]:checked)`` selector.
|
||||
|
||||
The actual mechanics are quite simple. To cleanly hide the lines, they must be placed in a container ``<div>``. That div
|
||||
has a CSS subgrid layout using ``display: grid; grid-template-columns: subgrid;``, meaning that its contents align to
|
||||
the surrounding diff grid.
|
||||
|
||||
Dark Mode
|
||||
.........
|
||||
|
||||
Integrating a website with the OS-level dark mode is surprisingly easy. All you need is a `Media Query`_ that selects
|
||||
for ``@media (prefers-color-scheme: dark)`` and you're good. wsdiff uses named colors using `CSS Custom Properties`_, so
|
||||
the actual dark mode media query only needs to override these color properties, and the rest of the CSS will be
|
||||
re-computed automatically.
|
||||
|
||||
Limitations: Text selection
|
||||
...........................
|
||||
|
||||
A limitation in having a combined, single HTML source for both side-by-side and unified diffs is that text selection
|
||||
only works naturally in either mode. You can't make text selection work in both simultaneously without re-sorting the
|
||||
lines in the HTML source, since there is no way to override the text selection order from pure CSS. In wsdiff, I worked
|
||||
around this issue by just disabling text selection on the unchanged lines in the left (old) column, so selecting text in
|
||||
the right column copies the unified diff as one would expect.
|
||||
|
||||
Try it yourself!
|
||||
----------------
|
||||
|
||||
You can find the demo from above at `this link </wsdiff-example.html>`__.
|
||||
|
||||
You can install wsdiff yourself `from PyPI <https://pypi.org/project/wsdiff/>`__:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
$ pip install -U wsdiff
|
||||
Successfully installed wsdiff-0.3.1
|
||||
$ wsdiff old.py new.py -o diff.html
|
||||
|
||||
.. _`CSS grid layout`: https://css-tricks.com/snippets/css/complete-guide-grid/
|
||||
.. _`Media Query`: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries
|
||||
.. _`CSS Custom Properties`: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_cascading_variables/Using_CSS_custom_properties
|
||||
889
static/wsdiff-example.html
Normal file
889
static/wsdiff-example.html
Normal file
|
|
@ -0,0 +1,889 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>diff: example_old.py / example.py</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<style id="wsd-main-style">
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
html {
|
||||
--c-bg-primary: #ffffff;
|
||||
--c-fg-primary: #000000;
|
||||
--c-bg-auxiliary: #f8f8f8;
|
||||
--c-fg-auxiliary: #a0a0a0;
|
||||
--c-border-line: #e0e0e0;
|
||||
--c-bg-insert: #ecfdf0;
|
||||
--c-bg-delete: #fbe9eb;
|
||||
--c-bg-delete-lineno: #f9d7dc;
|
||||
--c-fg-delete-lineno: #ae969a;
|
||||
--c-bg-delete-word: #fac5cd;
|
||||
--c-fg-delete-word: #400000;
|
||||
--c-fg-insert-word: #004000;
|
||||
--c-bg-insert-word: #c7f0d2;
|
||||
--c-fg-insert-lineno: #9bb0a1;
|
||||
--c-bg-insert-lineno: #ddfbe6;
|
||||
--c-bg-empty: #f0f0f0;
|
||||
--c-fg-foldline: #bbbbbb;
|
||||
--c-border-delete: #e0c8c8; /* pick a darker border color inside the light red gutter */
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
--c-bg-primary: #010409;
|
||||
--c-fg-primary: #a0a0a0;
|
||||
--c-bg-auxiliary: #0d1117;
|
||||
--c-fg-auxiliary: #f0f6fc;
|
||||
--c-fg-foldline: #bbbbbb;
|
||||
--c-border-line: #3d444d;
|
||||
--c-bg-insert: #223738;
|
||||
--c-bg-delete: #280d1f;
|
||||
--c-bg-delete-lineno: #421632;
|
||||
--c-fg-delete-lineno: #ae969a;
|
||||
--c-bg-delete-word: #421632;
|
||||
--c-fg-delete-word: #fac5cd;
|
||||
--c-fg-insert-word: #c7f0d2;
|
||||
--c-bg-insert-word: #325148;
|
||||
--c-fg-insert-lineno: #9bb0a1;
|
||||
--c-bg-insert-lineno: #325148;
|
||||
--c-bg-empty: #080b0f;
|
||||
--c-border-delete: #e0c8c8;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
html {
|
||||
/* Copy of the light theme, but we clip all light gray backgrounds to white. */
|
||||
--c-bg-primary: #ffffff;
|
||||
--c-fg-primary: #000000;
|
||||
--c-bg-auxiliary: #ffffff;
|
||||
--c-fg-auxiliary: #a0a0a0;
|
||||
--c-border-line: #e0e0e0;
|
||||
--c-bg-insert: #ecfdf0;
|
||||
--c-bg-delete: #fbe9eb;
|
||||
--c-bg-delete-lineno: #f9d7dc;
|
||||
--c-fg-delete-lineno: #ae969a;
|
||||
--c-bg-delete-word: #fac5cd;
|
||||
--c-fg-delete-word: #400000;
|
||||
--c-fg-insert-word: #004000;
|
||||
--c-bg-insert-word: #c7f0d2;
|
||||
--c-fg-insert-lineno: #9bb0a1;
|
||||
--c-bg-insert-lineno: #ddfbe6;
|
||||
--c-bg-empty: #ffffff;
|
||||
--c-fg-foldline: #bbbbbb;
|
||||
--c-border-delete: #e0c8c8;
|
||||
}
|
||||
}
|
||||
|
||||
@layer wsd-base-style {
|
||||
html {
|
||||
background-color: var(--c-bg-primary);
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#wsd-js-controls {
|
||||
display: none;
|
||||
color: var(--c-fg-primary);
|
||||
background-color: var(--c-bg-auxiliary);
|
||||
padding: 5px 20px;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
border: 1px solid var(--c-border-line);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 40em) {
|
||||
#wsd-js-controls {
|
||||
position: initial;
|
||||
}
|
||||
|
||||
.wsd-diff {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.wsd-file-title {
|
||||
background-color: var(--c-bg-auxiliary);
|
||||
border-bottom: solid 1px var(--c-border-line);
|
||||
}
|
||||
}
|
||||
|
||||
#wsd-js-controls input[type="checkbox"] {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#wsd-js-controls input, #wsd-js-controls label, #wsd-js-controls .control-label {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.wsd-field-group {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.wsd-field {
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#wsd-js-controls label {
|
||||
font-weight: normal;
|
||||
margin-right: .5em;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.wsd-control-label {
|
||||
margin-right: .5em;
|
||||
margin-left: 5px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.wsd-file-container {
|
||||
font-family: monospace;
|
||||
font-size: 9pt;
|
||||
background-color: var(--c-bg-auxiliary);
|
||||
border: solid 1px var(--c-border-line);
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
.wsd-file-title {
|
||||
padding: 10px 20px;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.wsd-filename {
|
||||
max-width: 30em;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.wsd-diff-files {
|
||||
color: var(--c-fg-primary);
|
||||
}
|
||||
|
||||
.wsd-diff {
|
||||
background-color: var(--c-bg-primary);
|
||||
overflow-x: auto;
|
||||
display: grid;
|
||||
align-items: start;
|
||||
border-top: 1px solid var(--c-border-line);
|
||||
}
|
||||
|
||||
.wsd-line {
|
||||
padding-left: calc(4em + 5px);
|
||||
text-indent: -4em;
|
||||
padding-top: 2px;
|
||||
align-self: stretch; /* Make sure empty lines don't collapse */
|
||||
}
|
||||
|
||||
/* Make individual syntax tokens wrap anywhere */
|
||||
.wsd-line > span {
|
||||
overflow-wrap: anywhere;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.wsd-line {
|
||||
min-width: 15em;
|
||||
}
|
||||
|
||||
.wsd-line.wsd-left.wsd-change, .wsd-line.wsd-left.wsd-insert {
|
||||
background-color: var(--c-bg-delete);
|
||||
}
|
||||
|
||||
.wsd-line.wsd-right.wsd-change, .wsd-line.wsd-right.wsd-insert {
|
||||
background-color: var(--c-bg-insert);
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-change, .wsd-lineno.wsd-left.wsd-insert {
|
||||
background-color: var(--c-bg-delete-lineno);
|
||||
color: var(--c-fg-delete-lineno);
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right.wsd-change, .wsd-lineno.wsd-right.wsd-insert {
|
||||
background-color: var(--c-bg-insert-lineno);
|
||||
color: var(--c-fg-insert-lineno);
|
||||
}
|
||||
|
||||
.wsd-right > .wsd-word-change {
|
||||
background-color: var(--c-bg-insert-word);
|
||||
color: var(--c-fg-insert-word);
|
||||
}
|
||||
|
||||
.wsd-left > .wsd-word-change {
|
||||
background-color: var(--c-bg-delete-word);
|
||||
color: var(--c-fg-delete-word);
|
||||
}
|
||||
|
||||
.wsd-lineno {
|
||||
word-break: keep-all;
|
||||
margin: 0;
|
||||
padding-left: 30px;
|
||||
padding-right: 5px;
|
||||
overflow: clip;
|
||||
position: relative;
|
||||
text-align: right;
|
||||
color: var(--c-fg-auxiliary);
|
||||
background-color: var(--c-bg-auxiliary);
|
||||
border-right: 1px solid var(--c-border-line);
|
||||
align-self: stretch;
|
||||
}
|
||||
|
||||
.wsd-lineno::after {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
content: "\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳";
|
||||
white-space: pre;
|
||||
color: var(--c-fg-auxiliary);
|
||||
}
|
||||
|
||||
/* Default rules for split diff for wide screens (laptops) */
|
||||
.wsd-diff {
|
||||
grid-template-columns: min-content 1fr min-content 1fr;
|
||||
}
|
||||
|
||||
.wsd-empty {
|
||||
background-color: var(--c-bg-empty);
|
||||
align-self: stretch;
|
||||
}
|
||||
|
||||
/* line continuation arrows only in non-empty lines */
|
||||
.wsd-lineno.wsd-empty::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.wsd-lineno, .wsd-left {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
/* Collapsing runs of unchanged lines */
|
||||
.wsd-collapse {
|
||||
grid-column: 1 / span 4;
|
||||
display: grid;
|
||||
grid-template-columns: subgrid;
|
||||
}
|
||||
|
||||
.wsd-collapse-controls {
|
||||
grid-column: 1 / span 4;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
color: var(--c-fg-auxiliary);
|
||||
|
||||
background-image: radial-gradient(var(--c-fg-foldline) 1px, transparent 0);
|
||||
background-size: 10px 10px;
|
||||
background-position: center;
|
||||
background-repeat: repeat-x;
|
||||
background-color: var(--c-bg-auxiliary)
|
||||
}
|
||||
|
||||
.wsd-collapse-controls > label {
|
||||
background-color: var(--c-bg-auxiliary);
|
||||
}
|
||||
|
||||
.wsd-collapse:has(input[type="checkbox"]:checked) > span {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@layer wsd-automatic-media-rule {
|
||||
/* Unified diff for narrow screens (phones) */
|
||||
@media screen and (max-width: 70em) {
|
||||
.wsd-diff {
|
||||
grid-auto-flow: dense;
|
||||
grid-template-columns: min-content min-content 1fr;
|
||||
}
|
||||
|
||||
.wsd-collapse, .wsd-collapse-controls {
|
||||
grid-column: 1 / span 3;
|
||||
}
|
||||
|
||||
.wsd-lineno {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left {
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-change, .wsd-lineno.wsd-right.wsd-change {
|
||||
grid-column: 1 / span 2;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
grid-auto-flow: dense;
|
||||
/* To make alignment of left line number work, since we loose margin and padding control using ::before. */
|
||||
column-gap: 10px;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right.wsd-change::before {
|
||||
content: "";
|
||||
align-self: stretch;
|
||||
grid-column: 1;
|
||||
border-right: 1px solid var(--c-border-line);
|
||||
margin-right: -6px; /* move border into column gap, and 1px over to align with other borders */
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-change::before {
|
||||
content: "";
|
||||
align-self: stretch;
|
||||
grid-column: 2;
|
||||
border-left: 1px solid var(--c-border-delete);
|
||||
margin-left: -5px;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-insert {
|
||||
border-right: 1px solid var(--c-border-delete);
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right.wsd-change::after {
|
||||
grid-column: 2;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-insert {
|
||||
grid-column: 1 / span 2;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-auto-flow: dense;
|
||||
column-gap: 10px;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right {
|
||||
grid-column: 2;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right.wsd-insert {
|
||||
grid-column: 2;
|
||||
}
|
||||
|
||||
.wsd-line.wsd-left, .wsd-line.wsd-right.wsd-empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wsd-line {
|
||||
grid-column: 3;
|
||||
}
|
||||
|
||||
.wsd-line.wsd-left.wsd-insert {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wsd-line.wsd-left.wsd-change {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-right.wsd-empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-empty {
|
||||
background-color: var(--c-bg-insert-lineno);
|
||||
}
|
||||
|
||||
/* line continuation arrows only in right line number column */
|
||||
.wsd-lineno.wsd-left.wsd-insert::after {
|
||||
}
|
||||
|
||||
.wsd-lineno.wsd-left.wsd-insert::before {
|
||||
content: "";
|
||||
grid-column: 2;
|
||||
border-left: 1px solid var(--c-border-delete); /* pick a darker border color inside the light red gutter */
|
||||
margin-left: -5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@media print, (prefers-color-scheme: light) {
|
||||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.hll { background-color: #ffffcc }
|
||||
.wsd-c { color: #177500 } /* Comment */
|
||||
.wsd-err { color: #000 } /* Error */
|
||||
.wsd-k { color: #A90D91 } /* Keyword */
|
||||
.wsd-l { color: #1C01CE } /* Literal */
|
||||
.wsd-n { color: #000 } /* Name */
|
||||
.wsd-o { color: #000 } /* Operator */
|
||||
.wsd-ch { color: #177500 } /* Comment.Hashbang */
|
||||
.wsd-cm { color: #177500 } /* Comment.Multiline */
|
||||
.wsd-cp { color: #633820 } /* Comment.Preproc */
|
||||
.wsd-cpf { color: #177500 } /* Comment.PreprocFile */
|
||||
.wsd-c1 { color: #177500 } /* Comment.Single */
|
||||
.wsd-cs { color: #177500 } /* Comment.Special */
|
||||
.wsd-kc { color: #A90D91 } /* Keyword.Constant */
|
||||
.wsd-kd { color: #A90D91 } /* Keyword.Declaration */
|
||||
.wsd-kn { color: #A90D91 } /* Keyword.Namespace */
|
||||
.wsd-kp { color: #A90D91 } /* Keyword.Pseudo */
|
||||
.wsd-kr { color: #A90D91 } /* Keyword.Reserved */
|
||||
.wsd-kt { color: #A90D91 } /* Keyword.Type */
|
||||
.wsd-ld { color: #1C01CE } /* Literal.Date */
|
||||
.wsd-m { color: #1C01CE } /* Literal.Number */
|
||||
.wsd-s { color: #C41A16 } /* Literal.String */
|
||||
.wsd-na { color: #836C28 } /* Name.Attribute */
|
||||
.wsd-nb { color: #A90D91 } /* Name.Builtin */
|
||||
.wsd-nc { color: #3F6E75 } /* Name.Class */
|
||||
.wsd-no { color: #000 } /* Name.Constant */
|
||||
.wsd-nd { color: #000 } /* Name.Decorator */
|
||||
.wsd-ni { color: #000 } /* Name.Entity */
|
||||
.wsd-ne { color: #000 } /* Name.Exception */
|
||||
.wsd-nf { color: #000 } /* Name.Function */
|
||||
.wsd-nl { color: #000 } /* Name.Label */
|
||||
.wsd-nn { color: #000 } /* Name.Namespace */
|
||||
.wsd-nx { color: #000 } /* Name.Other */
|
||||
.wsd-py { color: #000 } /* Name.Property */
|
||||
.wsd-nt { color: #000 } /* Name.Tag */
|
||||
.wsd-nv { color: #000 } /* Name.Variable */
|
||||
.wsd-ow { color: #000 } /* Operator.Word */
|
||||
.wsd-mb { color: #1C01CE } /* Literal.Number.Bin */
|
||||
.wsd-mf { color: #1C01CE } /* Literal.Number.Float */
|
||||
.wsd-mh { color: #1C01CE } /* Literal.Number.Hex */
|
||||
.wsd-mi { color: #1C01CE } /* Literal.Number.Integer */
|
||||
.wsd-mo { color: #1C01CE } /* Literal.Number.Oct */
|
||||
.wsd-sa { color: #C41A16 } /* Literal.String.Affix */
|
||||
.wsd-sb { color: #C41A16 } /* Literal.String.Backtick */
|
||||
.wsd-sc { color: #2300CE } /* Literal.String.Char */
|
||||
.wsd-dl { color: #C41A16 } /* Literal.String.Delimiter */
|
||||
.wsd-sd { color: #C41A16 } /* Literal.String.Doc */
|
||||
.wsd-s2 { color: #C41A16 } /* Literal.String.Double */
|
||||
.wsd-se { color: #C41A16 } /* Literal.String.Escape */
|
||||
.wsd-sh { color: #C41A16 } /* Literal.String.Heredoc */
|
||||
.wsd-si { color: #C41A16 } /* Literal.String.Interpol */
|
||||
.wsd-sx { color: #C41A16 } /* Literal.String.Other */
|
||||
.wsd-sr { color: #C41A16 } /* Literal.String.Regex */
|
||||
.wsd-s1 { color: #C41A16 } /* Literal.String.Single */
|
||||
.wsd-ss { color: #C41A16 } /* Literal.String.Symbol */
|
||||
.wsd-bp { color: #5B269A } /* Name.Builtin.Pseudo */
|
||||
.wsd-fm { color: #000 } /* Name.Function.Magic */
|
||||
.wsd-vc { color: #000 } /* Name.Variable.Class */
|
||||
.wsd-vg { color: #000 } /* Name.Variable.Global */
|
||||
.wsd-vi { color: #000 } /* Name.Variable.Instance */
|
||||
.wsd-vm { color: #000 } /* Name.Variable.Magic */
|
||||
.wsd-il { color: #1C01CE } /* Literal.Number.Integer.Long */
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.hll { background-color: #716799 }
|
||||
.wsd-c { color: #B0BEC5 } /* Comment */
|
||||
.wsd-err { color: #960050; background-color: #1E0010 } /* Error */
|
||||
.wsd-k { color: #C2FFDF } /* Keyword */
|
||||
.wsd-l { color: #AE81FF } /* Literal */
|
||||
.wsd-n { color: #F8F8F2 } /* Name */
|
||||
.wsd-o { color: #FFB8D1 } /* Operator */
|
||||
.wsd-p { color: #F8F8F2 } /* Punctuation */
|
||||
.wsd-ch { color: #B0BEC5 } /* Comment.Hashbang */
|
||||
.wsd-cm { color: #B0BEC5 } /* Comment.Multiline */
|
||||
.wsd-cp { color: #B0BEC5 } /* Comment.Preproc */
|
||||
.wsd-cpf { color: #B0BEC5 } /* Comment.PreprocFile */
|
||||
.wsd-c1 { color: #B0BEC5 } /* Comment.Single */
|
||||
.wsd-cs { color: #B0BEC5 } /* Comment.Special */
|
||||
.wsd-gd { color: #F92672 } /* Generic.Deleted */
|
||||
.wsd-ge { font-style: italic } /* Generic.Emph */
|
||||
.wsd-gi { color: #A6E22E } /* Generic.Inserted */
|
||||
.wsd-gs { font-weight: bold } /* Generic.Strong */
|
||||
.wsd-gu { color: #75715E } /* Generic.Subheading */
|
||||
.wsd-kc { color: #C2FFDF } /* Keyword.Constant */
|
||||
.wsd-kd { color: #C2FFDF } /* Keyword.Declaration */
|
||||
.wsd-kn { color: #FFB8D1 } /* Keyword.Namespace */
|
||||
.wsd-kp { color: #C2FFDF } /* Keyword.Pseudo */
|
||||
.wsd-kr { color: #C2FFDF } /* Keyword.Reserved */
|
||||
.wsd-kt { color: #C2FFDF } /* Keyword.Type */
|
||||
.wsd-ld { color: #E6DB74 } /* Literal.Date */
|
||||
.wsd-m { color: #C5A3FF } /* Literal.Number */
|
||||
.wsd-s { color: #1BC5E0 } /* Literal.String */
|
||||
.wsd-na { color: #CEB1FF } /* Name.Attribute */
|
||||
.wsd-nb { color: #F8F8F2 } /* Name.Builtin */
|
||||
.wsd-nc { color: #CEB1FF } /* Name.Class */
|
||||
.wsd-no { color: #C5A3FF } /* Name.Constant */
|
||||
.wsd-nd { color: #CEB1FF } /* Name.Decorator */
|
||||
.wsd-ni { color: #F8F8F2 } /* Name.Entity */
|
||||
.wsd-ne { color: #CEB1FF } /* Name.Exception */
|
||||
.wsd-nf { color: #CEB1FF } /* Name.Function */
|
||||
.wsd-nl { color: #F8F8F2 } /* Name.Label */
|
||||
.wsd-nn { color: #F8F8F2 } /* Name.Namespace */
|
||||
.wsd-nx { color: #F8F8F2 } /* Name.Other */
|
||||
.wsd-py { color: #F8F8F2 } /* Name.Property */
|
||||
.wsd-nt { color: #FFB8D1 } /* Name.Tag */
|
||||
.wsd-nv { color: #F8F8F2 } /* Name.Variable */
|
||||
.wsd-ow { color: #FFB8D1 } /* Operator.Word */
|
||||
.wsd-pm { color: #F8F8F2 } /* Punctuation.Marker */
|
||||
.wsd-w { color: #A8757B } /* Text.Whitespace */
|
||||
.wsd-mb { color: #C5A3FF } /* Literal.Number.Bin */
|
||||
.wsd-mf { color: #C5A3FF } /* Literal.Number.Float */
|
||||
.wsd-mh { color: #C5A3FF } /* Literal.Number.Hex */
|
||||
.wsd-mi { color: #C5A3FF } /* Literal.Number.Integer */
|
||||
.wsd-mo { color: #C5A3FF } /* Literal.Number.Oct */
|
||||
.wsd-sa { color: #1BC5E0 } /* Literal.String.Affix */
|
||||
.wsd-sb { color: #1BC5E0 } /* Literal.String.Backtick */
|
||||
.wsd-sc { color: #1BC5E0 } /* Literal.String.Char */
|
||||
.wsd-dl { color: #1BC5E0 } /* Literal.String.Delimiter */
|
||||
.wsd-sd { color: #1BC5E0 } /* Literal.String.Doc */
|
||||
.wsd-s2 { color: #1BC5E0 } /* Literal.String.Double */
|
||||
.wsd-se { color: #1BC5E0 } /* Literal.String.Escape */
|
||||
.wsd-sh { color: #1BC5E0 } /* Literal.String.Heredoc */
|
||||
.wsd-si { color: #1BC5E0 } /* Literal.String.Interpol */
|
||||
.wsd-sx { color: #1BC5E0 } /* Literal.String.Other */
|
||||
.wsd-sr { color: #1BC5E0 } /* Literal.String.Regex */
|
||||
.wsd-s1 { color: #1BC5E0 } /* Literal.String.Single */
|
||||
.wsd-ss { color: #1BC5E0 } /* Literal.String.Symbol */
|
||||
.wsd-bp { color: #80CBC4 } /* Name.Builtin.Pseudo */
|
||||
.wsd-fm { color: #CEB1FF } /* Name.Function.Magic */
|
||||
.wsd-vc { color: #F8F8F2 } /* Name.Variable.Class */
|
||||
.wsd-vg { color: #F8F8F2 } /* Name.Variable.Global */
|
||||
.wsd-vi { color: #F8F8F2 } /* Name.Variable.Instance */
|
||||
.wsd-vm { color: #F8F8F2 } /* Name.Variable.Magic */
|
||||
.wsd-il { color: #C5A3FF } /* Literal.Number.Integer.Long */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="wsd-js-controls">
|
||||
<div class="wsd-single-control">
|
||||
<span class="wsd-control-label">Split view</span>
|
||||
<span class="wsd-three-way-toggle">
|
||||
<div class="wsd-field-group">
|
||||
<div class="wsd-field"><input type="checkbox" id="wsd-toggle-split-auto" checked></input><label for="wsd-toggle-split-auto">Auto</label></div>
|
||||
<div class="wsd-field"><input type="checkbox" id="wsd-toggle-split-force" disabled></input><label for="wsd-toggle-split-force">Split view</label></div>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
const findStylesheet = (id => Array.from(document.styleSheets).find(element => element.ownerNode && element.ownerNode.id == id));
|
||||
const findRule = ((stylesheet, name) => Array.from(stylesheet.cssRules).find(
|
||||
element => (element instanceof CSSLayerBlockRule && element.name == name)).cssRules[0]);
|
||||
|
||||
const automaticMediaElement = findRule(findStylesheet('wsd-main-style'), 'wsd-automatic-media-rule');
|
||||
const automaticMediaRule = automaticMediaElement.media[0];
|
||||
const impossibleMediaRule = "screen and (max-width: 0px)";
|
||||
const tautologicalMediaRule = "screen and (min-width: 0px)";
|
||||
|
||||
const toggleAuto = document.getElementById("wsd-toggle-split-auto");
|
||||
const toggleForce = document.getElementById("wsd-toggle-split-force");
|
||||
toggleAuto.checked = true;
|
||||
toggleForce.disabled = true;
|
||||
|
||||
toggleAuto.addEventListener('change', (event) => {
|
||||
const automatic = toggleAuto.checked;
|
||||
toggleForce.disabled = automatic;
|
||||
if (automatic) {
|
||||
automaticMediaElement.media.deleteMedium(automaticMediaElement.media[0]);
|
||||
automaticMediaElement.media.appendMedium(automaticMediaRule);
|
||||
} else {
|
||||
automaticMediaElement.media.deleteMedium(automaticMediaRule);
|
||||
if (toggleForce.checked) {
|
||||
automaticMediaElement.media.appendMedium(impossibleMediaRule);
|
||||
} else {
|
||||
automaticMediaElement.media.appendMedium(tautologicalMediaRule);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
toggleForce.addEventListener('change', (event) => {
|
||||
const automatic = toggleAuto.checked;
|
||||
if (!automatic) {
|
||||
automaticMediaElement.media.deleteMedium(automaticMediaElement.media[0]);
|
||||
if (toggleForce.checked) {
|
||||
automaticMediaElement.media.appendMedium(impossibleMediaRule);
|
||||
} else {
|
||||
automaticMediaElement.media.appendMedium(tautologicalMediaRule);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const mediaMatch = window.matchMedia(automaticMediaRule);
|
||||
mediaMatch.addEventListener('change', (event) => {
|
||||
const automatic = toggleAuto.checked;
|
||||
if (automatic) {
|
||||
toggleForce.checked = !event.matches;
|
||||
}
|
||||
});
|
||||
toggleForce.checked = !mediaMatch.matches;
|
||||
|
||||
document.getElementById('wsd-js-controls').style = 'display: flex';
|
||||
|
||||
</script>
|
||||
<div class="wsd-diff-files">
|
||||
<div class="wsd-file-container">
|
||||
<div class="wsd-file-title"><div class="wsd-filename">‭example.py</div></div>
|
||||
<div class="wsd-diff">
|
||||
<span class="wsd-lineno wsd-left">1</span><span class="wsd-line wsd-left"><span class="wsd-ch">#!/usr/bin/env python3</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">1</span><span class="wsd-line wsd-right"><span class="wsd-ch">#!/usr/bin/env python3</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">2</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">2</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">3</span><span class="wsd-line wsd-left"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">math</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">3</span><span class="wsd-line wsd-right"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">math</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">4</span><span class="wsd-line wsd-left"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">itertools</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">4</span><span class="wsd-line wsd-right"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">itertools</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">5</span><span class="wsd-line wsd-left"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">textwrap</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">5</span><span class="wsd-line wsd-right"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">textwrap</span><span class="wsd-w"></span></span></span>
|
||||
<div class="wsd-collapse"><div class="wsd-collapse-controls"><label><input type="checkbox" checked> Collapse 24 unchanged lines</label></div>
|
||||
<span class="wsd-lineno wsd-left">6</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">6</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">7</span><span class="wsd-line wsd-left"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">click</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">7</span><span class="wsd-line wsd-right"><span class="wsd-kn">import</span><span class="wsd-w"> </span><span class="wsd-nn">click</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">8</span><span class="wsd-line wsd-left"><span class="wsd-kn">from</span><span class="wsd-w"> </span><span class="wsd-nn">reedmuller</span><span class="wsd-w"> </span><span class="wsd-kn">import</span><span class="n"> </span><span class="wsd-n">reedmuller</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">8</span><span class="wsd-line wsd-right"><span class="wsd-kn">from</span><span class="wsd-w"> </span><span class="wsd-nn">reedmuller</span><span class="wsd-w"> </span><span class="wsd-kn">import</span><span class="n"> </span><span class="wsd-n">reedmuller</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">9</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">9</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">10</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">10</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">11</span><span class="wsd-line wsd-left"><span class="wsd-k">class</span><span class="wsd-w"> </span><span class="wsd-nc">Tag</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">11</span><span class="wsd-line wsd-right"><span class="wsd-k">class</span><span class="wsd-w"> </span><span class="wsd-nc">Tag</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">12</span><span class="wsd-line wsd-left"><span class="wsd-w"> </span><span class="wsd-sd">""" Helper class to ease creation of SVG. All API functions that create SVG allow you to substitute this with your</span></span></span>
|
||||
<span class="wsd-lineno wsd-right">12</span><span class="wsd-line wsd-right"><span class="wsd-w"> </span><span class="wsd-sd">""" Helper class to ease creation of SVG. All API functions that create SVG allow you to substitute this with your</span></span></span>
|
||||
<span class="wsd-lineno wsd-left">13</span><span class="wsd-line wsd-left"><span class="wsd-sd"> own implementation by passing a ``tag`` parameter. """</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">13</span><span class="wsd-line wsd-right"><span class="wsd-sd"> own implementation by passing a ``tag`` parameter. """</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">14</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">14</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">15</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-fm">__init__</span><span class="wsd-p">(</span><span class="wsd-bp">self</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">children</span><span class="wsd-o">=</span><span class="wsd-kc">None</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-o">=</span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-o">*</span><span class="wsd-n">attrs</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">15</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-fm">__init__</span><span class="wsd-p">(</span><span class="wsd-bp">self</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">children</span><span class="wsd-o">=</span><span class="wsd-kc">None</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-o">=</span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-o">*</span><span class="wsd-n">attrs</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">16</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">fill</span><span class="n"> </span><span class="wsd-o">:=</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">get</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">fill</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-ow">and</span><span class="n"> </span><span class="wsd-nb">isinstance</span><span class="wsd-p">(</span><span class="wsd-n">fill</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">tuple</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">16</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">fill</span><span class="n"> </span><span class="wsd-o">:=</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">get</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">fill</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-ow">and</span><span class="n"> </span><span class="wsd-nb">isinstance</span><span class="wsd-p">(</span><span class="wsd-n">fill</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">tuple</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">17</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">fill</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">fill-opacity</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">fill</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">17</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">fill</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">fill-opacity</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">fill</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">18</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">stroke</span><span class="n"> </span><span class="wsd-o">:=</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">get</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-ow">and</span><span class="n"> </span><span class="wsd-nb">isinstance</span><span class="wsd-p">(</span><span class="wsd-n">stroke</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">tuple</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">18</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">stroke</span><span class="n"> </span><span class="wsd-o">:=</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">get</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-ow">and</span><span class="n"> </span><span class="wsd-nb">isinstance</span><span class="wsd-p">(</span><span class="wsd-n">stroke</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">tuple</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">19</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke-opacity</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">stroke</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">19</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-p">[</span><span class="wsd-s1">'</span><span class="wsd-s1">stroke-opacity</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">stroke</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">20</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">attrs</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">20</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">attrs</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">name</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">attrs</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">21</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-ow">or</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">21</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-ow">or</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">22</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">root</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">22</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">root</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">23</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">23</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">24</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-fm">__str__</span><span class="wsd-p">(</span><span class="wsd-bp">self</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">24</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-fm">__str__</span><span class="wsd-p">(</span><span class="wsd-bp">self</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">25</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">prefix</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"><?xml version=</span><span class="wsd-s1">"</span><span class="wsd-s1">1.0</span><span class="wsd-s1">"</span><span class="wsd-s1"> encoding=</span><span class="wsd-s1">"</span><span class="wsd-s1">utf-8</span><span class="wsd-s1">"</span><span class="wsd-s1">?></span><span class="wsd-se">\n</span><span class="wsd-s1">'</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">root</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">25</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">prefix</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"><?xml version=</span><span class="wsd-s1">"</span><span class="wsd-s1">1.0</span><span class="wsd-s1">"</span><span class="wsd-s1"> encoding=</span><span class="wsd-s1">"</span><span class="wsd-s1">utf-8</span><span class="wsd-s1">"</span><span class="wsd-s1">?></span><span class="wsd-se">\n</span><span class="wsd-s1">'</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">root</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">26</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">opening</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"> </span><span class="wsd-s1">'</span><span class="wsd-o">.</span><span class="wsd-n">join</span><span class="wsd-p">(</span><span class="wsd-p">[</span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">key</span><span class="wsd-o">.</span><span class="wsd-n">replace</span><span class="wsd-p">(</span><span class="wsd-s2">"</span><span class="wsd-s2">__</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"> </span><span class="wsd-s2">"</span><span class="wsd-s2">:</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-o">.</span><span class="wsd-n">replace</span><span class="wsd-p">(</span><span class="wsd-s2">"</span><span class="wsd-s2">_</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"> </span><span class="wsd-s2">"</span><span class="wsd-s2">-</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-si">}</span><span class="wsd-s1">=</span><span class="wsd-s1">"</span><span class="wsd-si">{</span><span class="wsd-n">value</span><span class="wsd-si">}</span><span class="wsd-s1">"</span><span class="wsd-s1">'</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">value</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">items</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">26</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">opening</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"> </span><span class="wsd-s1">'</span><span class="wsd-o">.</span><span class="wsd-n">join</span><span class="wsd-p">(</span><span class="wsd-p">[</span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-p">]</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">key</span><span class="wsd-o">.</span><span class="wsd-n">replace</span><span class="wsd-p">(</span><span class="wsd-s2">"</span><span class="wsd-s2">__</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"> </span><span class="wsd-s2">"</span><span class="wsd-s2">:</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-o">.</span><span class="wsd-n">replace</span><span class="wsd-p">(</span><span class="wsd-s2">"</span><span class="wsd-s2">_</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"> </span><span class="wsd-s2">"</span><span class="wsd-s2">-</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-si">}</span><span class="wsd-s1">=</span><span class="wsd-s1">"</span><span class="wsd-si">{</span><span class="wsd-n">value</span><span class="wsd-si">}</span><span class="wsd-s1">"</span><span class="wsd-s1">'</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">value</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">attrs</span><span class="wsd-o">.</span><span class="wsd-n">items</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">27</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">27</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">28</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-se">\n</span><span class="wsd-s1">'</span><span class="wsd-o">.</span><span class="wsd-n">join</span><span class="wsd-p">(</span><span class="wsd-n">textwrap</span><span class="wsd-o">.</span><span class="wsd-n">indent</span><span class="wsd-p">(</span><span class="wsd-nb">str</span><span class="wsd-p">(</span><span class="wsd-n">c</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"> </span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">c</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">28</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">children</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-se">\n</span><span class="wsd-s1">'</span><span class="wsd-o">.</span><span class="wsd-n">join</span><span class="wsd-p">(</span><span class="wsd-n">textwrap</span><span class="wsd-o">.</span><span class="wsd-n">indent</span><span class="wsd-p">(</span><span class="wsd-nb">str</span><span class="wsd-p">(</span><span class="wsd-n">c</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1"> </span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">c</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">children</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">29</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">prefix</span><span class="wsd-si">}</span><span class="wsd-s1"><</span><span class="wsd-si">{</span><span class="wsd-n">opening</span><span class="wsd-si">}</span><span class="wsd-s1">></span><span class="wsd-se">\n</span><span class="wsd-si">{</span><span class="wsd-n">children</span><span class="wsd-si">}</span><span class="wsd-se">\n</span><span class="wsd-s1"></</span><span class="wsd-si">{</span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-si">}</span><span class="wsd-s1">></span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">29</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">prefix</span><span class="wsd-si">}</span><span class="wsd-s1"><</span><span class="wsd-si">{</span><span class="wsd-n">opening</span><span class="wsd-si">}</span><span class="wsd-s1">></span><span class="wsd-se">\n</span><span class="wsd-si">{</span><span class="wsd-n">children</span><span class="wsd-si">}</span><span class="wsd-se">\n</span><span class="wsd-s1"></</span><span class="wsd-si">{</span><span class="wsd-bp">self</span><span class="wsd-o">.</span><span class="wsd-n">name</span><span class="wsd-si">}</span><span class="wsd-s1">></span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
</div>
|
||||
<span class="wsd-lineno wsd-left">30</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">else</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">30</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">else</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">31</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">prefix</span><span class="wsd-si">}</span><span class="wsd-s1"><</span><span class="wsd-si">{</span><span class="wsd-n">opening</span><span class="wsd-si">}</span><span class="wsd-s1">/></span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">31</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">prefix</span><span class="wsd-si">}</span><span class="wsd-s1"><</span><span class="wsd-si">{</span><span class="wsd-n">opening</span><span class="wsd-si">}</span><span class="wsd-s1">/></span><span class="wsd-s1">'</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">32</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">32</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">33</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">33</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">34</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-nd">@classmethod</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">34</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-nd">@classmethod</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-change">35</span><span class="wsd-line wsd-left wsd-change"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-nf">setup_svg</span><span class="wsd-p">(</span><span class="wsd-n">kls</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-p">,</span><span class="wsd-n"></span><span class="n wsd-word-change"> </span><span class="wsd-n wsd-word-change">margin</span><span class="wsd-o wsd-word-change">=</span><span class="wsd-mi wsd-word-change">0</span><span class="wsd-p wsd-word-change">,</span><span class="wsd-n wsd-word-change"></span><span class="n"> </span><span class="wsd-n">unit</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">mm</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">pagecolor</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">white</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-change">35</span><span class="wsd-line wsd-right wsd-change"><span class="n"> </span><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-nf">setup_svg</span><span class="wsd-p">(</span><span class="wsd-n">kls</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">unit</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">mm</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">pagecolor</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">white</span><span class="wsd-s1">'</span><span class="wsd-wsd-p"></span><span class="wsd-p wsd-word-change">,</span><span class="n wsd-word-change"> </span><span class="wsd-n wsd-word-change">inkscape</span><span class="wsd-o wsd-word-change">=</span><span class="wsd-kc wsd-word-change">False</span><span class="wsd-wsd-p wsd-word-change"></span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">36</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">min_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">min_y</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">max_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">max_y</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">36</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">min_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">min_y</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">max_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">max_y</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">37</span><span class="wsd-line wsd-left wsd-insert"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">38</span><span class="wsd-line wsd-left wsd-insert"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">39</span><span class="wsd-line wsd-left wsd-insert"><span class="n"> </span><span class="wsd-n">min_x</span><span class="n"> </span><span class="wsd-o">-</span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">40</span><span class="wsd-line wsd-left wsd-insert"><span class="n"> </span><span class="wsd-n">min_y</span><span class="n"> </span><span class="wsd-o">-</span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">41</span><span class="wsd-line wsd-left wsd-insert"><span class="n"> </span><span class="wsd-n">max_x</span><span class="n"> </span><span class="wsd-o">+</span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left wsd-insert">42</span><span class="wsd-line wsd-left wsd-insert"><span class="n"> </span><span class="wsd-n">max_y</span><span class="n"> </span><span class="wsd-o">+</span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-empty"></span><span class="wsd-line wsd-right wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-left">43</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">37</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">44</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">h</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">max_x</span><span class="n"> </span><span class="wsd-o">-</span><span class="n"> </span><span class="wsd-n">min_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">max_y</span><span class="n"> </span><span class="wsd-o">-</span><span class="n"> </span><span class="wsd-n">min_y</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">38</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">h</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">max_x</span><span class="n"> </span><span class="wsd-o">-</span><span class="n"> </span><span class="wsd-n">min_x</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">max_y</span><span class="n"> </span><span class="wsd-o">-</span><span class="n"> </span><span class="wsd-n">min_y</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">45</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">w</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mf">1.0</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">math</span><span class="wsd-o">.</span><span class="wsd-n">isclose</span><span class="wsd-p">(</span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mf">0.0</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-n">w</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">39</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">w</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mf">1.0</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">math</span><span class="wsd-o">.</span><span class="wsd-n">isclose</span><span class="wsd-p">(</span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mf">0.0</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-n">w</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">46</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">h</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mf">1.0</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">math</span><span class="wsd-o">.</span><span class="wsd-n">isclose</span><span class="wsd-p">(</span><span class="wsd-n">h</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mf">0.0</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-n">h</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">40</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">h</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mf">1.0</span><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">math</span><span class="wsd-o">.</span><span class="wsd-n">isclose</span><span class="wsd-p">(</span><span class="wsd-n">h</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mf">0.0</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">else</span><span class="n"> </span><span class="wsd-n">h</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">47</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">41</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">42</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">inkscape</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">43</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-o">.</span><span class="wsd-n">insert</span><span class="wsd-p">(</span><span class="wsd-mi">0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">kls</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">sodipodi:namedview</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">id</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">namedview1</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">pagecolor</span><span class="wsd-o">=</span><span class="wsd-n">pagecolor</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">44</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">inkscape__document_units</span><span class="wsd-o">=</span><span class="wsd-n">unit</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-change">48</span><span class="wsd-line wsd-left wsd-change"><span class="n"> </span><span class="wsd-n">namespaces</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">dict</span><span class="wsd-p">(</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-change">45</span><span class="wsd-line wsd-right wsd-change"><span class="wsd-n"></span><span class="wsd-n wsd-word-change"> </span><span class="n"> </span><span class="wsd-n">namespaces</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">dict</span><span class="wsd-p">(</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-change">49</span><span class="wsd-line wsd-left wsd-change"><span class="n"> </span><span class="wsd-n">xmlns</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/2000/svg</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-change">46</span><span class="wsd-line wsd-right wsd-change"><span class="wsd-n"></span><span class="wsd-n wsd-word-change"> </span><span class="n"> </span><span class="wsd-n">xmlns</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/2000/svg</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">47</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">xmlns__xlink</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/1999/xlink</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">48</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">xmlns__sodipodi</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">49</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">xmlns__inkscape</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">http://www.inkscape.org/namespaces/inkscape</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">50</span><span class="wsd-line wsd-right wsd-insert"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">51</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-k">else</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">52</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">namespaces</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">dict</span><span class="wsd-p">(</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-empty"></span><span class="wsd-line wsd-left wsd-empty"></span>
|
||||
<span class="wsd-lineno wsd-right wsd-insert">53</span><span class="wsd-line wsd-right wsd-insert"><span class="n"> </span><span class="wsd-n">xmlns</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/2000/svg</span><span class="wsd-s2">"</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left wsd-change">50</span><span class="wsd-line wsd-left wsd-change"><span class="n"> </span><span class="wsd-n">xmlns__xlink</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/1999/xlink</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right wsd-change">54</span><span class="wsd-line wsd-right wsd-change"><span class="wsd-n"></span><span class="wsd-n wsd-word-change"> </span><span class="n"> </span><span class="wsd-n">xmlns__xlink</span><span class="wsd-o">=</span><span class="wsd-s2">"</span><span class="wsd-s2">http://www.w3.org/1999/xlink</span><span class="wsd-s2">"</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">51</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">55</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">52</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-n">kls</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">svg</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">56</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">return</span><span class="n"> </span><span class="wsd-n">kls</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">svg</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">53</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">width</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">w</span><span class="wsd-si">}</span><span class="wsd-si">{</span><span class="wsd-n">unit</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">height</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">h</span><span class="wsd-si">}</span><span class="wsd-si">{</span><span class="wsd-n">unit</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">57</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">width</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">w</span><span class="wsd-si">}</span><span class="wsd-si">{</span><span class="wsd-n">unit</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">height</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">h</span><span class="wsd-si">}</span><span class="wsd-si">{</span><span class="wsd-n">unit</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">54</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">viewBox</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">min_x</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">min_y</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">w</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">h</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">58</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">viewBox</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">min_x</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">min_y</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">w</span><span class="wsd-si">}</span><span class="wsd-s1"> </span><span class="wsd-si">{</span><span class="wsd-n">h</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">55</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">style</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-s1">background-color:</span><span class="wsd-si">{</span><span class="wsd-n">pagecolor</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">59</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">style</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-s1">background-color:</span><span class="wsd-si">{</span><span class="wsd-n">pagecolor</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<div class="wsd-collapse"><div class="wsd-collapse-controls"><label><input type="checkbox" checked> Collapse 49 unchanged lines</label></div>
|
||||
<span class="wsd-lineno wsd-left">56</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-o">*</span><span class="wsd-n">namespaces</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">60</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-o">*</span><span class="wsd-n">namespaces</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">57</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-o">=</span><span class="wsd-kc">True</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">61</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">root</span><span class="wsd-o">=</span><span class="wsd-kc">True</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">58</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">62</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">59</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">63</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">60</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">command</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">64</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">command</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">61</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-h</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--height</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">20</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Bar height in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">65</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-h</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--height</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">20</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Bar height in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">62</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-t/-n</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--text/--no-text</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Whether to add text containing the data under the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">66</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-t/-n</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--text/--no-text</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Whether to add text containing the data under the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">63</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-f</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--font</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">sans-serif</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Font for the text underneath the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">67</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-f</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--font</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">sans-serif</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Font for the text underneath the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">64</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-s</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--font-size</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">12</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Font size for the text underneath the bar code in points (pt)</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">68</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-s</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--font-size</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">12</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Font size for the text underneath the bar code in points (pt)</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">65</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-b</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--bar-width</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mf">1.0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Bar width in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">69</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-b</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--bar-width</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mf">1.0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Bar width in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">66</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-m</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--margin</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mf">3.0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Margin around bar code in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">70</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-m</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--margin</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mf">3.0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">Margin around bar code in mm</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">67</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-c</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--color</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">black</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">SVG color for the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">71</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">-c</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">--color</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">black</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">SVG color for the bar code</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">68</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">--text-color</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-kc">None</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">SVG color for the text (defaults to the bar code</span><span class="wsd-se">\'</span><span class="wsd-s1">s color)</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">72</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">--text-color</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-kc">None</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">SVG color for the text (defaults to the bar code</span><span class="wsd-se">\'</span><span class="wsd-s1">s color)</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">69</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">--dpi</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">96</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">DPI value to assume for internal SVG unit conversions</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">73</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">option</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">--dpi</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-nb">float</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-mi">96</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">help</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">DPI value to assume for internal SVG unit conversions</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">70</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">argument</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">data</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">74</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">argument</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">data</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">71</span><span class="wsd-line wsd-left"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">argument</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">outfile</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-n">click</span><span class="wsd-o">.</span><span class="wsd-n">File</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">w</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">-</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">75</span><span class="wsd-line wsd-right"><span class="wsd-nd">@click</span><span class="wsd-o">.</span><span class="wsd-n">argument</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">outfile</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-nb">type</span><span class="wsd-o">=</span><span class="wsd-n">click</span><span class="wsd-o">.</span><span class="wsd-n">File</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">w</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">default</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">-</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">72</span><span class="wsd-line wsd-left"><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-nf">cli</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">outfile</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">height</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">text</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bar_width</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">text_color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">dpi</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">76</span><span class="wsd-line wsd-right"><span class="wsd-k">def</span><span class="wsd-w"> </span><span class="wsd-nf">cli</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">outfile</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">height</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">text</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bar_width</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">text_color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">dpi</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">73</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">data</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">int</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mi">16</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">77</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">data</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">int</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mi">16</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">74</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">text_color</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">text_color</span><span class="n"> </span><span class="wsd-ow">or</span><span class="n"> </span><span class="wsd-n">color</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">78</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">text_color</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">text_color</span><span class="n"> </span><span class="wsd-ow">or</span><span class="n"> </span><span class="wsd-n">color</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">75</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">79</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">76</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">NUM_BITS</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mi">26</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">80</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">NUM_BITS</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-mi">26</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">77</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">81</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">78</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">data_bits</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-nb">bool</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="n"> </span><span class="wsd-o">&</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-mi">1</span><span class="wsd-o"><<</span><span class="wsd-n">i</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">i</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-nb">range</span><span class="wsd-p">(</span><span class="wsd-n">NUM_BITS</span><span class="wsd-p">)</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">82</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">data_bits</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-nb">bool</span><span class="wsd-p">(</span><span class="wsd-n">data</span><span class="n"> </span><span class="wsd-o">&</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-mi">1</span><span class="wsd-o"><<</span><span class="wsd-n">i</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">i</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-nb">range</span><span class="wsd-p">(</span><span class="wsd-n">NUM_BITS</span><span class="wsd-p">)</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">79</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">data_encoded</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">itertools</span><span class="wsd-o">.</span><span class="wsd-n">chain</span><span class="wsd-p">(</span><span class="wsd-o">*</span><span class="wsd-p">[</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">83</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">data_encoded</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">itertools</span><span class="wsd-o">.</span><span class="wsd-n">chain</span><span class="wsd-p">(</span><span class="wsd-o">*</span><span class="wsd-p">[</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">80</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">a</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-ow">not</span><span class="n"> </span><span class="wsd-n">a</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">a</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-n">data_bits</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">84</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">a</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-ow">not</span><span class="n"> </span><span class="wsd-n">a</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">a</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-n">data_bits</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">81</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">85</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">82</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">data_encoded</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-n">data_encoded</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">86</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">data_encoded</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-o">*</span><span class="wsd-n">data_encoded</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">False</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-kc">True</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">83</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">87</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">84</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">width</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">len</span><span class="wsd-p">(</span><span class="wsd-n">data_encoded</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-o">*</span><span class="n"> </span><span class="wsd-n">bar_width</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">88</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">width</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">len</span><span class="wsd-p">(</span><span class="wsd-n">data_encoded</span><span class="wsd-p">)</span><span class="n"> </span><span class="wsd-o">*</span><span class="n"> </span><span class="wsd-n">bar_width</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">85</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-c1"># 1 px = 0.75 pt</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">89</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-c1"># 1 px = 0.75 pt</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">86</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">pt_to_mm</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-k">lambda</span><span class="n"> </span><span class="wsd-n">pt</span><span class="wsd-p">:</span><span class="n"> </span><span class="wsd-n">pt</span><span class="n"> </span><span class="wsd-o">/</span><span class="n"> </span><span class="wsd-mf">0.75</span><span class="n"> </span><span class="wsd-o">/</span><span class="wsd-n">dpi</span><span class="n"> </span><span class="wsd-o">*</span><span class="n"> </span><span class="wsd-mf">25.4</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">90</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">pt_to_mm</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-k">lambda</span><span class="n"> </span><span class="wsd-n">pt</span><span class="wsd-p">:</span><span class="n"> </span><span class="wsd-n">pt</span><span class="n"> </span><span class="wsd-o">/</span><span class="n"> </span><span class="wsd-mf">0.75</span><span class="n"> </span><span class="wsd-o">/</span><span class="wsd-n">dpi</span><span class="n"> </span><span class="wsd-o">*</span><span class="n"> </span><span class="wsd-mf">25.4</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">87</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">font_size</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">pt_to_mm</span><span class="wsd-p">(</span><span class="wsd-n">font_size</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">91</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">font_size</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">pt_to_mm</span><span class="wsd-p">(</span><span class="wsd-n">font_size</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">88</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">total_height</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">height</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-o">*</span><span class="wsd-mi">2</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">92</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">total_height</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">height</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-o">*</span><span class="wsd-mi">2</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">89</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">93</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">90</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">tags</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">94</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">tags</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-p">[</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">91</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">group</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-n">itertools</span><span class="wsd-o">.</span><span class="wsd-n">groupby</span><span class="wsd-p">(</span><span class="wsd-nb">enumerate</span><span class="wsd-p">(</span><span class="wsd-n">data_encoded</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-o">=</span><span class="wsd-k">lambda</span><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-p">:</span><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-p">[</span><span class="wsd-mi">1</span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">95</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">for</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">group</span><span class="n"> </span><span class="wsd-ow">in</span><span class="n"> </span><span class="wsd-n">itertools</span><span class="wsd-o">.</span><span class="wsd-n">groupby</span><span class="wsd-p">(</span><span class="wsd-nb">enumerate</span><span class="wsd-p">(</span><span class="wsd-n">data_encoded</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-o">=</span><span class="wsd-k">lambda</span><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-p">:</span><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-p">[</span><span class="wsd-mi">1</span><span class="wsd-p">]</span><span class="wsd-p">)</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">92</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">96</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">key</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">93</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">group</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">list</span><span class="wsd-p">(</span><span class="wsd-n">group</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">97</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">group</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">list</span><span class="wsd-p">(</span><span class="wsd-n">group</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">94</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">x0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">_key</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">group</span><span class="wsd-p">[</span><span class="wsd-mi">0</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">98</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">x0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">_key</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-n">group</span><span class="wsd-p">[</span><span class="wsd-mi">0</span><span class="wsd-p">]</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">95</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">w</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">len</span><span class="wsd-p">(</span><span class="wsd-n">group</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">99</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">w</span><span class="n"> </span><span class="wsd-o">=</span><span class="n"> </span><span class="wsd-nb">len</span><span class="wsd-p">(</span><span class="wsd-n">group</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">96</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-o">.</span><span class="wsd-n">append</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">path</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">stroke</span><span class="wsd-o">=</span><span class="wsd-n">color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">stroke_width</span><span class="wsd-o">=</span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">d</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-s1">M </span><span class="wsd-si">{</span><span class="wsd-p">(</span><span class="wsd-n">x0</span><span class="wsd-w"> </span><span class="wsd-o">+</span><span class="wsd-w"> </span><span class="wsd-n">w</span><span class="wsd-o">/</span><span class="wsd-mi">2</span><span class="wsd-p">)</span><span class="wsd-o">*</span><span class="wsd-n">bar_width</span><span class="wsd-si">}</span><span class="wsd-s1"> 0 l 0 </span><span class="wsd-si">{</span><span class="wsd-n">height</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">100</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-o">.</span><span class="wsd-n">append</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">path</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">stroke</span><span class="wsd-o">=</span><span class="wsd-n">color</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">stroke_width</span><span class="wsd-o">=</span><span class="wsd-n">w</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">d</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-s1">M </span><span class="wsd-si">{</span><span class="wsd-p">(</span><span class="wsd-n">x0</span><span class="wsd-w"> </span><span class="wsd-o">+</span><span class="wsd-w"> </span><span class="wsd-n">w</span><span class="wsd-o">/</span><span class="wsd-mi">2</span><span class="wsd-p">)</span><span class="wsd-o">*</span><span class="wsd-n">bar_width</span><span class="wsd-si">}</span><span class="wsd-s1"> 0 l 0 </span><span class="wsd-si">{</span><span class="wsd-n">height</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">97</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">101</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">98</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">text</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">102</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-n">text</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">99</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-o">.</span><span class="wsd-n">append</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">text</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">children</span><span class="wsd-o">=</span><span class="wsd-p">[</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">data</span><span class="wsd-si">:</span><span class="wsd-s1">07x</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">103</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">tags</span><span class="wsd-o">.</span><span class="wsd-n">append</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-p">(</span><span class="wsd-s1">'</span><span class="wsd-s1">text</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">children</span><span class="wsd-o">=</span><span class="wsd-p">[</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">data</span><span class="wsd-si">:</span><span class="wsd-s1">07x</span><span class="wsd-si">}</span><span class="wsd-s1">'</span><span class="wsd-p">]</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">100</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-o">=</span><span class="wsd-n">width</span><span class="wsd-o">/</span><span class="wsd-mi">2</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">y</span><span class="wsd-o">=</span><span class="wsd-n">height</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-mf">0.5</span><span class="wsd-o">*</span><span class="wsd-n">font_size</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">104</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">x</span><span class="wsd-o">=</span><span class="wsd-n">width</span><span class="wsd-o">/</span><span class="wsd-mi">2</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">y</span><span class="wsd-o">=</span><span class="wsd-n">height</span><span class="n"> </span><span class="wsd-o">+</span><span class="n"> </span><span class="wsd-mf">0.5</span><span class="wsd-o">*</span><span class="wsd-n">font_size</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">101</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">font_family</span><span class="wsd-o">=</span><span class="wsd-n">font</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">font_size</span><span class="wsd-si">:</span><span class="wsd-s1">.3f</span><span class="wsd-si">}</span><span class="wsd-s1">px</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">105</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">font_family</span><span class="wsd-o">=</span><span class="wsd-n">font</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">font_size</span><span class="wsd-o">=</span><span class="wsd-sa">f</span><span class="wsd-s1">'</span><span class="wsd-si">{</span><span class="wsd-n">font_size</span><span class="wsd-si">:</span><span class="wsd-s1">.3f</span><span class="wsd-si">}</span><span class="wsd-s1">px</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">102</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">text_anchor</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">middle</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">dominant_baseline</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">hanging</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">106</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">text_anchor</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">middle</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">dominant_baseline</span><span class="wsd-o">=</span><span class="wsd-s1">'</span><span class="wsd-s1">hanging</span><span class="wsd-s1">'</span><span class="wsd-p">,</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">103</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">fill</span><span class="wsd-o">=</span><span class="wsd-n">text_color</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">107</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">fill</span><span class="wsd-o">=</span><span class="wsd-n">text_color</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">104</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">108</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
</div>
|
||||
<span class="wsd-lineno wsd-left">105</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">outfile</span><span class="wsd-o">.</span><span class="wsd-n">write</span><span class="wsd-p">(</span><span class="wsd-nb">str</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-o">.</span><span class="wsd-n">setup_svg</span><span class="wsd-p">(</span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-o">=</span><span class="wsd-p">(</span><span class="wsd-p">(</span><span class="wsd-mi">0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mi">0</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">width</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">total_height</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-o">=</span><span class="wsd-n">margin</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">109</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">outfile</span><span class="wsd-o">.</span><span class="wsd-n">write</span><span class="wsd-p">(</span><span class="wsd-nb">str</span><span class="wsd-p">(</span><span class="wsd-n">Tag</span><span class="wsd-o">.</span><span class="wsd-n">setup_svg</span><span class="wsd-p">(</span><span class="wsd-n">tags</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">bounds</span><span class="wsd-o">=</span><span class="wsd-p">(</span><span class="wsd-p">(</span><span class="wsd-mi">0</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-mi">0</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-p">(</span><span class="wsd-n">width</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">total_height</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-p">,</span><span class="n"> </span><span class="wsd-n">margin</span><span class="wsd-o">=</span><span class="wsd-n">margin</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">106</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">110</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">107</span><span class="wsd-line wsd-left"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">111</span><span class="wsd-line wsd-right"><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">108</span><span class="wsd-line wsd-left"><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-vm">__name__</span><span class="n"> </span><span class="wsd-o">==</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">__main__</span><span class="wsd-s1">'</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">112</span><span class="wsd-line wsd-right"><span class="wsd-k">if</span><span class="n"> </span><span class="wsd-vm">__name__</span><span class="n"> </span><span class="wsd-o">==</span><span class="n"> </span><span class="wsd-s1">'</span><span class="wsd-s1">__main__</span><span class="wsd-s1">'</span><span class="wsd-p">:</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-left">109</span><span class="wsd-line wsd-left"><span class="n"> </span><span class="wsd-n">cli</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
<span class="wsd-lineno wsd-right">113</span><span class="wsd-line wsd-right"><span class="n"> </span><span class="wsd-n">cli</span><span class="wsd-p">(</span><span class="wsd-p">)</span><span class="wsd-w"></span></span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue