cleaner regexp
This commit is contained in:
parent
737fcfe414
commit
f26ba59b0a
1 changed files with 14 additions and 16 deletions
|
@ -708,15 +708,15 @@ class tabbed_chat_window:
|
||||||
conversation_textview = self.xmls[jid].get_widget('conversation_textview')
|
conversation_textview = self.xmls[jid].get_widget('conversation_textview')
|
||||||
conversation_buffer = conversation_textview.get_buffer()
|
conversation_buffer = conversation_textview.get_buffer()
|
||||||
|
|
||||||
# make it CAPS (emoticons keys are are CAPS)
|
# make it CAPS (emoticons keys are all CAPS)
|
||||||
possible_emot_ascii_caps = text.upper()
|
possible_emot_ascii_caps = text.upper()
|
||||||
if possible_emot_ascii_caps in self.plugin.emoticons.keys():
|
if possible_emot_ascii_caps in self.plugin.emoticons.keys():
|
||||||
#it's an emoticon
|
#it's an emoticon
|
||||||
text = possible_emot_ascii_caps
|
emot_ascii = possible_emot_ascii_caps
|
||||||
print 'emoticon:', text
|
print 'emoticon:', emot_ascii
|
||||||
end_iter = conversation_buffer.get_end_iter()
|
end_iter = conversation_buffer.get_end_iter()
|
||||||
conversation_buffer.insert_pixbuf(end_iter, \
|
conversation_buffer.insert_pixbuf(end_iter, \
|
||||||
self.plugin.emoticons[text])
|
self.plugin.emoticons[emot_ascii])
|
||||||
return
|
return
|
||||||
elif text.startswith('mailto:'):
|
elif text.startswith('mailto:'):
|
||||||
#it's a mail
|
#it's a mail
|
||||||
|
@ -3544,7 +3544,7 @@ class plugin:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def make_pattern_with_formatting_on(self, formatting_on=True):
|
def make_pattern(self):
|
||||||
# regexp meta characters are: . ^ $ * + ? { } [ ] \ | ( )
|
# regexp meta characters are: . ^ $ * + ? { } [ ] \ | ( )
|
||||||
# one escapes the metachars with \
|
# one escapes the metachars with \
|
||||||
# \S matches anything but ' ' '\t' '\n' '\r' '\f' and '\v'
|
# \S matches anything but ' ' '\t' '\n' '\r' '\f' and '\v'
|
||||||
|
@ -3561,29 +3561,27 @@ class plugin:
|
||||||
# | means or
|
# | means or
|
||||||
# [^*] anything but '*' (inside [] you don't have to escape metachars)
|
# [^*] anything but '*' (inside [] you don't have to escape metachars)
|
||||||
# [^\s*] anything but whitespaces and '*'
|
# [^\s*] anything but whitespaces and '*'
|
||||||
# (?<=\s) is a one char lookbehind assertion and asks for any leading whitespace
|
# (?<!\S) is a one char lookbehind assertion and asks for any leading whitespace
|
||||||
# and combined with ^ (beginning of lines) we have correct formatting detection
|
# and mathces beginning of lines so we have correct formatting detection
|
||||||
# even if the the text is just '*something*'
|
# even if the the text is just '*something*'
|
||||||
# basic_pattern is one string literal.
|
# basic_pattern is one string literal.
|
||||||
# I've put spaces to make the regexp look better.
|
# I've put spaces to make the regexp look better.
|
||||||
links = r'\bhttp://\S+|' r'\bhttps://\S+|' r'\bnews://\S+|' r'\bftp://\S+|' r'\bed2k://\S+|' r'\bwww\.\S+|' r'\bftp\.\S+|'
|
links = r'\bhttp://\S+|' r'\bhttps://\S+|' r'\bnews://\S+|' r'\bftp://\S+|' r'\bed2k://\S+|' r'\bwww\.\S+|' r'\bftp\.\S+|'
|
||||||
#2nd one: at_least_one_char@at_least_one_char.at_least_one_char
|
#2nd one: at_least_one_char@at_least_one_char.at_least_one_char
|
||||||
mail = r'\bmailto:\S+|' r'\b\S+@\S+\.\S+'
|
mail = r'\bmailto:\S+|' r'\b\S+@\S+\.\S+|'
|
||||||
|
|
||||||
#detects eg. *b* *bold* *bold bold* test *bold*
|
#detects eg. *b* *bold* *bold bold* test *bold*
|
||||||
#doesn't detect (it's a feature :P) * bold* *bold * * bold * test*bold*
|
#doesn't detect (it's a feature :P) * bold* *bold * * bold * test*bold*
|
||||||
formatting = r'((?<=\s)|^)\*[^\s*]([^*]*[^\s*])?\*|' r'((?<=\s)|^)/[^\s*]([^/]*[^\s*])?/|' r'((?<=\s)|^)_[^\s*]([^_]*[^\s*])?_'
|
formatting = r'(?<!\S)\*[^\s*]([^*]*[^\s*])?\*|' r'(?<!\S)/[^\s*]([^/]*[^\s*])?/|' r'(?<!\S)_[^\s*]([^_]*[^\s*])?_'
|
||||||
|
|
||||||
|
self.basic_pattern = links + mail + formatting
|
||||||
|
|
||||||
if formatting_on:
|
|
||||||
self.basic_pattern = links + mail + '|' + formatting
|
|
||||||
else:
|
|
||||||
self.basic_pattern = links + mail
|
|
||||||
|
|
||||||
def __init__(self, quIN, quOUT):
|
def __init__(self, quIN, quOUT):
|
||||||
gtk.gdk.threads_init()
|
gtk.gdk.threads_init()
|
||||||
#(asterix) I don't have pygtk 2.6 for the moment, so I cannot test
|
#(asterix) I don't have pygtk 2.6 for the moment, so I cannot test
|
||||||
# gtk.about_dialog_set_email_hook(self.launch_browser_mailer, 'mail')
|
gtk.about_dialog_set_email_hook(self.launch_browser_mailer, 'mail')
|
||||||
# gtk.about_dialog_set_url_hook(self.launch_browser_mailer, 'url')
|
gtk.about_dialog_set_url_hook(self.launch_browser_mailer, 'url')
|
||||||
self.queueIN = quIN
|
self.queueIN = quIN
|
||||||
self.queueOUT = quOUT
|
self.queueOUT = quOUT
|
||||||
self.send('REG_MESSAGE', 'gtkgui', ['ROSTER', 'WARNING', 'STATUS', \
|
self.send('REG_MESSAGE', 'gtkgui', ['ROSTER', 'WARNING', 'STATUS', \
|
||||||
|
@ -3710,7 +3708,7 @@ class plugin:
|
||||||
pix = gtk.gdk.pixbuf_new_from_file(emot_file)
|
pix = gtk.gdk.pixbuf_new_from_file(emot_file)
|
||||||
self.emoticons[split_line[2*i]] = pix
|
self.emoticons[split_line[2*i]] = pix
|
||||||
|
|
||||||
self.make_pattern_with_formatting_on(True)
|
self.make_pattern()
|
||||||
|
|
||||||
# at least one character in 3 parts (before @, after @, after .)
|
# at least one character in 3 parts (before @, after @, after .)
|
||||||
self.sth_at_sth_dot_sth_re = sre.compile(r'\S+@\S+\.\S+')
|
self.sth_at_sth_dot_sth_re = sre.compile(r'\S+@\S+\.\S+')
|
||||||
|
|
Loading…
Add table
Reference in a new issue