dirtywords

portable text interface framework  https://pypi.python.org/pypi/dirtywords
git clone https://git.ce9e.org/dirtywords.git

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 self
    6    -1 
    7    -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    -1 
   16    -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    -1 
   24    -1             setattr(self, attr, value)
   25    -1 
   26    -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    -1 
   35    -1     def __iter__(self):
   36    -1         return (self[i] for i in range(len(self)))
   37    -1 
   38    -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 base
    7    -1 from attr_string import AttrString
    8     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    11 
   12    -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 base
    5    -1 from attr_string import AttrString
    6     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)