package string_helpers; use strict; use warnings; use HTML::Escape 'escape_html'; use Exporter 'import'; our @EXPORT = qw( reltime_to_str greentextify emojify format_username get_mentions_from_content ); sub reltime_to_str { my $since = time() - $_[0]; return $since . 's' if $since < 60; return int($since / 60) . 'm' if $since < 60 * 60; return int($since / (60 * 60)) . 'h' if $since < 60 * 60 * 24; return int($since / (60 * 60 * 24)) . 'd' if $since < 60 * 60 * 24 * 31; return int($since / (60 * 60 * 24 * 31)) . 'mon' if $since < 60 * 60 * 24 * 365; return int($since / (60 * 60 * 24 * 365)) . 'yr'; } sub greentextify { my $text = shift; $text =~ s/((?:^|| )>.*?)(?:|$)/$1<\/span>
/gs; $text =~ s/((?:^|| )<.*?)(?:|$)/$1<\/span>
/gs; $text =~ s/((?:^|| )\^.*?)(?:|$)/$1<\/span>
/gs; $text; } sub emojify { my ($text, $emojis) = @_; if ($emojis) { foreach my $emoji (@{$emojis}) { my $emo = $emoji->{shortcode}; my $url = $emoji->{url}; $text =~ s/:$emo://gsi; } } $text; } sub format_username { my $account = shift; emojify(escape_html($account->{display_name}), $account->{emojis}); } sub get_mentions_from_content { my $status = shift; # todo ""; }