+ def seen(reg)
+ saw = case reg
+ when Struct::Saw
+ reg # for backwards compatibility
+ when Array
+ reg.last
+ end
+
+ if reg.kind_of? Array
+ before = reg.first
+ end
+
+ formats = {
+ :normal => _("%{nick} was last seen %{when}, %{doing}"),
+ :with_before => _("%{nick} was last seen %{when}, %{doing} and %{time} before %{did_before}")
+ }
+
+ if before && [:PART, :QUIT].include?(saw.type.to_sym) &&
+ [:PUBLIC, :ACTION].include?(before.type.to_sym)
+ did_before = case before.type.to_sym
+ when :PUBLIC
+ _("saying \"%{message}\"")
+ when :ACTION
+ _("doing *%{nick} %{message}*")
+ end % {
+ :nick => saw.nick,
+ :message => before.message
+ }
+
+ format = :with_before
+
+ time_diff = saw.time - before.time
+ if time_diff < 300
+ time_before = _("a moment")
+ elsif time_diff < 3600
+ time_before = _("a while")
+ else
+ format = :normal
+ end
+ else
+ format = :normal
+ end
+
+ nick = saw.nick