From b2b05cb81cff8da74b4a2ac47e30fe23b904db14 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 11 Mar 2013 22:22:18 +0400 Subject: [PATCH] Removed underscore_to_camelcase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No need to bother both developers (that need to create class names compatible with file name, which is not obvious if not looking into main Powerline class) and computer (that needs to recompute class name each time) if it is possible to bother only developers (or only computer, but this contributes to higher startup times). About not obvious: when you look into zsh_prompt.py and see only ZshPromptRenderer name you only think that powerline upstream is following strict code style. You don’t think there is a technical reason for such naming, like you don’t think there is technical reason for having blank lines. When you look into zsh_prompt.py and see `renderer = ZshPromptRenderer` it is obvious that there is technical reason for writing code this way because new variable is never used in the module itself. --- powerline/__init__.py | 8 +++----- powerline/lib/__init__.py | 5 ----- powerline/renderers/bash_prompt.py | 3 +++ powerline/renderers/ipython.py | 3 +++ powerline/renderers/pango_markup.py | 3 +++ powerline/renderers/shell.py | 3 +++ powerline/renderers/tmux.py | 3 +++ powerline/renderers/vim.py | 4 ++++ powerline/renderers/zsh_prompt.py | 3 +++ tests/test_configuration.py | 3 +-- tests/test_lib.py | 6 +----- 11 files changed, 27 insertions(+), 17 deletions(-) diff --git a/powerline/__init__.py b/powerline/__init__.py index 752d845a..3ef4c554 100644 --- a/powerline/__init__.py +++ b/powerline/__init__.py @@ -6,19 +6,18 @@ import os import sys from powerline.colorscheme import Colorscheme -from powerline.lib import underscore_to_camelcase def open_file(path): return open(path, 'r') -def load_json_config(search_paths, config_file, load=json.load, open=open_file): +def load_json_config(search_paths, config_file, load=json.load, open_file=open_file): config_file += '.json' for path in search_paths: config_file_path = os.path.join(path, config_file) if os.path.isfile(config_file_path): - with open(config_file_path) as config_file_fp: + with open_file(config_file_path) as config_file_fp: return load(config_file_fp) raise IOError('Config file not found in search path: {0}'.format(config_file)) @@ -65,9 +64,8 @@ class Powerline(object): # Load and initialize extension renderer renderer_module_name = renderer_module or ext renderer_module_import = 'powerline.renderers.{0}'.format(renderer_module_name) - renderer_class_name = '{0}Renderer'.format(underscore_to_camelcase(renderer_module_name)) try: - Renderer = getattr(__import__(renderer_module_import, fromlist=[renderer_class_name]), renderer_class_name) + Renderer = __import__(renderer_module_import, fromlist=['renderer']).renderer except ImportError as e: sys.stderr.write('Error while importing renderer module: {0}\n'.format(e)) sys.exit(1) diff --git a/powerline/lib/__init__.py b/powerline/lib/__init__.py index 549d7455..fc97407d 100644 --- a/powerline/lib/__init__.py +++ b/powerline/lib/__init__.py @@ -7,11 +7,6 @@ from powerline.lib.humanize_bytes import humanize_bytes # NOQA from powerline.lib.url import urllib_read, urllib_urlencode # NOQA -def underscore_to_camelcase(string): - '''Return a underscore_separated_string as CamelCase.''' - return ''.join(word.capitalize() or '_' for word in string.split('_')) - - def mergedicts(d1, d2): '''Recursively merge two dictionaries. First dictionary is modified in-place. ''' diff --git a/powerline/renderers/bash_prompt.py b/powerline/renderers/bash_prompt.py index b9f911ad..01f42f74 100644 --- a/powerline/renderers/bash_prompt.py +++ b/powerline/renderers/bash_prompt.py @@ -11,3 +11,6 @@ class BashPromptRenderer(ShellRenderer): @staticmethod def escape(string): return string.replace('\\', '\\\\').replace('$', '\\$').replace('`', '\\`') + + +renderer = BashPromptRenderer diff --git a/powerline/renderers/ipython.py b/powerline/renderers/ipython.py index d1e4c7bd..2fa63acd 100644 --- a/powerline/renderers/ipython.py +++ b/powerline/renderers/ipython.py @@ -7,3 +7,6 @@ class IpythonRenderer(ShellRenderer): '''Powerline ipython segment renderer.''' escape_hl_start = '\x01' escape_hl_end = '\x02' + + +renderer = IpythonRenderer diff --git a/powerline/renderers/pango_markup.py b/powerline/renderers/pango_markup.py index 54e78868..f5e85b6a 100644 --- a/powerline/renderers/pango_markup.py +++ b/powerline/renderers/pango_markup.py @@ -29,3 +29,6 @@ class PangoMarkupRenderer(Renderer): if attr & ATTR_UNDERLINE: awesome_attr += ['underline="single"'] return '' + contents + '' + + +renderer = PangoMarkupRenderer diff --git a/powerline/renderers/shell.py b/powerline/renderers/shell.py index e6e82019..40777c46 100644 --- a/powerline/renderers/shell.py +++ b/powerline/renderers/shell.py @@ -65,3 +65,6 @@ class ShellRenderer(Renderer): @staticmethod def escape(string): return string.replace('\\', '\\\\') + + +renderer = ShellRenderer diff --git a/powerline/renderers/tmux.py b/powerline/renderers/tmux.py index 57dd3cd8..34e4329e 100644 --- a/powerline/renderers/tmux.py +++ b/powerline/renderers/tmux.py @@ -39,3 +39,6 @@ class TmuxRenderer(Renderer): else: tmux_attr += ['nounderscore'] return '#[' + ','.join(tmux_attr) + ']' + + +renderer = TmuxRenderer diff --git a/powerline/renderers/vim.py b/powerline/renderers/vim.py index 5099e4dc..13f80d21 100644 --- a/powerline/renderers/vim.py +++ b/powerline/renderers/vim.py @@ -9,6 +9,7 @@ from powerline.theme import Theme import vim + vim_mode = vim_get_func('mode') vim_getwinvar = vim_get_func('getwinvar') vim_setwinvar = vim_get_func('setwinvar') @@ -120,3 +121,6 @@ class VimRenderer(Renderer): attr=','.join(hl_group['attr']), )) return '%#' + self.hl_groups[(fg, bg, attr)]['name'] + '#' + + +renderer = VimRenderer diff --git a/powerline/renderers/zsh_prompt.py b/powerline/renderers/zsh_prompt.py index f66f7359..2e6e5e77 100644 --- a/powerline/renderers/zsh_prompt.py +++ b/powerline/renderers/zsh_prompt.py @@ -11,3 +11,6 @@ class ZshPromptRenderer(ShellRenderer): @staticmethod def escape(string): return string.replace('%', '%%').replace('\\', '\\\\') + + +renderer = ZshPromptRenderer diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 1ae26355..bd5f9e89 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -81,9 +81,8 @@ class TestConfig(TestCase): from powerline.segments import common from imp import reload reload(common) - from powerline.shell import ShellPowerline + from powerline import Powerline with replace_module_attr(common, 'urllib_read', urllib_read): - from powerline import Powerline Powerline(ext='wm', renderer_module='pango_markup').renderer.render() reload(common) diff --git a/tests/test_lib.py b/tests/test_lib.py index e48730d1..5b3e2192 100644 --- a/tests/test_lib.py +++ b/tests/test_lib.py @@ -1,5 +1,5 @@ # vim:fileencoding=utf-8:noet -from powerline.lib import mergedicts, underscore_to_camelcase, add_divider_highlight_group, humanize_bytes +from powerline.lib import mergedicts, add_divider_highlight_group, humanize_bytes from powerline.lib.vcs import guess from subprocess import call, PIPE import os @@ -8,10 +8,6 @@ from tests import TestCase class TestLib(TestCase): - def test_underscore_to_camelcase(self): - self.assertEqual(underscore_to_camelcase('abc_def_ghi'), 'AbcDefGhi') - self.assertEqual(underscore_to_camelcase('abc_def__ghi'), 'AbcDef_Ghi') - def test_mergedicts(self): d = {} mergedicts(d, {'abc': {'def': 'ghi'}})