summaryrefslogtreecommitdiff
path: root/gerber/common.py
diff options
context:
space:
mode:
authorHamilton Kibbe <hamilton.kibbe@gmail.com>2016-11-06 14:44:40 -0500
committerHamilton Kibbe <hamilton.kibbe@gmail.com>2016-11-06 14:44:40 -0500
commit422c86bcc684ea94515862b0dd3a39ce0f4bd86f (patch)
treea1efe6504e40083e61dcbe412c243fd8c00628f3 /gerber/common.py
parentede065e6d16e1e4ffe970c8b13945139b3f4bcb2 (diff)
parent22e668c75f24174d2090443ed98e804b3737bd84 (diff)
downloadgerbonara-422c86bcc684ea94515862b0dd3a39ce0f4bd86f.tar.gz
gerbonara-422c86bcc684ea94515862b0dd3a39ce0f4bd86f.tar.bz2
gerbonara-422c86bcc684ea94515862b0dd3a39ce0f4bd86f.zip
Merge upstream changes
Diffstat (limited to 'gerber/common.py')
-rw-r--r--gerber/common.py33
1 files changed, 15 insertions, 18 deletions
diff --git a/gerber/common.py b/gerber/common.py
index cf137dd..f496809 100644
--- a/gerber/common.py
+++ b/gerber/common.py
@@ -33,42 +33,39 @@ def read(filename):
Returns
-------
file : CncFile subclass
- CncFile object representing the file, either GerberFile or
- ExcellonFile. Returns None if file is not an Excellon or Gerber file.
+ CncFile object representing the file, either GerberFile, ExcellonFile,
+ or IPCNetlist. Returns None if file is not of the proper type.
"""
with open(filename, 'rU') as f:
data = f.read()
- fmt = detect_file_format(data)
- if fmt == 'rs274x':
- return rs274x.read(filename)
- elif fmt == 'excellon':
- return excellon.read(filename)
- elif fmt == 'ipc_d_356':
- return ipc356.read(filename)
- else:
- raise ParseError('Unable to detect file format')
+ return loads(data, filename)
-def loads(data):
+def loads(data, filename=None):
""" Read gerber or excellon file contents from a string and return a
representative object.
Parameters
----------
data : string
- gerber or excellon file contents as a string.
+ Source file contents as a string.
+
+ filename : string, optional
+ String containing the filename of the data source.
Returns
-------
file : CncFile subclass
- CncFile object representing the file, either GerberFile or
- ExcellonFile. Returns None if file is not an Excellon or Gerber file.
+ CncFile object representing the data, either GerberFile, ExcellonFile,
+ or IPCNetlist. Returns None if data is not of the proper type.
"""
fmt = detect_file_format(data)
if fmt == 'rs274x':
- return rs274x.loads(data)
+ return rs274x.loads(data, filename=filename)
elif fmt == 'excellon':
- return excellon.loads(data)
+ return excellon.loads(data, filename=filename)
+ elif fmt == 'ipc_d_356':
+ return ipc356.loads(data, filename=filename)
else:
- raise TypeError('Unable to detect file format')
+ raise ParseError('Unable to detect file format')