1
0
mirror of https://github.com/nvbn/thefuck.git synced 2024-10-05 18:31:10 +01: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
def test_rules_list():
assert conf.RulesList(['bash', 'lisp']) == ['bash', 'lisp']
assert conf.RulesList(['bash', 'lisp']) == conf.RulesList(['bash', 'lisp'])
assert Rule('lisp', None, None, False) in conf.RulesList(['lisp'])
assert Rule('bash', None, None, False) not in conf.RulesList(['lisp'])
def test_rules_names_list():
assert conf.RulesNamesList(['bash', 'lisp']) == ['bash', 'lisp']
assert conf.RulesNamesList(['bash', 'lisp']) == conf.RulesNamesList(['bash', 'lisp'])
assert Rule('lisp', None, None, False) in conf.RulesNamesList(['lisp'])
assert Rule('bash', None, None, False) not in conf.RulesNamesList(['lisp'])
def test_default():

View File

@ -32,7 +32,7 @@ def test_get_rules():
main.Rule('lisp', 'lisp', 'lisp', True)]
assert list(main.get_rules(
Path('~'),
Mock(rules=conf.RulesList(['bash'])))) \
Mock(rules=conf.RulesNamesList(['bash'])))) \
== [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
class RulesList(object):
class RulesNamesList(list):
"""Wrapper a top of list for string rules names."""
def __init__(self, rules):
self.rules = rules
def __contains__(self, item):
return item.name in self.rules
def __getattr__(self, item):
return getattr(self.rules, item)
def __eq__(self, other):
return self.rules == other
return super(RulesNamesList, self).__contains__(item.name)
class _DefaultRules(RulesList):
class _DefaultRulesNames(RulesNamesList):
def __add__(self, items):
return _DefaultRules(self.rules + items)
return _DefaultRulesNames(list(self) + items)
def __contains__(self, item):
return item.enabled_by_default or \
super(_DefaultRules, self).__contains__(item)
super(_DefaultRulesNames, self).__contains__(item)
def __eq__(self, other):
if isinstance(other, _DefaultRules):
return self.rules == other.rules
if isinstance(other, _DefaultRulesNames):
return super(_DefaultRulesNames, self).__eq__(other)
else:
return False
DEFAULT = _DefaultRules([])
DEFAULT = _DefaultRulesNames([])
class Settings(object):
@ -118,7 +109,7 @@ def get_settings(user_dir):
sys.exc_info(),
Settings(conf))
if not isinstance(conf['rules'], RulesList):
conf['rules'] = RulesList(conf['rules'])
if not isinstance(conf['rules'], RulesNamesList):
conf['rules'] = RulesNamesList(conf['rules'])
return Settings(conf)