~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to widelandslib/conf.py

  • Committer: Timo Paulssen
  • Date: 2010-11-01 01:06:11 UTC
  • mto: This revision was merged to the branch mainline in revision 227.
  • Revision ID: timonator@perpetuum-immobile.de-20101101010611-ve6y7773nlofd9dh
moved over widelandslib from lp:~tmk/widelands/help-gen-ng with some fixes,
changed update_help to use widelandslib.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python -tt
 
2
# encoding: utf-8
 
3
 
 
4
from ConfigParser import *
 
5
import cStringIO
 
6
 
 
7
__all__ = [
 
8
    "WidelandsConfigParser"
 
9
]
 
10
 
 
11
def clear_string(s):
 
12
    idx = s.rfind('#')
 
13
    if idx != -1:
 
14
        s = s[:idx]
 
15
 
 
16
    s = s.strip("'\" _")
 
17
    return s
 
18
 
 
19
class WidelandsConfigParser(SafeConfigParser):
 
20
    def __init__(self, fn):
 
21
        """
 
22
        Basically we only add one option: getstring which removes
 
23
        ticks and '_' (the translation marker)
 
24
        """
 
25
        SafeConfigParser.__init__(self)
 
26
 
 
27
        string = ""
 
28
        try:
 
29
            string = fn.read()
 
30
        except AttributeError:
 
31
            string = open(fn, "r").read()
 
32
 
 
33
        try:
 
34
            self.readfp(cStringIO.StringIO(string))
 
35
        except MissingSectionHeaderError:
 
36
            string = '[global]\n' + string
 
37
            self.readfp(cStringIO.StringIO(string))
 
38
 
 
39
 
 
40
    def items(self, *args, **kwargs):
 
41
        return dict(
 
42
            (k,clear_string(v)) for (k,v) in
 
43
               SafeConfigParser.items(self, *args, **kwargs)
 
44
        ).items()
 
45
 
 
46
    def getstring( self, s, opt, default = None):
 
47
        try:
 
48
            return clear_string(self.get(s,opt))
 
49
        except NoOptionError:
 
50
            if default is not None:
 
51
                return default
 
52
            raise
 
53
 
 
54
    def getint( self, s, opt, default = None):
 
55
        try:
 
56
            return SafeConfigParser.getint(self,s,opt)
 
57
        except NoOptionError:
 
58
            if default is not None:
 
59
                return default
 
60
            raise
 
61
        except ValueError:
 
62
            return int(SafeConfigParser.get(self,s,opt)[1:-1])
 
63
 
 
64
    def getboolean( self, s, opt, default = None):
 
65
        try:
 
66
            return SafeConfigParser.getboolean(self,s,opt)
 
67
        except NoOptionError:
 
68
            if default is not None:
 
69
                return default
 
70
            raise
 
71