Class: Cinch::Target
Overview
Instance Attribute Summary collapse
- #bot ⇒ Bot readonly
- #name ⇒ String readonly
Instance Method Summary collapse
- #<=>(other) ⇒ -1, ...
-
#action(text) ⇒ void
Invoke an action (/me) in/to the target.
- #concretize ⇒ Object
-
#ctcp(message) ⇒ void
Send a CTCP to the target.
- #eql?(other) ⇒ Boolean
-
#initialize(name, bot) ⇒ Target
constructor
A new instance of Target.
-
#notice(text) ⇒ void
Sends a NOTICE to the target.
-
#safe_action(text) ⇒ void
Like #action, but remove any non-printable characters from ‘text`.
-
#safe_notice(text) ⇒ Object
Like #safe_msg but for notices.
- #safe_privmsg(*args) ⇒ Object deprecated Deprecated.
-
#safe_send(text, notice = false) ⇒ void
(also: #safe_msg)
Like #send, but remove any non-printable characters from ‘text`.
-
#send(text, notice = false) ⇒ void
(also: #msg, #privmsg)
Sends a PRIVMSG to the target.
Constructor Details
#initialize(name, bot) ⇒ Target
Returns a new instance of Target.
12 13 14 15 |
# File 'lib/cinch/target.rb', line 12 def initialize(name, bot) @name = name @bot = bot end |
Instance Attribute Details
Instance Method Details
#<=>(other) ⇒ -1, ...
159 160 161 162 163 164 165 166 167 168 |
# File 'lib/cinch/target.rb', line 159 def <=>(other) casemapping = @bot.irc.isupport["CASEMAPPING"] left = @name.irc_downcase(casemapping) if other.is_a?(Target) left <=> other.name.irc_downcase(casemapping) elsif other.is_a?(String) left <=> other.irc_downcase(casemapping) end end |
#action(text) ⇒ void
This method returns an undefined value.
Invoke an action (/me) in/to the target.
115 116 117 118 |
# File 'lib/cinch/target.rb', line 115 def action(text) line = text.to_s.each_line.first.chomp @bot.irc.send("PRIVMSG #{@name} :\001ACTION #{line}\001") end |
#concretize ⇒ Object
144 145 146 147 148 149 150 |
# File 'lib/cinch/target.rb', line 144 def concretize if @bot.isupport["CHANTYPES"].include?(@name[0]) @bot.channel_list.find_ensured(@name) else @bot.user_list.find_ensured(@name) end end |
#ctcp(message) ⇒ void
This method returns an undefined value.
Send a CTCP to the target.
140 141 142 |
# File 'lib/cinch/target.rb', line 140 def ctcp() send "\001#{}\001" end |
#eql?(other) ⇒ Boolean
153 154 155 |
# File 'lib/cinch/target.rb', line 153 def eql?(other) self == other end |
#notice(text) ⇒ void
This method returns an undefined value.
Sends a NOTICE to the target.
22 23 24 |
# File 'lib/cinch/target.rb', line 22 def notice(text) send(text, true) end |
#safe_action(text) ⇒ void
This method returns an undefined value.
Like #action, but remove any non-printable characters from ‘text`. The purpose of this method is to send text from untrusted sources, like other users or feeds.
Note: this will break any mIRC color codes embedded in the string. For more fine-grained control, use Helpers#Sanitize and Formatting.unformat directly.
132 133 134 |
# File 'lib/cinch/target.rb', line 132 def safe_action(text) action(Cinch::Helpers.sanitize(text)) end |
#safe_notice(text) ⇒ Object
Like #safe_msg but for notices.
106 107 108 |
# File 'lib/cinch/target.rb', line 106 def safe_notice(text) safe_send(text, true) end |
#safe_privmsg(*args) ⇒ Object
95 96 97 |
# File 'lib/cinch/target.rb', line 95 def safe_send(text, notice = false) send(Cinch::Helpers.sanitize(text), notice) end |
#safe_send(text, notice = false) ⇒ void Also known as: safe_msg
This method returns an undefined value.
Like #send, but remove any non-printable characters from ‘text`. The purpose of this method is to send text of untrusted sources, like other users or feeds.
Note: this will break any mIRC color codes embedded in the string. For more fine-grained control, use Helpers#Sanitize and Formatting.unformat directly.
80 81 82 |
# File 'lib/cinch/target.rb', line 80 def safe_send(text, notice = false) send(Cinch::Helpers.sanitize(text), notice) end |
#send(text, notice = false) ⇒ void Also known as: msg, privmsg
The aliases ‘msg` and `privmsg` are deprecated and will be removed in a future version.
This method returns an undefined value.
Sends a PRIVMSG to the target.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/cinch/target.rb', line 34 def send(text, notice = false) # TODO deprecate `notice` argument, put splitting into own # method text = text.to_s split_start = @bot.config. || "" split_end = @bot.config. || "" command = notice ? "NOTICE" : "PRIVMSG" prefix = ":#{@bot.mask} #{command} #{@name} :" text.lines.map(&:chomp).each do |line| splitted = (line, prefix, split_start, split_end) splitted[0, (@bot.config. || splitted.size)].each do |string| @bot.irc.send("#{command} #{@name} :#{string}") end end end |