Mercurial > parpg-core
comparison src/parpg/common/utils.py @ 0:1fd2201f5c36
Initial commit of parpg-core.
author | M. George Hansen <technopolitica@gmail.com> |
---|---|
date | Sat, 14 May 2011 01:12:35 -0700 |
parents | |
children | d60f1dab8469 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1fd2201f5c36 |
---|---|
1 # This program is free software: you can redistribute it and/or modify | |
2 # it under the terms of the GNU General Public License as published by | |
3 # the Free Software Foundation, either version 3 of the License, or | |
4 # (at your option) any later version. | |
5 | |
6 # This program is distributed in the hope that it will be useful, | |
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
9 # GNU General Public License for more details. | |
10 | |
11 # You should have received a copy of the GNU General Public License | |
12 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
13 | |
14 # Miscellaneous game functions | |
15 | |
16 import os, sys, fnmatch | |
17 from textwrap import dedent | |
18 | |
19 def addPaths (*paths): | |
20 """Adds a list of paths to sys.path. Paths are expected to use forward | |
21 slashes, for example '../../engine/extensions'. Slashes are converted | |
22 to the OS-specific equivalent. | |
23 @type paths: ??? | |
24 @param paths: Paths to files? | |
25 @return: None""" | |
26 for p in paths: | |
27 if not p in sys.path: | |
28 sys.path.append(os.path.sep.join(p.split('/'))) | |
29 | |
30 def parseBool(value): | |
31 """Parses a string to get a boolean value""" | |
32 if (value.isdigit()): | |
33 return bool(int(value)) | |
34 elif (value.isalpha): | |
35 return value.lower()[0] == "t" | |
36 return False | |
37 | |
38 def locateFiles(pattern, root=os.curdir): | |
39 """Locate all files matching supplied filename pattern in and below | |
40 supplied root directory.""" | |
41 for path, _, files in os.walk(os.path.abspath(root)): | |
42 for filename in fnmatch.filter(files, pattern): | |
43 yield os.path.join(path, filename) | |
44 | |
45 def dedent_chomp(string): | |
46 """Remove common leading whitespace and chomp each non-blank line.""" | |
47 dedented_string = dedent(string).strip() | |
48 lines = dedented_string.splitlines() | |
49 formatted_lines = [] | |
50 for index in range(len(lines)): | |
51 line = lines[index] | |
52 if index == len(lines) - 1: | |
53 # Don't do anything to the last line. | |
54 pass | |
55 elif not line or line.isspace(): | |
56 line = '\n\n' | |
57 else: | |
58 line = ''.join([line, ' ']) | |
59 formatted_lines.append(line) | |
60 result = ''.join(formatted_lines) | |
61 return result |