Add .gitignore

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
This commit is contained in:
James Vega 2009-02-27 14:17:05 -05:00
parent 4de0bb31f9
commit 46a4076988
9 changed files with 47 additions and 43 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
build
test-data
test-conf
test-logs

View File

@ -110,7 +110,7 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
return help(method, return help(method,
doc=method._fake__doc__ % (s, s), doc=method._fake__doc__ % (s, s),
name=callbacks.formatCommand(command)) name=callbacks.formatCommand(command))
return self.__parent.getCommandHelp(command) return super(Factoids, self).getCommandHelp(self, command)
def learn(self, irc, msg, args, channel, key, factoid): def learn(self, irc, msg, args, channel, key, factoid):
db = self.getDb(channel) db = self.getDb(channel)
@ -328,7 +328,9 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
counter = 0 counter = 0
for (added_by, added_at) in factoids: for (added_by, added_at) in factoids:
counter += 1 counter += 1
L.append(format('#%i was added by %s at %t', added_at = time.strftime(conf.supybot.reply.format.time(),
time.localtime(int(added_at)))
L.append(format('#%i was added by %s at %s',
counter, added_by, added_at)) counter, added_by, added_at))
factoids = '; '.join(L) factoids = '; '.join(L)
s = format('Key %q is %s and has %n associated with it: %s', s = format('Key %q is %s and has %n associated with it: %s',

View File

@ -90,7 +90,7 @@ class SqliteKarmaDB(object):
def gets(self, channel, things): def gets(self, channel, things):
db = self._getDb(channel) db = self._getDb(channel)
cursor = db.cursor() cursor = db.cursor()
normalizedThings = dict(zip(map(str.lower, things), things)) normalizedThings = dict(zip(map(lambda s: s.lower(), things), things))
criteria = ' OR '.join(['normalized=%s'] * len(normalizedThings)) criteria = ' OR '.join(['normalized=%s'] * len(normalizedThings))
sql = """SELECT name, added-subtracted FROM karma sql = """SELECT name, added-subtracted FROM karma
WHERE %s ORDER BY added-subtracted DESC""" % criteria WHERE %s ORDER BY added-subtracted DESC""" % criteria

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2004, Daniel DiPaolo # Copyright (c) 2004, Daniel DiPaolo
# Copyright (c) 2008, James Vega
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -50,11 +51,9 @@ class QuoteGrabsRecord(dbi.Record):
] ]
def __str__(self): def __str__(self):
at = time.strftime(conf.supybot.reply.format.time(),
time.localtime(float(self.at)))
grabber = plugins.getUserName(self.grabber) grabber = plugins.getUserName(self.grabber)
return '%s (Said by: %s; grabbed by %s at %s)' % \ return format('%s (Said by: %s; grabbed by %s at %t)',
(self.text, self.hostmask, grabber, at) self.text, self.hostmask, grabber, self.at)
class SqliteQuoteGrabsDB(object): class SqliteQuoteGrabsDB(object):
def __init__(self, filename): def __init__(self, filename):
@ -152,8 +151,7 @@ class SqliteQuoteGrabsDB(object):
raise dbi.NoRecordError raise dbi.NoRecordError
return cursor.fetchone()[0] return cursor.fetchone()[0]
def add(self, msg, by): def add(self, channel, msg, by):
channel = msg.args[0]
db = self._getDb(channel) db = self._getDb(channel)
cursor = db.cursor() cursor = db.cursor()
text = ircmsgs.prettyPrint(msg) text = ircmsgs.prettyPrint(msg)
@ -193,29 +191,27 @@ class QuoteGrabs(callbacks.Plugin):
def doPrivmsg(self, irc, msg): def doPrivmsg(self, irc, msg):
irc = callbacks.SimpleProxy(irc, msg) irc = callbacks.SimpleProxy(irc, msg)
if irc.isChannel(msg.args[0]): if irc.isChannel(msg.args[0]):
(channel, payload) = msg.args (chan, payload) = msg.args
words = self.registryValue('randomGrabber.minimumWords', words = self.registryValue('randomGrabber.minimumWords', chan)
channel) length = self.registryValue('randomGrabber.minimumCharacters',chan)
length = self.registryValue('randomGrabber.minimumCharacters',
channel)
grabTime = \ grabTime = \
self.registryValue('randomGrabber.averageTimeBetweenGrabs', self.registryValue('randomGrabber.averageTimeBetweenGrabs', chan)
channel) channel = plugins.getChannel(chan)
if self.registryValue('randomGrabber', channel): if self.registryValue('randomGrabber', chan):
if len(payload) > length and len(payload.split()) > words: if len(payload) > length and len(payload.split()) > words:
try: try:
last = int(self.db.select(channel, msg.nick)) last = int(self.db.select(channel, msg.nick))
except dbi.NoRecordError: except dbi.NoRecordError:
self._grab(irc, msg, irc.prefix) self._grab(irc, channel, msg, irc.prefix)
self._sendGrabMsg(irc, msg) self._sendGrabMsg(irc, msg)
else: else:
elapsed = int(time.time()) - last elapsed = int(time.time()) - last
if random.random()*elapsed > grabTime/2: if (random.random() * elapsed) > (grabTime / 2):
self._grab(irc, msg, irc.prefix) self._grab(channel, irc, msg, irc.prefix)
self._sendGrabMsg(irc, msg) self._sendGrabMsg(irc, msg)
def _grab(self, irc, msg, addedBy): def _grab(self, channel, irc, msg, addedBy):
self.db.add(msg, addedBy) self.db.add(channel, msg, addedBy)
def _sendGrabMsg(self, irc, msg): def _sendGrabMsg(self, irc, msg):
s = 'jots down a new quote for %s' % msg.nick s = 'jots down a new quote for %s' % msg.nick
@ -239,7 +235,7 @@ class QuoteGrabs(callbacks.Plugin):
for m in reversed(irc.state.history): for m in reversed(irc.state.history):
if m.command == 'PRIVMSG' and ircutils.nickEqual(m.nick, nick) \ if m.command == 'PRIVMSG' and ircutils.nickEqual(m.nick, nick) \
and ircutils.strEqual(m.args[0], chan): and ircutils.strEqual(m.args[0], chan):
self._grab(irc, m, msg.prefix) self._grab(channel, irc, m, msg.prefix)
irc.replySuccess() irc.replySuccess()
return return
irc.error('I couldn\'t find a proper message to grab.') irc.error('I couldn\'t find a proper message to grab.')

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2004, Daniel DiPaolo # Copyright (c) 2004, Daniel DiPaolo
# Copyright (c) 2008, James Vega
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -52,28 +53,28 @@ class QuoteGrabsTestCase(ChannelPluginTestCase):
def testList(self): def testList(self):
testPrefix = 'foo!bar@baz' testPrefix = 'foo!bar@baz'
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testList',
prefix=testPrefix)) prefix=testPrefix))
self.assertNotError('grab foo') self.assertNotError('grab foo')
self.assertResponse('quotegrabs list foo', '#1: test') self.assertResponse('quotegrabs list foo', '#1: testList')
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'a' * 80, self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'a' * 80,
prefix=testPrefix)) prefix=testPrefix))
self.assertNotError('grab foo') self.assertNotError('grab foo')
self.assertResponse('quotegrabs list foo', self.assertResponse('quotegrabs list foo',
'#2: %s... and #1: test' %\ '#2: %s... and #1: testList' %\
('a'*43)) # 50 - length of "#2: ..." ('a'*43)) # 50 - length of "#2: ..."
def testDuplicateGrabs(self): def testDuplicateGrabs(self):
testPrefix = 'foo!bar@baz' testPrefix = 'foo!bar@baz'
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testDupe',
prefix=testPrefix)) prefix=testPrefix))
self.assertNotError('grab foo') self.assertNotError('grab foo')
self.assertNotError('grab foo') # note:NOTanerror,stillwon'tdupe self.assertNotError('grab foo') # note:NOTanerror,stillwon'tdupe
self.assertResponse('quotegrabs list foo', '#1: test') self.assertResponse('quotegrabs list foo', '#1: testDupe')
def testCaseInsensitivity(self): def testCaseInsensitivity(self):
testPrefix = 'foo!bar@baz' testPrefix = 'foo!bar@baz'
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testCI',
prefix=testPrefix)) prefix=testPrefix))
self.assertNotError('grab FOO') self.assertNotError('grab FOO')
self.assertNotError('quote foo') self.assertNotError('quote foo')
@ -85,26 +86,26 @@ class QuoteGrabsTestCase(ChannelPluginTestCase):
def testRandom(self): def testRandom(self):
testPrefix = 'foo!bar@baz' testPrefix = 'foo!bar@baz'
self.assertError('random') self.assertError('random')
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testRandom',
prefix=testPrefix)) prefix=testPrefix))
self.assertError('random') # still none in the db self.assertError('random') # still none in the db
self.assertNotError('grab foo') self.assertNotError('grab foo')
self.assertResponse('random', '<foo> test') self.assertResponse('random', '<foo> testRandom')
self.assertResponse('random foo', '<foo> test') self.assertResponse('random foo', '<foo> testRandom')
self.assertResponse('random FOO', '<foo> test') self.assertResponse('random FOO', '<foo> testRandom')
def testGet(self): def testGet(self):
testPrefix= 'foo!bar@baz' testPrefix= 'foo!bar@baz'
self.assertError('quotegrabs get asdf') self.assertError('quotegrabs get asdf')
self.assertError('quotegrabs get 1') self.assertError('quotegrabs get 1')
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testGet',
prefix=testPrefix)) prefix=testPrefix))
self.assertNotError('grab foo') self.assertNotError('grab foo')
self.assertNotError('quotegrabs get 1') self.assertNotError('quotegrabs get 1')
def testSearch(self): def testSearch(self):
testPrefix= 'foo!bar@baz' testPrefix= 'foo!bar@baz'
self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'test', self.irc.feedMsg(ircmsgs.privmsg(self.channel, 'testSearch',
prefix=testPrefix)) prefix=testPrefix))
self.assertError('quotegrabs search test') # still none in db self.assertError('quotegrabs search test') # still none in db
self.assertNotError('grab foo') self.assertNotError('grab foo')

View File

@ -123,7 +123,7 @@ def main():
log.info('Total CPU time taken: %s seconds.', user+system) log.info('Total CPU time taken: %s seconds.', user+system)
log.info('No more Irc objects, exiting.') log.info('No more Irc objects, exiting.')
version = '0.83.3+svn' version = '0.83.3'
if __name__ == '__main__': if __name__ == '__main__':
### ###
# Options: # Options:

View File

@ -151,7 +151,7 @@ package_dir = {'supybot': 'src',
for plugin in plugins: for plugin in plugins:
package_dir['supybot.plugins.' + plugin] = 'plugins/' + plugin package_dir['supybot.plugins.' + plugin] = 'plugins/' + plugin
version = '0.83.3+svn' version = '0.83.3'
setup( setup(
# Metadata # Metadata
name='supybot', name='supybot',

View File

@ -43,7 +43,7 @@ _pluginsDir = os.path.join(installDir, 'plugins')
### ###
# version: This should be pretty obvious. # version: This should be pretty obvious.
### ###
version = '0.83.3+svn' version = '0.83.3'
### ###
# *** The following variables are affected by command-line options. They are # *** The following variables are affected by command-line options. They are

View File

@ -65,15 +65,17 @@ def expect(prompt, possibilities, recursed=False, default=None,
if len(prompt) > 70: if len(prompt) > 70:
prompt = '%s %s' % (originalPrompt, choices % '/ '.join(possibilities)) prompt = '%s %s' % (originalPrompt, choices % '/ '.join(possibilities))
if default is not None: if default is not None:
prompt = '%s (default: %s)' % (prompt, default) if useBold:
prompt = '%s %s(default: %s)' % (prompt, ansi.RESET, default)
else:
prompt = '%s (default: %s)' % (prompt, default)
prompt = textwrap.fill(prompt) prompt = textwrap.fill(prompt)
prompt = prompt.replace('/ ', '/') prompt = prompt.replace('/ ', '/')
prompt = prompt.strip() + ' ' prompt = prompt.strip() + ' '
if useBold: if useBold:
prompt += ansi.RESET
print >>fd, ansi.BOLD, print >>fd, ansi.BOLD,
s = raw_input(prompt) s = raw_input(prompt)
if useBold:
print >>fd, ansi.RESET
s = s.strip() s = s.strip()
print >>fd print >>fd
if possibilities: if possibilities:
@ -125,11 +127,10 @@ def getpass(prompt='Enter password: ', secondPrompt='Re-enter password: '):
prompt += ' ' prompt += ' '
while True: while True:
if useBold: if useBold:
prompt += ansi.RESET
sys.stdout.write(ansi.BOLD) sys.stdout.write(ansi.BOLD)
password = getPass(prompt) password = getPass(prompt)
secondPassword = getPass(secondPrompt) secondPassword = getPass(secondPrompt)
if useBold:
print ansi.RESET
if password != secondPassword: if password != secondPassword:
output('Passwords don\'t match.') output('Passwords don\'t match.')
else: else: