Age | Commit message (Collapse) | Author |
|
|
|
This makes it easier to understand why the bot is not joining
when join_after_identify is set to true and the bot is not
identifying.
|
|
Since in ruby 1.9 Exception#to_str was removed, change it to to #to_s
|
|
method_defined? doesn't search in private methods, and :bound_targets is
private, so change it to respond_to?(method, include_private=true)
|
|
This reverts commit 4ea25eba02d85b81dcee4302375d7d3e08cd52ac.
Not only the patch was missing an essential part, but Nokogiri is not
compatible enough with Hpricot anyway. Incompatibilities include
doc/"style|script" raising an "Undefined namespace prefix" error and the
non-existence of Hpricot::Elements.
If we want to support Nokogiri we'll need to write code for it on
purpose or redesign the Hpricot code so that it only uses the subset
supported by Nokogiri.
|
|
|
|
|
|
The time parsing refactoring introduced an unpleasant namespace
conflict by defining Utils::Time. Eliminate it by renaming it to
ParseTime
|
|
When LANGUAGE env var is set to empty value, it breaks
gettext in ruby, so we unset it if it's empty.
|
|
Since in 1.9 methods arrays have symbols instead of strings, fix it by
changing into respond_to? and method_defined?
|
|
this monkeypatch doesn't work on 1.9 - Singleton has no _load method
|
|
ruby 1.9's ConditionVariable#wait is not implemented for timeout != nil,
this patch adds an implementation for it (see ruby-core:15847)
Also, since MonitorMixin is included into TCPSocket in rbot, and
TCPSocket#send != Object#send in ruby 1.9, i changed that to use
__send__.
|
|
in 1.9, Integer(nil) raises TypeError, so we change "%d" to "%s"
|
|
changed "string + exception" to "string #{e}", the
former yields 'can't convert <e> into String' in ruby 1.9
|
|
|
|
Array#nitems is gone in ruby 1.9, changed rbot code to use
Array.compact.size, which works in both 1.8 & 1.9
|
|
Add time parsing routines to Utils, to be used for human-to-computer
conversion of time offsets. Refactored and enhanced from the remind
plugin.
|
|
hangman: an unneeded letters accessor was defined
ircbot: restore initializations removed by previous commit
|
|
|
|
|
|
The plugin fallback method is now passed the list of failures.
Failures themselves are encapsulated in their own data type, making it
easier to handle failures that should inform the user with something
more detailed than the classic 'usage' pattern.
It's still up to the fallback method to make use (e.g. echo) the
relevant messages.
|
|
Put #conjoin() in the Enumerable module, so that it can be shared by all
enumerables (e.g. ranges). Since #size() is not necessarily present, its
use is replaced by #count(), the result of which is cached because
it can be slow on objects missing #size().
|
|
|
|
|
|
|
|
All of these modules/plugins were generating warnings like this:
warning: parenthesize argument(s) for future version
This patch should fix all the warnings without affecting functionality.
|
|
When the new IRC framework was introduced, the old @channels Hash and
its accessor for @bot were dismissed.
Reintroduce it for backwards compatibility.
|
|
GetText version 2 has some significant difference from earlier version.
* different syntax to set the default locale path
* different syntax to set non-cached mode
* different way to handle bound targets
Most of the changes are relative to significant functionality split
between the GetText submodules (LocalePath, TextDomain etc), so most of
the changes are just a matter of moving the defines where appropriate.
The bound_targets patch needed to cope with anonymous modules is not
needed with gettext >= 2.0.0
|
|
An auxiliary method to test-run external programs and see if they run
without problem
|
|
safe_exec should be less verbose when reporting problems, since the
output might end up on IRC, and it should return a non-zero error code
when failing, so that $? get set correctly.
|
|
This change allows the use of :defaults in maps to define values for
parameters which are not actually present in the map itself.
We also move the initialization further down, to skip it in case of
early returns.
|
|
We sometimes want to wrap a nonempty String with a given prefix and
postfix. This method makes it a breeze.
|
|
|
|
When a mapping template had a double optional key such as
'something [[double] optional]'
the resuting regexp moved the spacing between the (converted)
double brackets, requiring extra spacing before the 'optional'
keyword.
Fix by moving spacing inside all consecutive brackets before converting
brackets into their regexp form.
|
|
Try loading rubygems as soon as we're set up, since it can be needed for
gettext and a number of other things. This also allows us to get rid of
some stupid convoluted tricks in utils.
|
|
This is to fix a possible bug in newer versions of ruby where _load was
declared private in singletons. This would lead to errors where Marshal
could not restore the Singleton. This "bug" was introduced to ruby
in revisions 16659 and 17396.
|
|
|
|
|
|
|
|
|
|
If the whitelist is not empty, only load the specified plugins.
|
|
Refactor plugin scanning for cleaner distinction between core modules
and plugins.
|
|
into @core_module_dirs and @plugin_dirs
|
|
|
|
expose set and bulk parameters in the each*() iterators. Some plugins
might need it for faster lookup.
|
|
The each_key()/each_value() methods of the accessor relied on the each()
method of the database, wasting I/O bandwidth and time by loading
unnecessary data (particularly when running each_key() on databases with
ridiculously enormous values such as in the markov plugin case).
|
|
|
|
We were making use of an undefined variable e when catching ServerError
in the main loop.
|
|
We provide two methods that make it more simple and elegant for
botmodules to define paths relative to the bot's own directory
(botclass) and to the BotModule's (assumed) non-registry directory.
The first method is Irc::Bot#path(), which joins its arguments with the
botclass. This method can be used to access datafiles in the bot
directory with a much cleaner syntax; and since it uses File.join, the
resulting paths are also properly formatted on each platform, which
doesn't hurt.
Each BotModule now also carries a dirname() method that should return the
directory under botclass that holds the BotModule's datafiles. dirname()
defaults to the BotModule's name(), but it can be overridden, e.g. for
backwards compatibility (see the patch for the quotes plugin), or
for BotModules that share their datafiles.
Datafiles can be accessed using the BotModule#datafile() method that
joins the botclass, the dirname() and whatever other argument is passed.
|
|
Use File.join across the board, and refactor some botclass directory
handling. Most important changes:
* failure to create the registry and safe_save directory is now fatal;
* failure to create the local plugin directory prevents it from being
added to the plugin path (with a warning);
* botclass directory update from templates is now a standalone routine
called during init, making it possible to use it in other cases too.
|