mirror of
				https://github.com/Mikaela/Limnoria.git
				synced 2025-11-04 09:37:25 +01:00 
			
		
		
		
	Merge branch 'i18n' of github.com:ProgVal/Supybot-fr into i18n
This commit is contained in:
		
						commit
						7cf5bb7242
					
				@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Heral')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -41,31 +43,31 @@ def configure(advanced):
 | 
			
		||||
 | 
			
		||||
Herald = conf.registerPlugin('Herald')
 | 
			
		||||
conf.registerChannelValue(Herald, 'heralding',
 | 
			
		||||
    registry.Boolean(True, """Determines whether messages will be sent to the
 | 
			
		||||
    registry.Boolean(True, _("""Determines whether messages will be sent to the
 | 
			
		||||
    channel when a recognized user joins; basically enables or disables the
 | 
			
		||||
    plugin."""))
 | 
			
		||||
    plugin.""")))
 | 
			
		||||
conf.registerGlobalValue(Herald, 'requireCapability',
 | 
			
		||||
    registry.String('', """Determines what capability (if any) is required to
 | 
			
		||||
    add/change/remove the herald of another user."""))
 | 
			
		||||
    registry.String('', _("""Determines what capability (if any) is required to
 | 
			
		||||
    add/change/remove the herald of another user.""")))
 | 
			
		||||
conf.registerChannelValue(Herald, 'throttle',
 | 
			
		||||
    registry.PositiveInteger(600, """Determines the minimum number of seconds
 | 
			
		||||
    between heralds."""))
 | 
			
		||||
    registry.PositiveInteger(600, _("""Determines the minimum number of seconds
 | 
			
		||||
    between heralds.""")))
 | 
			
		||||
conf.registerChannelValue(Herald.throttle, 'afterPart',
 | 
			
		||||
    registry.NonNegativeInteger(0, """Determines the minimum number of seconds
 | 
			
		||||
    registry.NonNegativeInteger(0, _("""Determines the minimum number of seconds
 | 
			
		||||
    after parting that the bot will not herald the person when he or she
 | 
			
		||||
    rejoins."""))
 | 
			
		||||
    rejoins.""")))
 | 
			
		||||
conf.registerChannelValue(Herald.throttle, 'afterSplit',
 | 
			
		||||
    registry.NonNegativeInteger(60, """Determines the minimum number of seconds
 | 
			
		||||
    after a netsplit that the bot will not herald the users that split."""))
 | 
			
		||||
    registry.NonNegativeInteger(60, _("""Determines the minimum number of seconds
 | 
			
		||||
    after a netsplit that the bot will not herald the users that split.""")))
 | 
			
		||||
conf.registerChannelValue(Herald, 'default',
 | 
			
		||||
    registry.String('', """Sets the default herald to use.  If a user has a
 | 
			
		||||
    registry.String('', _("""Sets the default herald to use.  If a user has a
 | 
			
		||||
    personal herald specified, that will be used instead.  If set to the empty
 | 
			
		||||
    string, the default herald will be disabled."""))
 | 
			
		||||
    string, the default herald will be disabled.""")))
 | 
			
		||||
conf.registerChannelValue(Herald.default, 'notice',
 | 
			
		||||
    registry.Boolean(True, """Determines whether the default herald will be
 | 
			
		||||
    sent as a NOTICE instead of a PRIVMSG."""))
 | 
			
		||||
    registry.Boolean(True, _("""Determines whether the default herald will be
 | 
			
		||||
    sent as a NOTICE instead of a PRIVMSG.""")))
 | 
			
		||||
conf.registerChannelValue(Herald.default, 'public',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the default herald will be
 | 
			
		||||
    sent publicly."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the default herald will be
 | 
			
		||||
    sent publicly.""")))
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										140
									
								
								plugins/Herald/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								plugins/Herald/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,140 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: config.py:46
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether messages will be sent to the\n"
 | 
			
		||||
"    channel when a recognized user joins; basically enables or disables the\n"
 | 
			
		||||
"    plugin."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:50
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines what capability (if any) is required to\n"
 | 
			
		||||
"    add/change/remove the herald of another user."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:53
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the minimum number of seconds\n"
 | 
			
		||||
"    between heralds."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:56
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the minimum number of seconds\n"
 | 
			
		||||
"    after parting that the bot will not herald the person when he or she\n"
 | 
			
		||||
"    rejoins."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:60
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the minimum number of seconds\n"
 | 
			
		||||
"    after a netsplit that the bot will not herald the users that split."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:63
 | 
			
		||||
msgid ""
 | 
			
		||||
"Sets the default herald to use.  If a user has a\n"
 | 
			
		||||
"    personal herald specified, that will be used instead.  If set to the empty\n"
 | 
			
		||||
"    string, the default herald will be disabled."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:67
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the default herald will be\n"
 | 
			
		||||
"    sent as a NOTICE instead of a PRIVMSG."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:70
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the default herald will be\n"
 | 
			
		||||
"    sent publicly."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:143
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [--remove|<msg>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        If <msg> is given, sets the default herald to <msg>.  A <msg> of \"\"\n"
 | 
			
		||||
"        will remove the default herald.  If <msg> is not given, returns the\n"
 | 
			
		||||
"        current default herald.  <channel> is only necessary if the message\n"
 | 
			
		||||
"        isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:162
 | 
			
		||||
msgid "I do not have a default herald set for %s."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:170
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [<user|nick>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the current herald message for <user> (or the user\n"
 | 
			
		||||
"        <nick|hostmask> is currently identified or recognized as).  If <user>\n"
 | 
			
		||||
"        is not given, defaults to the user giving the command.  <channel>\n"
 | 
			
		||||
"        is only necessary if the message isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:181
 | 
			
		||||
msgid "I have no herald for %s."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:201
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] <user|nick> <msg>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Sets the herald message for <user> (or the user <nick|hostmask> is\n"
 | 
			
		||||
"        currently identified or recognized as) to <msg>.  <channel> is only\n"
 | 
			
		||||
"        necessary if the message isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:214
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [<user|nick>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Removes the herald message set for <user>, or the user\n"
 | 
			
		||||
"        <nick|hostmask> is currently identified or recognized as.  If <user>\n"
 | 
			
		||||
"        is not given, defaults to the user giving the command.\n"
 | 
			
		||||
"        <channel> is only necessary if the message isn't sent in the channel\n"
 | 
			
		||||
"        itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:227
 | 
			
		||||
msgid "I have no herald for that user."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:232
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [<user|nick>] <regexp>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Changes the herald message for <user>, or the user <nick|hostmask> is\n"
 | 
			
		||||
"        currently identified or recognized as, according to <regexp>.  If\n"
 | 
			
		||||
"        <user> is not given, defaults to the calling user. <channel> is only\n"
 | 
			
		||||
"        necessary if the message isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,8 @@ import supybot.plugins as plugins
 | 
			
		||||
import supybot.ircutils as ircutils
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.utils.structures import TimeoutQueue
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Heral')
 | 
			
		||||
 | 
			
		||||
filename = conf.supybot.directories.data.dirize('Herald.db')
 | 
			
		||||
 | 
			
		||||
@ -136,6 +138,7 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
                raise KeyError
 | 
			
		||||
        return id
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def default(self, irc, msg, args, channel, optlist, text):
 | 
			
		||||
        """[<channel>] [--remove|<msg>]
 | 
			
		||||
 | 
			
		||||
@ -156,12 +159,13 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
            irc.replySuccess()
 | 
			
		||||
        else:
 | 
			
		||||
            resp = self.registryValue('default', channel) or \
 | 
			
		||||
                   'I do not have a default herald set for %s.' % channel
 | 
			
		||||
                   _('I do not have a default herald set for %s.') % channel
 | 
			
		||||
            irc.reply(resp)
 | 
			
		||||
    default = wrap(default, ['channel',
 | 
			
		||||
                             getopts({'remove': ''}),
 | 
			
		||||
                             additional('text')])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def get(self, irc, msg, args, channel, user):
 | 
			
		||||
        """[<channel>] [<user|nick>]
 | 
			
		||||
 | 
			
		||||
@ -174,7 +178,7 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
            herald = self.db[channel, user.id]
 | 
			
		||||
            irc.reply(herald)
 | 
			
		||||
        except KeyError:
 | 
			
		||||
            irc.error('I have no herald for %s.' % user.name)
 | 
			
		||||
            irc.error(_('I have no herald for %s.') % user.name)
 | 
			
		||||
    get = wrap(get, ['channel', first('otherUser', 'user')])
 | 
			
		||||
 | 
			
		||||
    def _preCheck(self, irc, msg, user):
 | 
			
		||||
@ -192,6 +196,7 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
    # I chose not to make <user|nick> optional in this command because
 | 
			
		||||
    # if it's not a valid username (e.g., if the user tyops and misspells a
 | 
			
		||||
    # username), it may be nice not to clobber the user's herald.
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def add(self, irc, msg, args, channel, user, herald):
 | 
			
		||||
        """[<channel>] <user|nick> <msg>
 | 
			
		||||
 | 
			
		||||
@ -204,6 +209,7 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
        irc.replySuccess()
 | 
			
		||||
    add = wrap(add, ['channel', 'otherUser', 'text'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def remove(self, irc, msg, args, channel, user):
 | 
			
		||||
        """[<channel>] [<user|nick>]
 | 
			
		||||
 | 
			
		||||
@ -218,9 +224,10 @@ class Herald(callbacks.Plugin):
 | 
			
		||||
            del self.db[channel, user.id]
 | 
			
		||||
            irc.replySuccess()
 | 
			
		||||
        except KeyError:
 | 
			
		||||
            irc.error('I have no herald for that user.')
 | 
			
		||||
            irc.error(_('I have no herald for that user.'))
 | 
			
		||||
    remove = wrap(remove, ['channel', first('otherUser', 'user')])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def change(self, irc, msg, args, channel, user, changer):
 | 
			
		||||
        """[<channel>] [<user|nick>] <regexp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Internet')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -42,7 +44,7 @@ def configure(advanced):
 | 
			
		||||
Internet = conf.registerPlugin('Internet')
 | 
			
		||||
# This is where your configuration variables (if any) should go.  For example:
 | 
			
		||||
# conf.registerGlobalValue(Internet, 'someConfigVariableName',
 | 
			
		||||
#     registry.Boolean(False, """Help for someConfigVariableName."""))
 | 
			
		||||
#     registry.Boolean(False, _("""Help for someConfigVariableName.""")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								plugins/Internet/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								plugins/Internet/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,85 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:20+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: plugin.py:43
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid "Add the help for \"@help Internet\" here."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:47
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<host|ip>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the ip of <host> or the reverse DNS hostname of <ip>.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:54 plugin.py:61 plugin.py:65
 | 
			
		||||
msgid "Host not found."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:77
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<domain>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns WHOIS information on the registration of <domain>.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:83
 | 
			
		||||
msgid "domain"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:112
 | 
			
		||||
msgid "updated %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:115
 | 
			
		||||
msgid "registered %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:118
 | 
			
		||||
msgid "expires %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:138
 | 
			
		||||
msgid " <registered at %s>"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:140
 | 
			
		||||
msgid " <registered by %s>"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:145
 | 
			
		||||
msgid "%s%s is %L."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:148
 | 
			
		||||
msgid "I couldn't find such a domain."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:153
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<ip>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the hexadecimal IP for that IP.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -35,11 +35,14 @@ import supybot.utils as utils
 | 
			
		||||
from supybot.commands import *
 | 
			
		||||
from supybot.utils.iter import any
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Internet')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@internationalizeDocstring
 | 
			
		||||
class Internet(callbacks.Plugin):
 | 
			
		||||
    """Add the help for "@help Internet" here."""
 | 
			
		||||
    threaded = True
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def dns(self, irc, msg, args, host):
 | 
			
		||||
        """<host|ip>
 | 
			
		||||
 | 
			
		||||
@ -48,18 +51,18 @@ class Internet(callbacks.Plugin):
 | 
			
		||||
        if utils.net.isIP(host):
 | 
			
		||||
            hostname = socket.getfqdn(host)
 | 
			
		||||
            if hostname == host:
 | 
			
		||||
                irc.reply('Host not found.')
 | 
			
		||||
                irc.reply(_('Host not found.'))
 | 
			
		||||
            else:
 | 
			
		||||
                irc.reply(hostname)
 | 
			
		||||
        else:
 | 
			
		||||
            try:
 | 
			
		||||
                ip = socket.gethostbyname(host)
 | 
			
		||||
                if ip == '64.94.110.11': # Verisign sucks!
 | 
			
		||||
                    irc.reply('Host not found.')
 | 
			
		||||
                    irc.reply(_('Host not found.'))
 | 
			
		||||
                else:
 | 
			
		||||
                    irc.reply(ip)
 | 
			
		||||
            except socket.error:
 | 
			
		||||
                irc.reply('Host not found.')
 | 
			
		||||
                irc.reply(_('Host not found.'))
 | 
			
		||||
    dns = wrap(dns, ['something'])
 | 
			
		||||
 | 
			
		||||
    _domain = ['Domain Name', 'Server Name', 'domain']
 | 
			
		||||
@ -69,6 +72,7 @@ class Internet(callbacks.Plugin):
 | 
			
		||||
    _created = ['Created On', 'Domain Registration Date', 'Creation Date']
 | 
			
		||||
    _expires = ['Expiration Date', 'Domain Expiration Date']
 | 
			
		||||
    _status = ['Status', 'Domain Status', 'status']
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def whois(self, irc, msg, args, domain):
 | 
			
		||||
        """<domain>
 | 
			
		||||
 | 
			
		||||
@ -76,7 +80,7 @@ class Internet(callbacks.Plugin):
 | 
			
		||||
        """
 | 
			
		||||
        usertld = domain.split('.')[-1]
 | 
			
		||||
        if '.' not in domain:
 | 
			
		||||
            irc.errorInvalid('domain')
 | 
			
		||||
            irc.errorInvalid(_('domain'))
 | 
			
		||||
            return
 | 
			
		||||
        try:
 | 
			
		||||
            t = telnetlib.Telnet('%s.whois-servers.net' % usertld, 43)
 | 
			
		||||
@ -105,13 +109,13 @@ class Internet(callbacks.Plugin):
 | 
			
		||||
                registrar = ':'.join(line.split(':')[1:]).strip()
 | 
			
		||||
            elif not updated and any(line.startswith, self._updated):
 | 
			
		||||
                s = ':'.join(line.split(':')[1:]).strip()
 | 
			
		||||
                updated = 'updated %s' % s
 | 
			
		||||
                updated = _('updated %s') % s
 | 
			
		||||
            elif not created and any(line.startswith, self._created):
 | 
			
		||||
                s = ':'.join(line.split(':')[1:]).strip()
 | 
			
		||||
                created = 'registered %s' % s
 | 
			
		||||
                created = _('registered %s') % s
 | 
			
		||||
            elif not expires and any(line.startswith, self._expires):
 | 
			
		||||
                s = ':'.join(line.split(':')[1:]).strip()
 | 
			
		||||
                expires = 'expires %s' % s
 | 
			
		||||
                expires = _('expires %s') % s
 | 
			
		||||
            elif not status and any(line.startswith, self._status):
 | 
			
		||||
                status = ':'.join(line.split(':')[1:]).strip().lower()
 | 
			
		||||
        if not status:
 | 
			
		||||
@ -131,19 +135,20 @@ class Internet(callbacks.Plugin):
 | 
			
		||||
            if not line:
 | 
			
		||||
                continue
 | 
			
		||||
            if line.startswith('Email'):
 | 
			
		||||
                url = ' <registered at %s>' % line.split('@')[-1]
 | 
			
		||||
                url = _(' <registered at %s>') % line.split('@')[-1]
 | 
			
		||||
            elif line.startswith('Registrar Organization:'):
 | 
			
		||||
                url = ' <registered by %s>' % line.split(':')[1].strip()
 | 
			
		||||
                url = _(' <registered by %s>') % line.split(':')[1].strip()
 | 
			
		||||
            elif line == 'Not a valid ID pattern':
 | 
			
		||||
                url = ''
 | 
			
		||||
        if server and status:
 | 
			
		||||
            info = filter(None, [status, created, updated, expires])
 | 
			
		||||
            s = format('%s%s is %L.', server, url, info)
 | 
			
		||||
            s = format(_('%s%s is %L.'), server, url, info)
 | 
			
		||||
            irc.reply(s)
 | 
			
		||||
        else:
 | 
			
		||||
            irc.error('I couldn\'t find such a domain.')
 | 
			
		||||
            irc.error(_('I couldn\'t find such a domain.'))
 | 
			
		||||
    whois = wrap(whois, ['lowered'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def hexip(self, irc, msg, args, ip):
 | 
			
		||||
        """<ip>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Karma')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -41,22 +43,22 @@ def configure(advanced):
 | 
			
		||||
conf.registerPlugin('Karma')
 | 
			
		||||
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the bot will output shorter
 | 
			
		||||
    versions of the karma output when requesting a single thing's karma."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the bot will output shorter
 | 
			
		||||
    versions of the karma output when requesting a single thing's karma.""")))
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'response',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the bot will reply with a
 | 
			
		||||
    success message when something's karma is increased or decreased."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the bot will reply with a
 | 
			
		||||
    success message when something's karma is increased or decreased.""")))
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay',
 | 
			
		||||
    registry.Integer(3, """Determines how many highest/lowest karma things are
 | 
			
		||||
    shown when karma is called with no arguments."""))
 | 
			
		||||
    registry.Integer(3, _("""Determines how many highest/lowest karma things
 | 
			
		||||
    are shown when karma is called with no arguments.""")))
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
 | 
			
		||||
    registry.Integer(25, """Determines how many karma things are shown when
 | 
			
		||||
    the most command is called.'"""))
 | 
			
		||||
    registry.Integer(25, _("""Determines how many karma things are shown when
 | 
			
		||||
    the most command is called.'""")))
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
 | 
			
		||||
    registry.Boolean(False, """Determines whether users can adjust the karma
 | 
			
		||||
    of their nick."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether users can adjust the karma
 | 
			
		||||
    of their nick.""")))
 | 
			
		||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the bot will
 | 
			
		||||
    increase/decrease karma without being addressed."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the bot will
 | 
			
		||||
    increase/decrease karma without being addressed.""")))
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										137
									
								
								plugins/Karma/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								plugins/Karma/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,137 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: config.py:46
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the bot will output shorter\n"
 | 
			
		||||
"    versions of the karma output when requesting a single thing's karma."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:49
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the bot will reply with a\n"
 | 
			
		||||
"    success message when something's karma is increased or decreased."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:52
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines how many highest/lowest karma things\n"
 | 
			
		||||
"    are shown when karma is called with no arguments."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:55
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines how many karma things are shown when\n"
 | 
			
		||||
"    the most command is called.'"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:58
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether users can adjust the karma\n"
 | 
			
		||||
"    of their nick."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:61
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the bot will\n"
 | 
			
		||||
"    increase/decrease karma without being addressed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:243 plugin.py:251
 | 
			
		||||
msgid "You're not allowed to adjust your own karma."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:280
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [<thing> ...]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the karma of <thing>.  If <thing> is not given, returns the top\n"
 | 
			
		||||
"        N karmas, where N is determined by the config variable\n"
 | 
			
		||||
"        supybot.plugins.Karma.rankingDisplay.  If one <thing> is given, returns\n"
 | 
			
		||||
"        the details of its karma; if more than one <thing> is given, returns\n"
 | 
			
		||||
"        the total karma of each of the the things. <channel> is only necessary\n"
 | 
			
		||||
"        if the message isn't sent on the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:293
 | 
			
		||||
msgid "%s has neutral karma."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:300
 | 
			
		||||
msgid "Karma for %q has been increased %n and decreased %n for a total karma of %s."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:315
 | 
			
		||||
msgid "I didn't know the karma for any of those things."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:325 plugin.py:354
 | 
			
		||||
msgid "I have no karma for this channel."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:330
 | 
			
		||||
msgid "  You (%s) are ranked %i out of %i."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:334
 | 
			
		||||
msgid "Highest karma: %L.  Lowest karma: %L.%s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:342
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] {increased,decreased,active}\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the most increased, the most decreased, or the most active\n"
 | 
			
		||||
"        (the sum of increased and decreased) karma things.  <channel> is only\n"
 | 
			
		||||
"        necessary if the message isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:360
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] <name>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Resets the karma of <name> to 0.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:370
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] <filename>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Dumps the Karma database for <channel> to <filename> in the bot's\n"
 | 
			
		||||
"        data directory.  <channel> is only necessary if the message isn't sent\n"
 | 
			
		||||
"        in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:382
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] <filename>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Loads the Karma database for <channel> from <filename> in the bot's\n"
 | 
			
		||||
"        data directory.  <channel> is only necessary if the message isn't sent\n"
 | 
			
		||||
"        in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -38,6 +38,8 @@ import supybot.plugins as plugins
 | 
			
		||||
import supybot.ircmsgs as ircmsgs
 | 
			
		||||
import supybot.ircutils as ircutils
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Karma')
 | 
			
		||||
 | 
			
		||||
class SqliteKarmaDB(object):
 | 
			
		||||
    def __init__(self, filename):
 | 
			
		||||
@ -238,7 +240,7 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
            thing = thing[:-2]
 | 
			
		||||
            if ircutils.strEqual(thing, irc.msg.nick) and \
 | 
			
		||||
               not self.registryValue('allowSelfRating', channel):
 | 
			
		||||
                irc.error('You\'re not allowed to adjust your own karma.')
 | 
			
		||||
                irc.error(_('You\'re not allowed to adjust your own karma.'))
 | 
			
		||||
            elif thing:
 | 
			
		||||
                self.db.increment(channel, self._normalizeThing(thing))
 | 
			
		||||
                self._respond(irc, channel)
 | 
			
		||||
@ -246,7 +248,7 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
            thing = thing[:-2]
 | 
			
		||||
            if ircutils.strEqual(thing, irc.msg.nick) and \
 | 
			
		||||
               not self.registryValue('allowSelfRating', channel):
 | 
			
		||||
                irc.error('You\'re not allowed to adjust your own karma.')
 | 
			
		||||
                irc.error(_('You\'re not allowed to adjust your own karma.'))
 | 
			
		||||
            elif thing:
 | 
			
		||||
                self.db.decrement(channel, self._normalizeThing(thing))
 | 
			
		||||
                self._respond(irc, channel)
 | 
			
		||||
@ -273,6 +275,7 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
                if thing[-2:] in ('++', '--'):
 | 
			
		||||
                    self._doKarma(irc, channel, thing)
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def karma(self, irc, msg, args, channel, things):
 | 
			
		||||
        """[<channel>] [<thing> ...]
 | 
			
		||||
 | 
			
		||||
@ -287,15 +290,15 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
            name = things[0]
 | 
			
		||||
            t = self.db.get(channel, name)
 | 
			
		||||
            if t is None:
 | 
			
		||||
                irc.reply(format('%s has neutral karma.', name))
 | 
			
		||||
                irc.reply(format(_('%s has neutral karma.'), name))
 | 
			
		||||
            else:
 | 
			
		||||
                (added, subtracted) = t
 | 
			
		||||
                total = added - subtracted
 | 
			
		||||
                if self.registryValue('simpleOutput', channel):
 | 
			
		||||
                    s = format('%s: %i', name, total)
 | 
			
		||||
                else:
 | 
			
		||||
                    s = format('Karma for %q has been increased %n and '
 | 
			
		||||
                               'decreased %n for a total karma of %s.',
 | 
			
		||||
                    s = format(_('Karma for %q has been increased %n and '
 | 
			
		||||
                               'decreased %n for a total karma of %s.'),
 | 
			
		||||
                               name, (added, 'time'), (subtracted, 'time'),
 | 
			
		||||
                               total)
 | 
			
		||||
                irc.reply(s)
 | 
			
		||||
@ -309,7 +312,8 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
                    s += neutral
 | 
			
		||||
                irc.reply(s + '.')
 | 
			
		||||
            else:
 | 
			
		||||
                irc.reply('I didn\'t know the karma for any of those things.')
 | 
			
		||||
                irc.reply(_('I didn\'t know the karma for any of those '
 | 
			
		||||
                            'things.'))
 | 
			
		||||
        else: # No name was given.  Return the top/bottom N karmas.
 | 
			
		||||
            limit = self.registryValue('rankingDisplay', channel)
 | 
			
		||||
            top = self.db.top(channel, limit)
 | 
			
		||||
@ -318,21 +322,22 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
            lowest = [format('%q (%s)', s, t)
 | 
			
		||||
                      for (s, t) in self.db.bottom(channel, limit)]
 | 
			
		||||
            if not (highest and lowest):
 | 
			
		||||
                irc.error('I have no karma for this channel.')
 | 
			
		||||
                irc.error(_('I have no karma for this channel.'))
 | 
			
		||||
                return
 | 
			
		||||
            rank = self.db.rank(channel, msg.nick)
 | 
			
		||||
            if rank is not None:
 | 
			
		||||
                total = self.db.size(channel)
 | 
			
		||||
                rankS = format('  You (%s) are ranked %i out of %i.',
 | 
			
		||||
                rankS = format(_('  You (%s) are ranked %i out of %i.'),
 | 
			
		||||
                               msg.nick, rank, total)
 | 
			
		||||
            else:
 | 
			
		||||
                rankS = ''
 | 
			
		||||
            s = format('Highest karma: %L.  Lowest karma: %L.%s',
 | 
			
		||||
            s = format(_('Highest karma: %L.  Lowest karma: %L.%s'),
 | 
			
		||||
                       highest, lowest, rankS)
 | 
			
		||||
            irc.reply(s)
 | 
			
		||||
    karma = wrap(karma, ['channel', any('something')])
 | 
			
		||||
 | 
			
		||||
    _mostAbbrev = utils.abbrev(['increased', 'decreased', 'active'])
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def most(self, irc, msg, args, channel, kind):
 | 
			
		||||
        """[<channel>] {increased,decreased,active}
 | 
			
		||||
 | 
			
		||||
@ -346,10 +351,11 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
            L = [format('%q: %i', name, i) for (name, i) in L]
 | 
			
		||||
            irc.reply(format('%L', L))
 | 
			
		||||
        else:
 | 
			
		||||
            irc.error('I have no karma for this channel.')
 | 
			
		||||
            irc.error(_('I have no karma for this channel.'))
 | 
			
		||||
    most = wrap(most, ['channel',
 | 
			
		||||
                       ('literal', ['increased', 'decreased', 'active'])])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def clear(self, irc, msg, args, channel, name):
 | 
			
		||||
        """[<channel>] <name>
 | 
			
		||||
 | 
			
		||||
@ -359,6 +365,7 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
        irc.replySuccess()
 | 
			
		||||
    clear = wrap(clear, [('checkChannelCapability', 'op'), 'text'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def dump(self, irc, msg, args, channel, filename):
 | 
			
		||||
        """[<channel>] <filename>
 | 
			
		||||
 | 
			
		||||
@ -370,6 +377,7 @@ class Karma(callbacks.Plugin):
 | 
			
		||||
        irc.replySuccess()
 | 
			
		||||
    dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def load(self, irc, msg, args, channel, filename):
 | 
			
		||||
        """[<channel>] <filename>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Lart')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -42,10 +44,10 @@ def configure(advanced):
 | 
			
		||||
Lart = conf.registerPlugin('Lart')
 | 
			
		||||
# This is where your configuration variables (if any) should go.  For example:
 | 
			
		||||
# conf.registerGlobalValue(Lart, 'someConfigVariableName',
 | 
			
		||||
#     registry.Boolean(False, """Help for someConfigVariableName."""))
 | 
			
		||||
#     registry.Boolean(False, _("""Help for someConfigVariableName.""")))
 | 
			
		||||
conf.registerChannelValue(Lart, 'showIds',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the bot will show the ids of
 | 
			
		||||
    a lart when the lart is given."""))
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the bot will show the ids
 | 
			
		||||
    of a lart when the lart is given.""")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										54
									
								
								plugins/Lart/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								plugins/Lart/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,54 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: config.py:49
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the bot will show the ids\n"
 | 
			
		||||
"    of a lart when the lart is given."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:48
 | 
			
		||||
msgid "Larts must contain $who."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:52
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<channel>] [<id>] <who|what> [for <reason>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Uses the Luser Attitude Readjustment Tool on <who|what> (for <reason>,\n"
 | 
			
		||||
"        if given).  If <id> is given, uses that specific lart.  <channel> is\n"
 | 
			
		||||
"        only necessary if the message isn't sent in the channel itself.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:66
 | 
			
		||||
msgid "There is no lart with id #%i."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:71
 | 
			
		||||
msgid "There are no larts in my database for %s."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:77
 | 
			
		||||
msgid "trying to dis me"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:85
 | 
			
		||||
msgid " for "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,8 @@ import re
 | 
			
		||||
from supybot.commands import *
 | 
			
		||||
import supybot.plugins as plugins
 | 
			
		||||
import supybot.ircutils as ircutils
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Lart')
 | 
			
		||||
 | 
			
		||||
class Lart(plugins.ChannelIdDatabasePlugin):
 | 
			
		||||
    _meRe = re.compile(r'\bme\b', re.I)
 | 
			
		||||
@ -43,8 +45,9 @@ class Lart(plugins.ChannelIdDatabasePlugin):
 | 
			
		||||
 | 
			
		||||
    def addValidator(self, irc, text):
 | 
			
		||||
        if '$who' not in text:
 | 
			
		||||
            irc.error('Larts must contain $who.', Raise=True)
 | 
			
		||||
            irc.error(_('Larts must contain $who.'), Raise=True)
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def lart(self, irc, msg, args, channel, id, text):
 | 
			
		||||
        """[<channel>] [<id>] <who|what> [for <reason>]
 | 
			
		||||
 | 
			
		||||
@ -60,18 +63,18 @@ class Lart(plugins.ChannelIdDatabasePlugin):
 | 
			
		||||
            try:
 | 
			
		||||
                lart = self.db.get(channel, id)
 | 
			
		||||
            except KeyError:
 | 
			
		||||
                irc.error(format('There is no lart with id #%i.', id))
 | 
			
		||||
                irc.error(format(_('There is no lart with id #%i.'), id))
 | 
			
		||||
                return
 | 
			
		||||
        else:
 | 
			
		||||
            lart = self.db.random(channel)
 | 
			
		||||
            if not lart:
 | 
			
		||||
                irc.error(format('There are no larts in my database '
 | 
			
		||||
                                 'for %s.', channel))
 | 
			
		||||
                irc.error(format(_('There are no larts in my database '
 | 
			
		||||
                                 'for %s.'), channel))
 | 
			
		||||
                return
 | 
			
		||||
        text = lart.text
 | 
			
		||||
        if ircutils.strEqual(target, irc.nick):
 | 
			
		||||
            target = msg.nick
 | 
			
		||||
            reason = self._replaceFirstPerson('trying to dis me', irc.nick)
 | 
			
		||||
            reason = self._replaceFirstPerson(_('trying to dis me'), irc.nick)
 | 
			
		||||
        else:
 | 
			
		||||
            target = self._replaceFirstPerson(target, msg.nick)
 | 
			
		||||
            reason = self._replaceFirstPerson(reason, msg.nick)
 | 
			
		||||
@ -79,7 +82,7 @@ class Lart(plugins.ChannelIdDatabasePlugin):
 | 
			
		||||
            target = target.rstrip('.')
 | 
			
		||||
        text = text.replace('$who', target)
 | 
			
		||||
        if reason:
 | 
			
		||||
            text += ' for ' + reason
 | 
			
		||||
            text += _(' for ') + reason
 | 
			
		||||
        if self.registryValue('showIds', channel):
 | 
			
		||||
            text += format(' (#%i)', lart.id)
 | 
			
		||||
        irc.reply(text, action=True)
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Later')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by setup.py to configure this module.  Advanced is
 | 
			
		||||
@ -40,10 +42,11 @@ def configure(advanced):
 | 
			
		||||
 | 
			
		||||
Later = conf.registerPlugin('Later')
 | 
			
		||||
conf.registerGlobalValue(Later, 'maximum',
 | 
			
		||||
    registry.NonNegativeInteger(0, """Determines the maximum number of messages
 | 
			
		||||
    to be queued for a user.  If this value is 0, there is no maximum."""))
 | 
			
		||||
    registry.NonNegativeInteger(0, _("""Determines the maximum number of
 | 
			
		||||
    messages to be queued for a user.  If this value is 0, there is no maximum.
 | 
			
		||||
    """)))
 | 
			
		||||
conf.registerGlobalValue(Later, 'private',
 | 
			
		||||
    registry.Boolean(True, """Determines whether users will be notified in the
 | 
			
		||||
    first place in which they're seen, or in private."""))
 | 
			
		||||
    registry.Boolean(True, _("""Determines whether users will be notified in
 | 
			
		||||
    the first place in which they're seen, or in private.""")))
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										101
									
								
								plugins/Later/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								plugins/Later/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,101 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: config.py:45
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the maximum number of\n"
 | 
			
		||||
"    messages to be queued for a user.  If this value is 0, there is no maximum.\n"
 | 
			
		||||
"    "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:49
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether users will be notified in\n"
 | 
			
		||||
"    the first place in which they're seen, or in private."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:47
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"Used to do things later; currently, it only allows the sending of\n"
 | 
			
		||||
"    nick-based notes.  Do note (haha!) that these notes are *not* private\n"
 | 
			
		||||
"    and don't even pretend to be; if you want such features, consider using the\n"
 | 
			
		||||
"    Note plugin."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:87
 | 
			
		||||
msgid "just now"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:108
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<nick> <text>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Tells <nick> <text> the next time <nick> is in seen.  <nick> can\n"
 | 
			
		||||
"        contain wildcard characters, and the first matching nick will be\n"
 | 
			
		||||
"        given the note.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:115
 | 
			
		||||
msgid "I can't send notes to myself."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:121
 | 
			
		||||
msgid "That person's message queue is already full."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:126
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<nick>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        If <nick> is given, replies with what notes are waiting on <nick>,\n"
 | 
			
		||||
"        otherwise, replies with the nicks that have notes waiting for them.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:137
 | 
			
		||||
msgid "I have no notes for that nick."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:142
 | 
			
		||||
msgid "I currently have notes waiting for %L."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:145
 | 
			
		||||
msgid "I have no notes waiting to be delivered."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:150
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<nick>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Removes the notes waiting on <nick>.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:159
 | 
			
		||||
msgid "There were no notes for %r"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:183
 | 
			
		||||
msgid "Sent %s: <%s> %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -38,8 +38,11 @@ from supybot.commands import *
 | 
			
		||||
import supybot.ircmsgs as ircmsgs
 | 
			
		||||
import supybot.ircutils as ircutils
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Later')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@internationalizeDocstring
 | 
			
		||||
class Later(callbacks.Plugin):
 | 
			
		||||
    """Used to do things later; currently, it only allows the sending of
 | 
			
		||||
    nick-based notes.  Do note (haha!) that these notes are *not* private
 | 
			
		||||
@ -81,7 +84,7 @@ class Later(callbacks.Plugin):
 | 
			
		||||
        try:
 | 
			
		||||
            return utils.timeElapsed(diff, seconds=False) + ' ago'
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            return 'just now'
 | 
			
		||||
            return _('just now')
 | 
			
		||||
 | 
			
		||||
    def _addNote(self, nick, whence, text, at=None, maximum=None):
 | 
			
		||||
        if at is None:
 | 
			
		||||
@ -100,6 +103,7 @@ class Later(callbacks.Plugin):
 | 
			
		||||
            self.wildcards.append(nick)
 | 
			
		||||
        self._flushNotes()
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def tell(self, irc, msg, args, nick, text):
 | 
			
		||||
        """<nick> <text>
 | 
			
		||||
 | 
			
		||||
@ -108,15 +112,16 @@ class Later(callbacks.Plugin):
 | 
			
		||||
        given the note.
 | 
			
		||||
        """
 | 
			
		||||
        if ircutils.strEqual(nick, irc.nick):
 | 
			
		||||
            irc.error('I can\'t send notes to myself.')
 | 
			
		||||
            irc.error(_('I can\'t send notes to myself.'))
 | 
			
		||||
            return
 | 
			
		||||
        try:
 | 
			
		||||
            self._addNote(nick, msg.nick, text)
 | 
			
		||||
            irc.replySuccess()
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            irc.error('That person\'s message queue is already full.')
 | 
			
		||||
            irc.error(_('That person\'s message queue is already full.'))
 | 
			
		||||
    tell = wrap(tell, ['something', 'text'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def notes(self, irc, msg, args, nick):
 | 
			
		||||
        """[<nick>]
 | 
			
		||||
 | 
			
		||||
@ -129,17 +134,18 @@ class Later(callbacks.Plugin):
 | 
			
		||||
                         for (when, whence, note) in self._notes[nick]]
 | 
			
		||||
                irc.reply(format('%L', notes))
 | 
			
		||||
            else:
 | 
			
		||||
                irc.error('I have no notes for that nick.')
 | 
			
		||||
                irc.error(_('I have no notes for that nick.'))
 | 
			
		||||
        else:
 | 
			
		||||
            nicks = self._notes.keys()
 | 
			
		||||
            if nicks:
 | 
			
		||||
                utils.sortBy(ircutils.toLower, nicks)
 | 
			
		||||
                irc.reply(format('I currently have notes waiting for %L.',
 | 
			
		||||
                irc.reply(format(_('I currently have notes waiting for %L.'),
 | 
			
		||||
                                 nicks))
 | 
			
		||||
            else:
 | 
			
		||||
                irc.error('I have no notes waiting to be delivered.')
 | 
			
		||||
                irc.error(_('I have no notes waiting to be delivered.'))
 | 
			
		||||
    notes = wrap(notes, [additional('something')])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def remove(self, irc, msg, args, nick):
 | 
			
		||||
        """<nick>
 | 
			
		||||
 | 
			
		||||
@ -150,7 +156,7 @@ class Later(callbacks.Plugin):
 | 
			
		||||
            self._flushNotes()
 | 
			
		||||
            irc.replySuccess()
 | 
			
		||||
        except KeyError:
 | 
			
		||||
            irc.error('There were no notes for %r' % nick)
 | 
			
		||||
            irc.error(_('There were no notes for %r') % nick)
 | 
			
		||||
    remove = wrap(remove, [('checkCapability', 'admin'), 'something'])
 | 
			
		||||
 | 
			
		||||
    def doPrivmsg(self, irc, msg):
 | 
			
		||||
@ -174,7 +180,7 @@ class Later(callbacks.Plugin):
 | 
			
		||||
            self._flushNotes()
 | 
			
		||||
 | 
			
		||||
    def _formatNote(self, when, whence, note):
 | 
			
		||||
        return 'Sent %s: <%s> %s' % (self._timestamp(when), whence, note)
 | 
			
		||||
        return _('Sent %s: <%s> %s') % (self._timestamp(when), whence, note)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Limiter')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -41,17 +43,17 @@ def configure(advanced):
 | 
			
		||||
 | 
			
		||||
Limiter = conf.registerPlugin('Limiter')
 | 
			
		||||
conf.registerChannelValue(Limiter, 'enable',
 | 
			
		||||
    registry.Boolean(False, """Determines whether the bot will maintain the
 | 
			
		||||
    registry.Boolean(False, _("""Determines whether the bot will maintain the
 | 
			
		||||
    channel limit to be slightly above the current number of people in the
 | 
			
		||||
    channel, in order to make clone/drone attacks harder."""))
 | 
			
		||||
    channel, in order to make clone/drone attacks harder.""")))
 | 
			
		||||
conf.registerChannelValue(Limiter, 'minimumExcess',
 | 
			
		||||
    registry.PositiveInteger(5, """Determines the minimum number of free
 | 
			
		||||
    registry.PositiveInteger(5, _("""Determines the minimum number of free
 | 
			
		||||
    spots that will be saved when limits are being enforced.  This should
 | 
			
		||||
    always be smaller than supybot.plugins.Limiter.limit.maximumExcess."""))
 | 
			
		||||
    always be smaller than supybot.plugins.Limiter.limit.maximumExcess.""")))
 | 
			
		||||
conf.registerChannelValue(Limiter, 'maximumExcess',
 | 
			
		||||
    registry.PositiveInteger(10, """Determines the maximum number of free spots
 | 
			
		||||
    registry.PositiveInteger(10, _("""Determines the maximum number of free spots
 | 
			
		||||
    that will be saved when limits are being enforced.  This should always be
 | 
			
		||||
    larger than supybot.plugins.Limiter.limit.minimumExcess."""))
 | 
			
		||||
    larger than supybot.plugins.Limiter.limit.minimumExcess.""")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										50
									
								
								plugins/Limiter/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								plugins/Limiter/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,50 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: config.py:46
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether the bot will maintain the\n"
 | 
			
		||||
"    channel limit to be slightly above the current number of people in the\n"
 | 
			
		||||
"    channel, in order to make clone/drone attacks harder."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:50
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the minimum number of free\n"
 | 
			
		||||
"    spots that will be saved when limits are being enforced.  This should\n"
 | 
			
		||||
"    always be smaller than supybot.plugins.Limiter.limit.maximumExcess."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: config.py:54
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines the maximum number of free spots\n"
 | 
			
		||||
"    that will be saved when limits are being enforced.  This should always be\n"
 | 
			
		||||
"    larger than supybot.plugins.Limiter.limit.minimumExcess."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:40
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"In order to use this plugin, its config values need to be properly\n"
 | 
			
		||||
"    setup.  supybot.plugins.Limiter.enable needs to be set to True and\n"
 | 
			
		||||
"    supybot.plugins.Limiter.{maximumExcess,minimumExcess} should be set to\n"
 | 
			
		||||
"    values appropriate to your channel (if the defaults aren't satisfactory.\n"
 | 
			
		||||
"    Once these are set, and someone enters/leaves the channel, Supybot will\n"
 | 
			
		||||
"    start setting the proper +l modes.\n"
 | 
			
		||||
"    "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -32,8 +32,10 @@ from supybot.commands import *
 | 
			
		||||
import supybot.ircmsgs as ircmsgs
 | 
			
		||||
import supybot.ircutils as ircutils
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Limiter')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@internationalizeDocstring
 | 
			
		||||
class Limiter(callbacks.Plugin):
 | 
			
		||||
    """In order to use this plugin, its config values need to be properly
 | 
			
		||||
    setup.  supybot.plugins.Limiter.enable needs to be set to True and
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,8 @@
 | 
			
		||||
 | 
			
		||||
import supybot.conf as conf
 | 
			
		||||
import supybot.registry as registry
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Math')
 | 
			
		||||
 | 
			
		||||
def configure(advanced):
 | 
			
		||||
    # This will be called by supybot to configure this module.  advanced is
 | 
			
		||||
@ -42,7 +44,7 @@ def configure(advanced):
 | 
			
		||||
Math = conf.registerPlugin('Math')
 | 
			
		||||
# This is where your configuration variables (if any) should go.  For example:
 | 
			
		||||
# conf.registerGlobalValue(Math, 'someConfigVariableName',
 | 
			
		||||
#     registry.Boolean(False, """Help for someConfigVariableName."""))
 | 
			
		||||
#     registry.Boolean(False, _("""Help for someConfigVariableName.""")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										129
									
								
								plugins/Math/messages.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								plugins/Math/messages.pot
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,129 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR ORGANIZATION
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=CHARSET\n"
 | 
			
		||||
"Content-Transfer-Encoding: ENCODING\n"
 | 
			
		||||
"Generated-By: pygettext.py 1.5\n"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#: plugin.py:52
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<fromBase> [<toBase>] <number>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Converts <number> from base <fromBase> to base <toBase>.\n"
 | 
			
		||||
"        If <toBase> is left out, it converts to decimal.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:63
 | 
			
		||||
msgid "Invalid <number> for base %s: %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:69
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid "Convert a decimal number to another base; returns a string."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:90
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"Convert a number from any base, 2 through 36, to any other\n"
 | 
			
		||||
"        base, 2 through 36. Returns a string."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:157
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<math expression>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the value of the evaluated <math expression>.  The syntax is\n"
 | 
			
		||||
"        Python syntax; the type of arithmetic is floating point.  Floating\n"
 | 
			
		||||
"        point arithmetic is used in order to prevent a user from being able to\n"
 | 
			
		||||
"        crash to the bot with something like '10**10**10**10'.  One consequence\n"
 | 
			
		||||
"        is that large values such as '10**24' might not be exact.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:166 plugin.py:220
 | 
			
		||||
msgid "There's really no reason why you should have underscores or brackets in your mathematical expression.  Please remove them."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:172 plugin.py:228
 | 
			
		||||
msgid "You can't use lambda in this command."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:202 plugin.py:236
 | 
			
		||||
msgid "The answer exceeded %s or so."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:204 plugin.py:238
 | 
			
		||||
msgid "Something in there wasn't a valid number."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:206 plugin.py:240
 | 
			
		||||
msgid "%s is not a defined function."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:213
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<math expression>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        This is the same as the calc command except that it allows integer\n"
 | 
			
		||||
"        math, and can thus cause the bot to suck up CPU.  Hence it requires\n"
 | 
			
		||||
"        the 'trusted' capability to use.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:250
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"<rpn math expression>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Returns the value of an RPN expression.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:275
 | 
			
		||||
msgid "Not enough arguments for %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:288
 | 
			
		||||
msgid "%q is not a defined function."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:295
 | 
			
		||||
msgid "Stack: [%s]"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:299
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
"[<number>] <unit> to <other unit>\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        Converts from <unit> to <other unit>. If number isn't given, it\n"
 | 
			
		||||
"        defaults to 1. For unit information, see 'units' command.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: plugin.py:314
 | 
			
		||||
#, docstring
 | 
			
		||||
msgid ""
 | 
			
		||||
" [<type>]\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"        With no arguments, returns a list of measurement types, which can be\n"
 | 
			
		||||
"        passed as arguments. When called with a type as an argument, returns\n"
 | 
			
		||||
"        the units of that type.\n"
 | 
			
		||||
"        "
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -39,12 +39,15 @@ import string
 | 
			
		||||
import supybot.utils as utils
 | 
			
		||||
from supybot.commands import *
 | 
			
		||||
import supybot.callbacks as callbacks
 | 
			
		||||
from supybot.i18n import PluginInternationalization, internationalizeDocstring
 | 
			
		||||
_ = PluginInternationalization('Math')
 | 
			
		||||
 | 
			
		||||
convertcore = utils.python.universalImport('local.convertcore')
 | 
			
		||||
 | 
			
		||||
baseArg = ('int', 'base', lambda i: i <= 36)
 | 
			
		||||
 | 
			
		||||
class Math(callbacks.Plugin):
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def base(self, irc, msg, args, frm, to, number):
 | 
			
		||||
        """<fromBase> [<toBase>] <number>
 | 
			
		||||
 | 
			
		||||
@ -57,7 +60,7 @@ class Math(callbacks.Plugin):
 | 
			
		||||
        try:
 | 
			
		||||
            irc.reply(self._convertBaseToBase(number, to, frm))
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            irc.error('Invalid <number> for base %s: %s' % (frm, number))
 | 
			
		||||
            irc.error(_('Invalid <number> for base %s: %s') % (frm, number))
 | 
			
		||||
    base = wrap(base, [('int', 'base', lambda i: 2 <= i <= 36),
 | 
			
		||||
                       optional(('int', 'base', lambda i: 2 <= i <= 36), 10),
 | 
			
		||||
                       additional('something')])
 | 
			
		||||
@ -149,6 +152,7 @@ class Math(callbacks.Plugin):
 | 
			
		||||
    # Then we delete all square brackets, underscores, and whitespace, so no
 | 
			
		||||
    # one can do list comprehensions or call __...__ functions.
 | 
			
		||||
    ###
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def calc(self, irc, msg, args, text):
 | 
			
		||||
        """<math expression>
 | 
			
		||||
 | 
			
		||||
@ -159,13 +163,13 @@ class Math(callbacks.Plugin):
 | 
			
		||||
        is that large values such as '10**24' might not be exact.
 | 
			
		||||
        """
 | 
			
		||||
        if text != text.translate(utils.str.chars, '_[]'):
 | 
			
		||||
            irc.error('There\'s really no reason why you should have '
 | 
			
		||||
            irc.error(_('There\'s really no reason why you should have '
 | 
			
		||||
                           'underscores or brackets in your mathematical '
 | 
			
		||||
                           'expression.  Please remove them.')
 | 
			
		||||
                           'expression.  Please remove them.'))
 | 
			
		||||
            return
 | 
			
		||||
        #text = text.translate(utils.str.chars, '_[] \t')
 | 
			
		||||
        if 'lambda' in text:
 | 
			
		||||
            irc.error('You can\'t use lambda in this command.')
 | 
			
		||||
            irc.error(_('You can\'t use lambda in this command.'))
 | 
			
		||||
            return
 | 
			
		||||
        text = text.lower()
 | 
			
		||||
        def handleMatch(m):
 | 
			
		||||
@ -195,15 +199,16 @@ class Math(callbacks.Plugin):
 | 
			
		||||
            irc.reply(self._complexToString(x))
 | 
			
		||||
        except OverflowError:
 | 
			
		||||
            maxFloat = math.ldexp(0.9999999999999999, 1024)
 | 
			
		||||
            irc.error('The answer exceeded %s or so.' % maxFloat)
 | 
			
		||||
            irc.error(_('The answer exceeded %s or so.') % maxFloat)
 | 
			
		||||
        except TypeError:
 | 
			
		||||
            irc.error('Something in there wasn\'t a valid number.')
 | 
			
		||||
            irc.error(_('Something in there wasn\'t a valid number.'))
 | 
			
		||||
        except NameError, e:
 | 
			
		||||
            irc.error('%s is not a defined function.' % str(e).split()[1])
 | 
			
		||||
            irc.error(_('%s is not a defined function.') % str(e).split()[1])
 | 
			
		||||
        except Exception, e:
 | 
			
		||||
            irc.error(str(e))
 | 
			
		||||
    calc = wrap(calc, ['text'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def icalc(self, irc, msg, args, text):
 | 
			
		||||
        """<math expression>
 | 
			
		||||
 | 
			
		||||
@ -212,15 +217,15 @@ class Math(callbacks.Plugin):
 | 
			
		||||
        the 'trusted' capability to use.
 | 
			
		||||
        """
 | 
			
		||||
        if text != text.translate(utils.str.chars, '_[]'):
 | 
			
		||||
            irc.error('There\'s really no reason why you should have '
 | 
			
		||||
            irc.error(_('There\'s really no reason why you should have '
 | 
			
		||||
                           'underscores or brackets in your mathematical '
 | 
			
		||||
                           'expression.  Please remove them.')
 | 
			
		||||
                           'expression.  Please remove them.'))
 | 
			
		||||
            return
 | 
			
		||||
        # This removes spaces, too, but we'll leave the removal of _[] for
 | 
			
		||||
        # safety's sake.
 | 
			
		||||
        text = text.translate(utils.str.chars, '_[] \t')
 | 
			
		||||
        if 'lambda' in text:
 | 
			
		||||
            irc.error('You can\'t use lambda in this command.')
 | 
			
		||||
            irc.error(_('You can\'t use lambda in this command.'))
 | 
			
		||||
            return
 | 
			
		||||
        text = text.replace('lambda', '')
 | 
			
		||||
        try:
 | 
			
		||||
@ -228,11 +233,11 @@ class Math(callbacks.Plugin):
 | 
			
		||||
            irc.reply(str(eval(text, self._mathEnv, self._mathEnv)))
 | 
			
		||||
        except OverflowError:
 | 
			
		||||
            maxFloat = math.ldexp(0.9999999999999999, 1024)
 | 
			
		||||
            irc.error('The answer exceeded %s or so.' % maxFloat)
 | 
			
		||||
            irc.error(_('The answer exceeded %s or so.') % maxFloat)
 | 
			
		||||
        except TypeError:
 | 
			
		||||
            irc.error('Something in there wasn\'t a valid number.')
 | 
			
		||||
            irc.error(_('Something in there wasn\'t a valid number.'))
 | 
			
		||||
        except NameError, e:
 | 
			
		||||
            irc.error('%s is not a defined function.' % str(e).split()[1])
 | 
			
		||||
            irc.error(_('%s is not a defined function.') % str(e).split()[1])
 | 
			
		||||
        except Exception, e:
 | 
			
		||||
            irc.error(utils.exnToString(e))
 | 
			
		||||
    icalc = wrap(icalc, [('checkCapability', 'trusted'), 'text'])
 | 
			
		||||
@ -267,7 +272,7 @@ class Math(callbacks.Plugin):
 | 
			
		||||
                            except TypeError:
 | 
			
		||||
                                pass
 | 
			
		||||
                        if not called:
 | 
			
		||||
                            irc.error('Not enough arguments for %s' % arg)
 | 
			
		||||
                            irc.error(_('Not enough arguments for %s') % arg)
 | 
			
		||||
                            return
 | 
			
		||||
                    else:
 | 
			
		||||
                        stack.append(f)
 | 
			
		||||
@ -280,14 +285,16 @@ class Math(callbacks.Plugin):
 | 
			
		||||
                    try:
 | 
			
		||||
                        stack.append(eval(s, self._mathEnv, self._mathEnv))
 | 
			
		||||
                    except SyntaxError:
 | 
			
		||||
                        irc.error(format('%q is not a defined function.', arg))
 | 
			
		||||
                        irc.error(format(_('%q is not a defined function.'),
 | 
			
		||||
                                         arg))
 | 
			
		||||
                        return
 | 
			
		||||
        if len(stack) == 1:
 | 
			
		||||
            irc.reply(str(self._complexToString(complex(stack[0]))))
 | 
			
		||||
        else:
 | 
			
		||||
            s = ', '.join(map(self._complexToString, map(complex, stack)))
 | 
			
		||||
            irc.reply('Stack: [%s]' % s)
 | 
			
		||||
            irc.reply(_('Stack: [%s]') % s)
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def convert(self, irc, msg, args, number, unit1, unit2):
 | 
			
		||||
        """[<number>] <unit> to <other unit>
 | 
			
		||||
 | 
			
		||||
@ -302,6 +309,7 @@ class Math(callbacks.Plugin):
 | 
			
		||||
            irc.error(str(ude))
 | 
			
		||||
    convert = wrap(convert, [optional('float', 1.0),'something','to','text'])
 | 
			
		||||
 | 
			
		||||
    @internationalizeDocstring
 | 
			
		||||
    def units(self, irc, msg, args, type):
 | 
			
		||||
        """ [<type>]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user