1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-02-07 13:41:21 +00:00

Inherit RulesNamesList from list

This commit is contained in:
nvbn 2015-04-22 22:36:18 +02:00
parent 0553d57ec1
commit 20b6c4c160
3 changed files with 16 additions and 25 deletions

View File

@ -3,11 +3,11 @@ from thefuck.main import Rule
from thefuck import conf from thefuck import conf
def test_rules_list(): def test_rules_names_list():
assert conf.RulesList(['bash', 'lisp']) == ['bash', 'lisp'] assert conf.RulesNamesList(['bash', 'lisp']) == ['bash', 'lisp']
assert conf.RulesList(['bash', 'lisp']) == conf.RulesList(['bash', 'lisp']) assert conf.RulesNamesList(['bash', 'lisp']) == conf.RulesNamesList(['bash', 'lisp'])
assert Rule('lisp', None, None, False) in conf.RulesList(['lisp']) assert Rule('lisp', None, None, False) in conf.RulesNamesList(['lisp'])
assert Rule('bash', None, None, False) not in conf.RulesList(['lisp']) assert Rule('bash', None, None, False) not in conf.RulesNamesList(['lisp'])
def test_default(): def test_default():

View File

@ -32,7 +32,7 @@ def test_get_rules():
main.Rule('lisp', 'lisp', 'lisp', True)] main.Rule('lisp', 'lisp', 'lisp', True)]
assert list(main.get_rules( assert list(main.get_rules(
Path('~'), Path('~'),
Mock(rules=conf.RulesList(['bash'])))) \ Mock(rules=conf.RulesNamesList(['bash'])))) \
== [main.Rule('bash', 'bash', 'bash', True), == [main.Rule('bash', 'bash', 'bash', True),
main.Rule('bash', 'bash', 'bash', True)] main.Rule('bash', 'bash', 'bash', True)]

View File

@ -6,38 +6,29 @@ from six import text_type
from . import logs from . import logs
class RulesList(object): class RulesNamesList(list):
"""Wrapper a top of list for string rules names.""" """Wrapper a top of list for string rules names."""
def __init__(self, rules):
self.rules = rules
def __contains__(self, item): def __contains__(self, item):
return item.name in self.rules return super(RulesNamesList, self).__contains__(item.name)
def __getattr__(self, item):
return getattr(self.rules, item)
def __eq__(self, other):
return self.rules == other
class _DefaultRules(RulesList): class _DefaultRulesNames(RulesNamesList):
def __add__(self, items): def __add__(self, items):
return _DefaultRules(self.rules + items) return _DefaultRulesNames(list(self) + items)
def __contains__(self, item): def __contains__(self, item):
return item.enabled_by_default or \ return item.enabled_by_default or \
super(_DefaultRules, self).__contains__(item) super(_DefaultRulesNames, self).__contains__(item)
def __eq__(self, other): def __eq__(self, other):
if isinstance(other, _DefaultRules): if isinstance(other, _DefaultRulesNames):
return self.rules == other.rules return super(_DefaultRulesNames, self).__eq__(other)
else: else:
return False return False
DEFAULT = _DefaultRules([]) DEFAULT = _DefaultRulesNames([])
class Settings(object): class Settings(object):
@ -118,7 +109,7 @@ def get_settings(user_dir):
sys.exc_info(), sys.exc_info(),
Settings(conf)) Settings(conf))
if not isinstance(conf['rules'], RulesList): if not isinstance(conf['rules'], RulesNamesList):
conf['rules'] = RulesList(conf['rules']) conf['rules'] = RulesNamesList(conf['rules'])
return Settings(conf) return Settings(conf)