X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Fconfig.py;h=de15655cfe3c0890334a32cb79d46c810bb9ee07;hp=6afffd5f519526b705d9aef6f3313b0e2165d5e4;hb=fa6e062d577aaf246757ca266f241ce83db252ad;hpb=6fa09c146e4ceb4635c487d6949455efdbc8a947 diff --git a/rainbowstream/config.py b/rainbowstream/config.py index 6afffd5..de15655 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -1,78 +1,49 @@ -from .colors import * - -# '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_SHIFT = 10 -IMAGE_MAX_HEIGHT = 40 - -# Following 16 basic colors is supported: -# default -# black -# red -# green -# yellow -# blue -# magenta -# cyan -# grey -# light_red -# light_green -# light_yellow -# light_blue -# light_magenta -# light_cyan -# white - -TWEET = { - 'nick' : grey, - 'clock' : grey, - 'id' : grey, - 'favourite' : light_green, - 'rt' : grey, - 'link' : light_cyan, - 'keyword' : on_light_yellow, -} - -MESSAGE = { - 'sender' : grey, - 'recipient' : grey, - 'to' : light_magenta, - 'clock' : grey, - 'id' : grey, -} - -PROFILE = { - 'statuses_count' : light_green, - 'friends_count' : light_green, - 'followers_count' : light_green, - 'nick' : grey, - 'profile_image_url' : light_cyan, - 'description' : light_yellow, - 'location' : light_magenta, - 'url' : light_cyan, - 'clock' : white, -} - -TREND = { - 'url': light_cyan -} \ No newline at end of file +import json +import re +import os +import os.path +from collections import OrderedDict + +# 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, object_pairs_hook=OrderedDict) + +# Config dictionary +c = {} + +# Load user's config +rainbow_config = os.environ.get( + 'HOME', + os.environ.get( + 'USERPROFILE', + '')) + os.sep + '.rainbow_config.json' +try: + data = load_config(rainbow_config) + for d in data: + c[d] = data[d] +except: + pass + +# Load default theme +theme_file = os.path.dirname( + __file__) + '/colorset/' + c['THEME'] + '.json' +try: + data = load_config(theme_file) + for d in data: + c[d] = data[d] +except: + pass