make `i:am`/`we:are` handle multiple identities (`we:are:a:and:b:and:c`) and one-time authorship (`once:i:am:a`)
parent
31d2b16e43
commit
712137fda9
|
@ -422,42 +422,60 @@ class Bangtags
|
||||||
end
|
end
|
||||||
when 'i', 'we'
|
when 'i', 'we'
|
||||||
chunk = nil
|
chunk = nil
|
||||||
next if cmd[1].nil?
|
cmd.shift
|
||||||
case cmd[1].downcase
|
c = cmd.shift
|
||||||
|
next if c.nil?
|
||||||
|
case c.downcase
|
||||||
when 'am', 'are'
|
when 'am', 'are'
|
||||||
who = cmd[2]
|
if cmd[0].blank?
|
||||||
if who.blank?
|
|
||||||
@vars.delete('_they:are')
|
@vars.delete('_they:are')
|
||||||
status.footer = nil
|
status.footer = nil
|
||||||
next
|
next
|
||||||
elsif who == 'not'
|
elsif cmd[0] == 'not'
|
||||||
who = cmd[3]
|
cmd.each do |name|
|
||||||
next if who.blank?
|
name = who.downcase.gsub(/\s+/, '')
|
||||||
name = who.downcase.gsub(/\s+/, '')
|
@vars.delete("_they:are:#{name}")
|
||||||
@vars.delete("_they:are:#{name}")
|
next unless @vars['_they:are'] == name
|
||||||
next unless @vars['_they:are'] == name
|
@vars.delete('_they:are')
|
||||||
@vars.delete('_they:are')
|
status.footer = nil
|
||||||
status.footer = nil
|
end
|
||||||
next
|
next
|
||||||
elsif who == 'list'
|
elsif cmd[0] == 'list'
|
||||||
@status.visibility = :direct
|
@status.visibility = :direct
|
||||||
@status.local_only = true
|
@status.local_only = true
|
||||||
@status.content_type = 'text/markdown'
|
@status.content_type = 'text/markdown'
|
||||||
names = @vars.keys.select { |k| k.start_with?('_they:are:') }
|
names = @vars.keys.select { |k| k.start_with?('_they:are:') }
|
||||||
|
names.delete('_they:are:_several')
|
||||||
names.map! { |k| "<code>#{k[10..-1]}</code> is <em>#{@vars[k]}</em>" }
|
names.map! { |k| "<code>#{k[10..-1]}</code> is <em>#{@vars[k]}</em>" }
|
||||||
@chunks << (["\n# <code>#!</code><code>i:am:list</code>:\n<hr />\n"] + names).join("\n") + "\n"
|
@chunks << (["\n# <code>#!</code><code>i:am:list</code>:\n<hr />\n"] + names).join("\n") + "\n"
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
name = who.downcase.gsub(/\s+/, '').strip
|
if cmd.include?('and')
|
||||||
description = cmd[3..-1].join(':').strip
|
name = '_several'
|
||||||
if description.blank?
|
cmd.delete('and')
|
||||||
if @vars["_they:are:#{name}"].nil?
|
cmd.map! { |who| @vars["_they:are:#{who.downcase.gsub(/\s+/, '').strip}"] }
|
||||||
@vars["_they:are:#{name}"] = who.strip
|
cmd.delete(nil)
|
||||||
|
if cmd.count == 1
|
||||||
|
name = who.downcase.gsub(/\s+/, '').strip
|
||||||
|
@vars["_they:are:#{name}"] = cmd[0]
|
||||||
|
else
|
||||||
|
last = cmd.pop
|
||||||
|
@vars["_they:are:#{name}"] = "#{cmd.join(', ')} and #{last}"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@vars["_they:are:#{name}"] = description
|
who = cmd[0]
|
||||||
|
name = who.downcase.gsub(/\s+/, '').strip
|
||||||
|
description = cmd[1..-1].join(':').strip
|
||||||
|
if description.blank?
|
||||||
|
if @vars["_they:are:#{name}"].nil?
|
||||||
|
@vars["_they:are:#{name}"] = who.strip
|
||||||
|
end
|
||||||
|
else
|
||||||
|
@vars["_they:are:#{name}"] = description
|
||||||
|
end
|
||||||
end
|
end
|
||||||
@vars['_they:are'] = name
|
|
||||||
|
@vars['_they:are'] = name unless @once
|
||||||
status.footer = @vars["_they:are:#{name}"]
|
status.footer = @vars["_they:are:#{name}"]
|
||||||
end
|
end
|
||||||
when 'sharekey'
|
when 'sharekey'
|
||||||
|
|
Loading…
Reference in New Issue