Как я могу заставить один (method | function | IDK) в Ruby делать то же самое, что и другой? - PullRequest
0 голосов
/ 20 мая 2011

Выезд https://github.com/ip2k/earthquake/blob/master/lib/earthquake/commands.rb#L106.

Я хочу сделать в основном alias :rt :retweet, но это не работает

command %r|^:retweet\s+(\d+)$|, :as => :retweet do |m|
  target = twitter.status(m[1])
  if confirm("retweet 'RT @#{target["user"]["screen_name"]}: #{target["text"]}'")
    async_e { twitter.retweet(m[1]) }
  end
end

command %r|^:retweet\s+(\d+)\s+(.*)$|, :as => :retweet do |m|
  target = twitter.status(m[1])
  text = "#{m[2]} #{config[:quotetweet] ? "QT" : "RT"} @#{target["user"]  ["screen_name"]}: #{target["text"]} (#{target["id"]})"
  if confirm("unofficial retweet '#{text}'")
    async_e { twitter.update(text) }
  end
end

Как я могу заставить :rt сделать то же самое, что и :retweet, без переопределения всего этого блока, но с :rt вместо :retweet (что я сделал, чтобы заставить его работать, но это не так хорошее решение, и я знаю, что должен быть лучший путь).

1 Ответ

0 голосов
/ 21 мая 2011

Здесь определен метод command:

https://github.com/ip2k/earthquake/blob/master/lib/earthquake/input.rb#L44

Если вы посмотрите на тело, похоже, что вам просто нужно пропустить блок, чтобы создать псевдоним:

command %r|^:retweet\s+(\d+)$|, :as => :rt
...