275
275
# These sets adjust to the current locale - so not same as "[a-z]" ..
276
276
# Must be kidding - no classes for this in the regex engine !?
278
'upper': string.uppercase,
279
'lower': string.lowercase,
280
278
'letters': string.letters
282
camelcase_re = Re(r'[%(upper)s]+[%(lower)s]+[%(upper)s]+\w*$' % _classes)
283
280
twoletter_re = re.compile(r'[%(letters)s]{2}' % _classes)
284
# To be CamelCase, a word needs to start uppercase, followed
285
# by at least one lower case, followed by at least one uppercase.
287
# - CamelCase needs at least 3 characters
288
# - first char needs to be upper case
289
# - remainder of the text needs to be mixed case
291
or not unicode.isalpha(word) \
292
or unicode.islower(word[1:]) \
293
or unicode.islower(word[0]) \
294
or unicode.isupper(word[1:]):
297
# Now do detailed check to exclude e.g. "AAbb"
298
# Remainder needs to split in at least two mixed case parts
300
while unicode.isupper(word[:i]):
303
return not unicode.islower(word[i:])
287
306
def increase_list_bullet(bullet):
288
307
'''Like L{increase_list_iter()}, but handles bullet string directly
3869
3888
apply_link(interwiki_re[0])
3870
3889
elif self.preferences['autolink_files'] and file_re.match(word):
3871
3890
apply_link(file_re[0])
3872
elif self.preferences['autolink_camelcase'] and camelcase_re.match(word):
3873
apply_link(camelcase_re[0])
3891
elif self.preferences['autolink_camelcase'] and camelcase(word):
3874
3893
elif self.preferences['auto_reformat']:
3875
3894
handled = False
3876
3895
linestart = buffer.get_iter_at_line(end.get_line())