- commit
- 52af8bf2a1107f7f487de4d45005d2c7fa447ddf
- parent
- 10f50c69be5569655ed9adf4bd1a73990f61776f
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2014-10-07 18:03
mv AttrString to base
Diffstat
| D | dirtywords/attr_string.py | 40 | ---------------------------------------- |
| M | dirtywords/base.py | 44 | ++++++++++++++++++++++++++++++++++++++++++++ |
| M | dirtywords/curses_dirtywords.py | 3 | +-- |
| M | dirtywords/example.py | 2 | +- |
| M | dirtywords/pygame_dirtywords.py | 3 | +-- |
5 files changed, 47 insertions, 45 deletions
diff --git a/dirtywords/attr_string.py b/dirtywords/attr_string.py
@@ -1,40 +0,0 @@1 -1 class AttrString(unicode):2 -1 def __new__(cls, s, **kwargs):3 -1 self = super(AttrString, cls).__new__(cls, s)4 -1 self.set_attrs(s, **kwargs)5 -1 return self6 -17 -1 def set_attrs(self, reference='', **kwargs):8 -1 defaults = {9 -1 'bold': False,10 -1 'italic': False,11 -1 'underline': False,12 -1 'fg_color': (255, 255, 255),13 -1 'bg_color': (0, 0, 0),14 -1 }15 -116 -1 for attr in defaults.iterkeys():17 -1 if attr in kwargs:18 -1 value = kwargs[attr]19 -1 elif isinstance(reference, AttrString):20 -1 value = getattr(reference, attr)21 -1 else:22 -1 value = defaults[attr]23 -124 -1 setattr(self, attr, value)25 -126 -1 def get_attrs(self):27 -1 return {28 -1 'bold': self.bold,29 -1 'italic': self.italic,30 -1 'underline': self.underline,31 -1 'fg_color': self.fg_color,32 -1 'bg_color': self.bg_color,33 -1 }34 -135 -1 def __iter__(self):36 -1 return (self[i] for i in range(len(self)))37 -138 -1 def __getitem__(self, i):39 -1 ch = unicode.__getitem__(self, i)40 -1 return AttrString(ch, **self.get_attrs())
diff --git a/dirtywords/base.py b/dirtywords/base.py
@@ -1,6 +1,50 @@ 1 1 from time import time 2 2 3 3 -1 4 class AttrString(unicode): -1 5 """Unicode string with additional attributes.""" -1 6 -1 7 def __new__(cls, s, **kwargs): -1 8 self = super(AttrString, cls).__new__(cls, s) -1 9 self.set_attrs(s, **kwargs) -1 10 return self -1 11 -1 12 def set_attrs(self, reference='', **kwargs): -1 13 defaults = { -1 14 'bold': False, -1 15 'italic': False, -1 16 'underline': False, -1 17 'fg_color': (255, 255, 255), -1 18 'bg_color': (0, 0, 0), -1 19 } -1 20 -1 21 for attr in defaults.iterkeys(): -1 22 if attr in kwargs: -1 23 value = kwargs[attr] -1 24 elif isinstance(reference, AttrString): -1 25 value = getattr(reference, attr) -1 26 else: -1 27 value = defaults[attr] -1 28 -1 29 setattr(self, attr, value) -1 30 -1 31 def get_attrs(self): -1 32 return { -1 33 'bold': self.bold, -1 34 'italic': self.italic, -1 35 'underline': self.underline, -1 36 'fg_color': self.fg_color, -1 37 'bg_color': self.bg_color, -1 38 } -1 39 -1 40 def __iter__(self): -1 41 return (self[i] for i in range(len(self))) -1 42 -1 43 def __getitem__(self, i): -1 44 ch = unicode.__getitem__(self, i) -1 45 return AttrString(ch, **self.get_attrs()) -1 46 -1 47 4 48 class BaseScreen(object): 5 49 def __init__(self, height, width): 6 50 """Initialize screen."""
diff --git a/dirtywords/curses_dirtywords.py b/dirtywords/curses_dirtywords.py
@@ -4,7 +4,6 @@ except ImportError: 4 4 import curses 5 5 6 6 import base7 -1 from attr_string import AttrString8 7 9 8 10 9 class Screen(base.Screen): @@ -57,7 +56,7 @@ class Screen(base.Screen): 57 56 58 57 def putstr(self, y, x, s): 59 58 for i, ch in enumerate(s):60 -1 ch = AttrString(ch)-1 59 ch = base.AttrString(ch) 61 60 if ch.bold: 62 61 self.curses_window.attron(curses.A_BOLD) 63 62 if ch.underline:
diff --git a/dirtywords/example.py b/dirtywords/example.py
@@ -9,7 +9,7 @@ except ImportError: 9 9 except ImportError: 10 10 from stupid_dirtywords import Screen 11 1112 -1 from attr_string import AttrString-1 12 from base import AttrString 13 13 14 14 15 15 class Player(object):
diff --git a/dirtywords/pygame_dirtywords.py b/dirtywords/pygame_dirtywords.py
@@ -2,7 +2,6 @@ import pygame 2 2 from pygame.locals import KEYDOWN, KEYUP 3 3 4 4 import base5 -1 from attr_string import AttrString6 5 7 6 8 7 class Screen(base.Screen): @@ -40,7 +39,7 @@ class Screen(base.Screen): 40 39 } 41 40 42 41 def _render_ch(self, ch):43 -1 ch = AttrString(ch)-1 42 ch = base.AttrString(ch) 44 43 self.font.set_bold(ch.bold) 45 44 self.font.set_italic(ch.italic) 46 45 self.font.set_underline(ch.underline)