diff options
author | Hamilton Kibbe <hamilton.kibbe@gmail.com> | 2015-10-10 16:51:21 -0400 |
---|---|---|
committer | Hamilton Kibbe <hamilton.kibbe@gmail.com> | 2015-10-10 16:51:21 -0400 |
commit | dd63b169f177389602e17bc6ced53bd0f1ba0de3 (patch) | |
tree | 12be6d968c97be78c3910b2c84b048211e88c7e2 /gerber/common.py | |
parent | b81c9d4bf96845ced3495eb158ec3a3c9e4dce3d (diff) | |
download | gerbonara-dd63b169f177389602e17bc6ced53bd0f1ba0de3.tar.gz gerbonara-dd63b169f177389602e17bc6ced53bd0f1ba0de3.tar.bz2 gerbonara-dd63b169f177389602e17bc6ced53bd0f1ba0de3.zip |
Allow files to be read from strings per #37
Adds a loads() method to the top level module which generates a GerberFile or ExcellonFile from a string
Diffstat (limited to 'gerber/common.py')
-rw-r--r-- | gerber/common.py | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/gerber/common.py b/gerber/common.py index 78da2cd..50ba728 100644 --- a/gerber/common.py +++ b/gerber/common.py @@ -15,6 +15,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +from . import rs274x +from . import excellon +from .utils import detect_file_format + def read(filename): """ Read a gerber or excellon file and return a representative object. @@ -30,10 +34,9 @@ def read(filename): CncFile object representing the file, either GerberFile or ExcellonFile. Returns None if file is not an Excellon or Gerber file. """ - from . import rs274x - from . import excellon - from .utils import detect_file_format - fmt = detect_file_format(filename) + with open(filename, 'r') as f: + data = f.read() + fmt = detect_file_format(data) if fmt == 'rs274x': return rs274x.read(filename) elif fmt == 'excellon': @@ -41,3 +44,28 @@ def read(filename): else: raise TypeError('Unable to detect file format') +def loads(data): + """ 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. + + Returns + ------- + file : CncFile subclass + CncFile object representing the file, either GerberFile or + ExcellonFile. Returns None if file is not an Excellon or Gerber file. + """ + + fmt = detect_file_format(data) + if fmt == 'rs274x': + return rs274x.loads(data) + elif fmt == 'excellon': + return excellon.loads(data) + else: + raise TypeError('Unable to detect file format') + + |