module BuildProposalFilter
Constants
- IRC_BOT_FIT_PATTERN
- OFF_TOPIC_PATTERN
Public Instance Methods
Source
# File lib/build_proposal_filter.rb, line 34 def bot_relevant?(text, plugins_dir: PluginCatalog::DEFAULT_PLUGINS_DIR) prepared = RoomReader.prepare_proposal_text(text) return false if prepared.empty? irc_bot_fit?(prepared) || catalog_relevant?(prepared, plugins_dir: plugins_dir) end
Source
# File lib/build_proposal_filter.rb, line 30 def catalog_relevant?(text, plugins_dir: PluginCatalog::DEFAULT_PLUGINS_DIR, min_score: 1) !!PluginCatalog.find_match(text, plugins_dir: plugins_dir, min_score: min_score) end
Source
# File lib/build_proposal_filter.rb, line 26 def irc_bot_fit?(text) RoomReader.prepare_proposal_text(text).match?(IRC_BOT_FIT_PATTERN) end
Source
# File lib/build_proposal_filter.rb, line 22 def off_topic?(text) RoomReader.prepare_proposal_text(text).match?(OFF_TOPIC_PATTERN) end
Source
# File lib/build_proposal_filter.rb, line 51 def proposable?(text, plugins_dir: PluginCatalog::DEFAULT_PLUGINS_DIR) prepared = RoomReader.prepare_proposal_text(text) return false if prepared.empty? return false if RoomReader.troubleshooting_paste?(prepared) return false if off_topic?(prepared) if (parsed = RoomReader.parse_proposal_slug(prepared)) return false if off_topic?(parsed[:body]) return bot_relevant?(parsed[:body], plugins_dir: plugins_dir) || bot_relevant?(parsed[:slug].tr("_", " "), plugins_dir: plugins_dir) end return false unless RoomReader.plugin_build_request?(prepared) bot_relevant?(prepared, plugins_dir: plugins_dir) end
Source
# File lib/build_proposal_filter.rb, line 41 def staging_candidate?(text) prepared = RoomReader.prepare_proposal_text(text) return false if prepared.empty? return false if RoomReader.troubleshooting_paste?(prepared) return false if off_topic?(prepared) return false unless RoomReader.plugin_build_request?(prepared) bot_relevant?(prepared) end