Esempio n. 1
0
    def testWrap(self):
        if sys.version_info[0] < 3:
            pred = len
        else:
            pred = lambda s: len(s.encode())

        s = ('foo bar baz qux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        if sys.version_info[0] < 3:
            uchr = unichr
            u = lambda s: s.decode('utf8')
        else:
            uchr = chr
            u = lambda x: x
        s = (u('').join([uchr(0x1f527), uchr(0x1f527), uchr(0x1f527), u(' ')]) * 100)\
                [0:-1]

        r = ircutils.wrap(s, 20)
        self.assertTrue(max(map(pred, r)) <= 20, (max(map(pred, r)), repr(r)))
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = uchr(233) * 500
        r = ircutils.wrap(s, 500)
        self.assertTrue(max(map(pred, r)) <= 500)
        r = ircutils.wrap(s, 139)
        self.assertTrue(max(map(pred, r)) <= 139)
Esempio n. 2
0
    def testWrap(self):
        if sys.version_info[0] < 3:
            pred = len
        else:
            pred = lambda s:len(s.encode())

        s = ('foo bar baz qux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        if sys.version_info[0] < 3:
            uchr = unichr
            u = lambda s: s.decode('utf8')
        else:
            uchr = chr
            u = lambda x: x
        s = (u('').join([uchr(0x1f527), uchr(0x1f527), uchr(0x1f527), u(' ')]) * 100)\
                [0:-1]

        r = ircutils.wrap(s, 20)
        self.assertTrue(max(map(pred, r)) <= 20, (max(map(pred, r)), repr(r)))
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = uchr(233)*500
        r = ircutils.wrap(s, 500)
        self.assertTrue(max(map(pred, r)) <= 500)
        r = ircutils.wrap(s, 139)
        self.assertTrue(max(map(pred, r)) <= 139)
Esempio n. 3
0
 def _mention(self, irc):
     statuses = self.api.GetMentions(since_id=self.mentionSince)
     if len(statuses) > 0:
         self.mentionSince = statuses[0].id
         for channel in self.registryValue('channelList').split():
             comment = self.registryValue('replyAnnounceMsg')
             status_strs = []
             for status in statuses:
                 msg = (status.user.screen_name + ' -- ' + status.text).encode("UTF-8")
                 self.log.info(msg)
                 status_strs.append(msg)
             status_msgs = comment + " " + " || ".join(status_strs)
             for msg in ircutils.wrap(status_msgs, 470):
                 irc.queueMsg(ircmsgs.privmsg(channel, msg))
Esempio n. 4
0
 def _tweets(self, irc):
     statuses = self.api.GetUserTimeline(include_rts=True, since_id=self.tweetsSince)
     if len(statuses) > 0:
         self.tweetsSince = statuses[0].id
         for channel in self.registryValue('channelList').split():
             comment = self.registryValue('tweetAnnounceMsg')
             status_strs = []
             for status in statuses:
                 if status.retweeted_status is not None:
                     msg = (status.user.screen_name + ' -- RT @' + status.retweeted_status.user.screen_name + " " + status.retweeted_status.text).encode("UTF-8")
                 else:
                     msg = (status.user.screen_name + ' -- ' + status.text).encode("UTF-8")
                 msg = utils.web.htmlToText(msg)
                 self.log.info(msg)
                 status_strs.append(msg)
             status_msgs = comment + " " + " || ".join(status_strs)
             for msg in ircutils.wrap(status_msgs, 470):
                 irc.queueMsg(ircmsgs.privmsg(channel, msg))
 def wrapped_message(self, sender, message, **kwargs):
     line_length = 300
     wrapped = ircutils.wrap(message, line_length)
     for msg in wrapped:
         sender(msg, **kwargs)
Esempio n. 6
0
 def _newHeadlines(self, irc, channels, name, url):
     try:
         # We acquire the lock here so there's only one announcement thread
         # in this code at any given time.  Otherwise, several announcement
         # threads will getFeed (all blocking, in turn); then they'll all
         # want to send their news messages to the appropriate channels.
         # Note that we're allowed to acquire this lock twice within the
         # same thread because it's an RLock and not just a normal Lock.
         self.acquireLock(url)
         try:
             oldresults = self.cachedFeeds[url]
             oldheadlines = self.getHeadlines(oldresults)
         except KeyError:
             oldheadlines = []
         newresults = self.getFeed(url)
         newheadlines = self.getHeadlines(newresults)
         if len(newheadlines) == 1:
             s = newheadlines[0][0]
             if s in ('Timeout downloading feed.',
                      'Unable to download feed.'):
                 self.log.debug('%s %u', s, url)
                 return
         def normalize(headline):
             return (tuple(headline[0].lower().split()), headline[1])
         oldheadlines = set(map(normalize, oldheadlines))
         for (i, headline) in enumerate(newheadlines):
             if normalize(headline) in oldheadlines:
                 newheadlines[i] = None
         newheadlines = filter(None, newheadlines) # Removes Nones.
         if newheadlines:
             def filter_whitelist(headline):
                 v = False
                 for kw in whitelist:
                     if kw in headline[0] or kw in headline[1]:
                         v = True
                         break
                 return v
             def filter_blacklist(headline):
                 v = True
                 for kw in blacklist:
                     if kw in headline[0] or kw in headline[1]:
                         v = False
                         break
                 return v
             for channel in channels:
                 if len(oldheadlines) == 0:
                     channelnewheadlines = newheadlines[:self.registryValue('initialAnnounceHeadlines', channel)]
                 else:
                     channelnewheadlines = newheadlines[:]
                 whitelist = self.registryValue('keywordWhitelist', channel)
                 blacklist = self.registryValue('keywordBlacklist', channel)
                 if len(whitelist) != 0:
                     channelnewheadlines = filter(filter_whitelist, channelnewheadlines)
                 if len(blacklist) != 0:
                     channelnewheadlines = filter(filter_blacklist, channelnewheadlines)
                 if len(channelnewheadlines) == 0:
                     return
                 bold = self.registryValue('bold', channel)
                 sep = self.registryValue('headlineSeparator', channel)
                 prefix = self.registryValue('announcementPrefix', channel)
                 pre = format('%s%s: ', prefix, name)
                 if bold:
                     pre = ircutils.bold(pre)
                     sep = ircutils.bold(sep)
                 headlines = self.buildHeadlines(channelnewheadlines, channel)
                 headlines_str = pre + sep.join(headlines)
                 for msg in ircutils.wrap(headlines_str, 470):
                     irc.replies(msg, prefixer=None, joiner="",
                                 to=channel, prefixNick=False, private=True)
     finally:
         self.releaseLock(url)
Esempio n. 7
0
    def testWrap(self):
        pred = lambda s: len(s.encode())

        s = ('foo bar baz qux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = (''.join([chr(0x1f527), chr(0x1f527), chr(0x1f527), ' ']) * 100)\
                [0:-1]

        r = ircutils.wrap(s, 20)
        self.assertTrue(max(map(pred, r)) <= 20, (max(map(pred, r)), repr(r)))
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux ' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = ('foobarbazqux' * 100)[0:-1]

        r = ircutils.wrap(s, 10)
        self.assertTrue(max(map(pred, r)) <= 10)
        self.assertEqual(''.join(r), s)

        r = ircutils.wrap(s, 100)
        self.assertTrue(max(map(pred, r)) <= 100)
        self.assertEqual(''.join(r), s)

        s = chr(233) * 500
        r = ircutils.wrap(s, 500)
        self.assertTrue(max(map(pred, r)) <= 500)
        r = ircutils.wrap(s, 139)
        self.assertTrue(max(map(pred, r)) <= 139)

        s = '\x02\x16 barbazqux' + ('foobarbazqux ' * 20)[0:-1]
        r = ircutils.wrap(s, 91)
        self.assertTrue(max(map(pred, r)) <= 91)