~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/util.py

  • Committer: Michael Hudson
  • Date: 2007-07-04 11:44:22 UTC
  • mfrom: (128.1.39 testing)
  • Revision ID: michael.hudson@canonical.com-20070704114422-77n0yamvzpd3ddhi
merge in a lot of changes from my development branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
181
181
# only do this if unicode turns out to be a problem
182
182
#_BADCHARS_RE = re.compile(ur'[\u007f-\uffff]')
183
183
 
 
184
# FIXME: get rid of this method; use fixed_width() and avoid XML().
184
185
def html_clean(s):
185
186
    """
186
187
    clean up a string for html display.  expand any tabs, encode any html
188
189
    in displaying monospace text.
189
190
    """
190
191
    s = cgi.escape(s.expandtabs())
191
 
#    s = _BADCHARS_RE.sub(lambda x: '&#%d;' % (ord(x.group(0)),), s)
192
192
    s = s.replace(' ', ' ')
193
193
    return s
194
194
 
195
195
 
 
196
 
 
197
NONBREAKING_SPACE = u'\N{NO-BREAK SPACE}'
 
198
 
 
199
def fixed_width(s):
 
200
    """
 
201
    expand tabs and turn spaces into "non-breaking spaces", so browsers won't
 
202
    chop up the string.
 
203
    """
 
204
    if not isinstance(s, unicode):
 
205
        # this kinda sucks.  file contents are just binary data, and no
 
206
        # encoding metadata is stored, so we need to guess.  this is probably
 
207
        # okay for most code, but for people using things like KOI-8, this
 
208
        # will display gibberish.  we have no way of detecting the correct
 
209
        # encoding to use.
 
210
        try:
 
211
            s = s.decode('utf-8')
 
212
        except UnicodeDecodeError:
 
213
            s = s.decode('iso-8859-15')
 
214
    return s.expandtabs().replace(' ', NONBREAKING_SPACE)
 
215
 
 
216
 
196
217
def fake_permissions(kind, executable):
197
218
    # fake up unix-style permissions given only a "kind" and executable bit
198
219
    if kind == 'directory':