summaryrefslogtreecommitdiff
path: root/gerber
diff options
context:
space:
mode:
authorPaulo Henrique Silva <ph.silva@gmail.com>2019-11-25 11:30:53 -0300
committerGitHub <noreply@github.com>2019-11-25 11:30:53 -0300
commit2e32abef6ad46e5604cbd6f6086d857b8bc4f7be (patch)
tree6ca55a4d19f19f2db86324309a8b8abc1c1f8e37 /gerber
parent2601ae8eab8d7be807bdbed264cd943e441a8da0 (diff)
parentc08457f7addf2001f07fac5d30091b33b3ddcb0c (diff)
downloadgerbonara-2e32abef6ad46e5604cbd6f6086d857b8bc4f7be.tar.gz
gerbonara-2e32abef6ad46e5604cbd6f6086d857b8bc4f7be.tar.bz2
gerbonara-2e32abef6ad46e5604cbd6f6086d857b8bc4f7be.zip
Merge pull request #104 from MarinMikael/allow_float_fmt_and_fix_3.7
Allow float fmt and fix 3.7
Diffstat (limited to 'gerber')
-rw-r--r--gerber/excellon_statements.py11
-rw-r--r--gerber/utils.py4
2 files changed, 10 insertions, 5 deletions
diff --git a/gerber/excellon_statements.py b/gerber/excellon_statements.py
index bcf35e4..2c50ef9 100644
--- a/gerber/excellon_statements.py
+++ b/gerber/excellon_statements.py
@@ -23,6 +23,7 @@ Excellon Statements
import re
import uuid
+import itertools
from .utils import (parse_gerber_value, write_gerber_value, decimal_string,
inch, metric)
@@ -151,8 +152,7 @@ class ExcellonTool(ExcellonStatement):
tool : Tool
An ExcellonTool representing the tool defined in `line`
"""
- commands = re.split('([BCFHSTZ])', line)[1:]
- commands = [(command, value) for command, value in pairwise(commands)]
+ commands = pairwise(re.split('([BCFHSTZ])', line)[1:])
args = {}
args['id'] = id
nformat = settings.format
@@ -973,6 +973,7 @@ def pairwise(iterator):
e.g. [1, 2, 3, 4, 5, 6] ==> [(1, 2), (3, 4), (5, 6)]
"""
- itr = iter(iterator)
- while True:
- yield tuple([next(itr) for i in range(2)])
+ a, b = itertools.tee(iterator)
+ itr = zip(itertools.islice(a, 0, None, 2), itertools.islice(b, 1, None, 2))
+ for elem in itr:
+ yield elem
diff --git a/gerber/utils.py b/gerber/utils.py
index 817a36e..3d39df9 100644
--- a/gerber/utils.py
+++ b/gerber/utils.py
@@ -123,6 +123,10 @@ def write_gerber_value(value, format=(2, 5), zero_suppression='trailing'):
value : string
The specified value as a Gerber/Excellon-formatted string.
"""
+
+ if format[0] == float:
+ return "%f" %value
+
# Format precision
integer_digits, decimal_digits = format
MAX_DIGITS = integer_digits + decimal_digits