end
def body
- definition[1..-1].join.gsub(/\s+/, ' ').strip
+ # two or more consecutive newlines are replaced with double spaces, while single
+ # newlines are replaced with single spaces
+ lb = /\r?\n/
+ definition[1..-1].join.
+ gsub(/\s*(:#{lb}){2,}\s*/, ' ').
+ gsub(/\s*#{lb}\s*/, ' ').strip
end
end
class DictClientPlugin < Plugin
- BotConfig.register BotConfigStringValue.new('dictclient.server',
+ Config.register Config::StringValue.new('dictclient.server',
:default => 'dict.org',
:desc => _('Hostname or hostname:port of the DICT server used to lookup words'))
- BotConfig.register BotConfigIntegerValue.new('dictclient.max_defs_before_collapse',
+ Config.register Config::IntegerValue.new('dictclient.max_defs_before_collapse',
:default => 4,
:desc => _('When multiple databases reply a number of definitions that above this limit, only the database names will be listed. Otherwise, the full definitions from each database are replied'))
- BotConfig.register BotConfigIntegerValue.new('dictclient.max_length_per_def',
+ Config.register Config::IntegerValue.new('dictclient.max_length_per_def',
:default => 200,
:desc => _('Each definition is truncated to this length'))
- BotConfig.register BotConfigStringValue.new('dictclient.headword_format',
+ Config.register Config::StringValue.new('dictclient.headword_format',
:default => "#{Bold}<headword>#{Bold}",
:desc => _('Format of headwords; <word> will be replaced with the actual word'))
- BotConfig.register BotConfigStringValue.new('dictclient.database_format',
+ Config.register Config::StringValue.new('dictclient.database_format',
:default => "#{Underline}<database>#{Underline}",
:desc => _('Format of database names; <database> will be replaced with the database name'))
- BotConfig.register BotConfigStringValue.new('dictclient.definition_format',
+ Config.register Config::StringValue.new('dictclient.definition_format',
:default => '<headword>: <definition> -<database>',
:desc => _('Format of definitions. <word> will be replaced with the formatted headword, <def> will be replaced with the truncated definition, and <database> with the formatted database name'))
- BotConfig.register BotConfigStringValue.new('dictclient.match_format',
+ Config.register Config::StringValue.new('dictclient.match_format',
:default => '<matches>––<database>',
:desc => _('Format of match results. <matches> will be replaced with the formatted headwords, <database> with the formatted database name'))
).gsub(
'<definition>', r.body.truncate(@bot.config['dictclient.max_length_per_def'])
)
- }.join ' '
+ }.join ' | '
end
else
_("No definition for %{phrase} found from %{database}.") %
def cmd_databases(m, params)
with_dict(m) do |d|
m.reply _("Databases: %{list}") % {
- :list => d.show_db.collect {|db, des| "#{format_database db}: #{des}"}.join('; ')
+ :list => d.show_db.collect {|db, des| "#{format_database db}: #{des}"}.join(' | ')
}
end
end
def cmd_strategies(m, params)
with_dict(m) do |d|
m.reply _("Strategies: %{list}") % {
- :list => d.show_strat.collect {|s, des| "#{s}: #{des}"}.join('; ')
+ :list => d.show_strat.collect {|s, des| "#{s}: #{des}"}.join(' | ')
}
end
end