annotate gamelib/data.py @ 231:857040b211d5

Note why we're disabling a warning.
author Simon Cross <hodgestar@gmail.com>
date Fri, 04 Sep 2009 23:59:28 +0000
parents c0455e6c99f4
children e12d99215b74
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 '''Simple data loader module.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 Loads data files from the "data" directory shipped with a game.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 Enhancing this to handle caching etc. is left as an exercise for the reader.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 '''
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8 import os
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10 data_py = os.path.abspath(os.path.dirname(__file__))
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11 data_dir = os.path.normpath(os.path.join(data_py, '..', 'data'))
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12
89
c0455e6c99f4 Support multiple arguments using os.path.join - better to pass filepath('a', 'b') than filepath('a/b')
David Fraser <davidf@sjsoft.com>
parents: 42
diff changeset
13 def filepath(*filenames):
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14 '''Determine the path to a file in the data directory.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 '''
89
c0455e6c99f4 Support multiple arguments using os.path.join - better to pass filepath('a', 'b') than filepath('a/b')
David Fraser <davidf@sjsoft.com>
parents: 42
diff changeset
16 return os.path.join(data_dir, *filenames)
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18 def load(filename, mode='rb'):
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19 '''Open a file in the data directory.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 "mode" is passed as the second arg to open().
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22 '''
42
498e4732bc1f Auto-convert unix / http path separators to platform appropriate ones -- we should now just be able to use slash as the path separator through-out our own code.
Simon Cross <hodgestar@gmail.com>
parents: 2
diff changeset
23 # convert unix path separator to platform appropriate one
498e4732bc1f Auto-convert unix / http path separators to platform appropriate ones -- we should now just be able to use slash as the path separator through-out our own code.
Simon Cross <hodgestar@gmail.com>
parents: 2
diff changeset
24 filename = os.path.join(*filename.split("/"))
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 return open(os.path.join(data_dir, filename), mode)
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26