X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Fconfig.py;h=b17a0e2f46734a9a91cb28c2d1d580bffcfe2de1;hp=67dfc91fc6a6f9f0071594882cd527796b645476;hb=422dd3858dacc83de5e9d053140341b62a44012b;hpb=2e73187a7ba3f38ac2cbdbe8a21dfec52f520dcc diff --git a/rainbowstream/config.py b/rainbowstream/config.py index 67dfc91..b17a0e2 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -1,52 +1,62 @@ -from .colors import * import json +import re import os import os.path -# 'search': max search record -SEARCH_MAX_RECORD = 5 -# 'home': default number of home's tweets -HOME_TWEET_NUM = 5 -# 'allrt': default number of retweets -RETWEETS_SHOW_NUM = 5 -# 'inbox','sent': default number of direct message -MESSAGES_DISPLAY = 5 -# 'trend': max trending topics -TREND_MAX = 10 -# 'switch': Filter and Ignore list ex: ['@fat','@mdo'] -ONLY_LIST = [] -IGNORE_LIST = [] - -# Autocomplete history file name -HISTORY_FILENAME = 'completer.hist' - -USER_DOMAIN = 'userstream.twitter.com' -PUBLIC_DOMAIN = 'stream.twitter.com' -SITE_DOMAIN = 'sitestream.twitter.com' -DOMAIN = USER_DOMAIN - -# Image config -IMAGE_SHIFT = 10 -IMAGE_MAX_HEIGHT = 40 - -# Load colorset -default_colorset = 'colorset/default.json' +# Regular expression for comments +comment_re = re.compile( + '(^)?[^\S\n]*/(?:\*(.*?)\*/[^\S\n]*|/[^\n]*)($)?', + re.DOTALL | re.MULTILINE +) + + +def load_config(filepath): + """ + Load config from filepath + """ + with open(filepath) as f: + content = ''.join(f.readlines()) + match = comment_re.search(content) + while match: + content = content[:match.start()] + content[match.end():] + match = comment_re.search(content) + return json.loads(content) + +# Config dictionary +c = {} +# Load default +default_config = os.path.dirname(__file__) + '/colorset/default.json' +data = load_config(default_config) +for d in data: + c[d] = data[d] +c['theme'] = 'default' +# Load init if exist try: - if os.path.exists(default_colorset): - data = json.load(open(default_colorset)) - for d in data: - locals()[d] = local()[data[d]] + path = os.path.dirname(__file__) + '/colorset/init' + f = open(path) + lines = f.readlines() + if len(lines) > 1: + raise Exception('More than 1 default theme') + theme_name = lines[0].strip() + default_config = os.path.dirname( + __file__) + '/colorset/' + theme_name + '.json' + data = load_config(default_config) + for d in data: + c[d] = data[d] + c['theme'] = theme_name + f.close() except: pass - -# Load json config -rainbow_config = os.environ.get('HOME', os.environ.get('USERPROFILE','')) + os.sep + '.rainbow_config.json' +# Load user's colorset +rainbow_config = os.environ.get( + 'HOME', + os.environ.get( + 'USERPROFILE', + '')) + os.sep + '.rainbow_config.json' try: - if os.path.exists(rainbow_config): - data = json.load(open(rainbow_config)) - for d in data: - locals()[d] = local()[data[d]] + data = load_config(rainbow_config) + for d in data: + c[d] = data[d] + c['theme'] = 'custom' except: pass - -