Merge fixes from branch 'xorn'
[geda-gaf.git] / xorn / src / gaf / fileformat.py
blob8cf8d491ef0f1ccf29a7bc04a283dd17fe409fed
1 # gaf - Python library for manipulating gEDA files
2 # Copyright (C) 1998-2010 Ales Hvezda
3 # Copyright (C) 1998-2010 gEDA Contributors (see ChangeLog for details)
4 # Copyright (C) 2013-2020 Roland Lutz
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software Foundation,
18 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 ## \namespace gaf.fileformat
21 ## File formats.
23 import os.path
25 FORMAT_SCH, FORMAT_SYM, FORMAT_SCH_XML, FORMAT_SYM_XML = xrange(4)
27 VALID_FORMATS = {
28 'sch': FORMAT_SCH,
29 'sym': FORMAT_SYM,
30 'schxml': FORMAT_SCH_XML,
31 'symxml': FORMAT_SYM_XML
34 ## Raised when the format of a file isn't specified and can't be
35 ## guessed from the file name.
37 class UnknownFormatError(Exception):
38 pass
40 def guess_format(path):
41 basename = os.path.basename(path).lower()
42 if basename.endswith('.sch'):
43 return FORMAT_SCH
44 if basename.endswith('.sym'):
45 return FORMAT_SYM
46 if basename.endswith('.sch.xml'):
47 return FORMAT_SCH_XML
48 if basename.endswith('.sym.xml'):
49 return FORMAT_SYM_XML
50 raise UnknownFormatError