juks (juks) wrote in changelog,
juks
juks
changelog

[livejournal] r17761: LJSUP-7307

Committer: iaskarov
LJSUP-7307
Rules of post parsing

U   trunk/cgi-bin/LJ/Text.pm
Modified: trunk/cgi-bin/LJ/Text.pm
===================================================================
--- trunk/cgi-bin/LJ/Text.pm	2010-11-23 11:39:30 UTC (rev 17760)
+++ trunk/cgi-bin/LJ/Text.pm	2010-11-23 13:10:34 UTC (rev 17761)
@@ -219,6 +219,8 @@
     my $chars = delete $opts{'chars'};
     my $remainder = '';
     my $ellipsis = delete $opts{'ellipsis'} || Encode::encode_utf8("\x{2026}");
+    my $fill_empty = delete $opts{'fill_empty'} ? 1 : 0;
+    my $punct_space = delete $opts{'punct_space'} ? 1 : 0;
 
     confess "unknown options: " . Data::Dumper(\%opts)
         if %opts;
@@ -249,7 +251,7 @@
         $remainder = substr($original_string, $class->byte_len($str));
         $str .= $ellipsis;
     }
-
+	
     if ($chars && $class->char_len($str) > $chars) {
         my $chars_trunc = $chars - $class->char_len($ellipsis);
         $str = $class->truncate(
@@ -259,8 +261,20 @@
 
         $str = $remove_last_word->($str);
         $remainder = substr($original_string, $class->byte_len($str));
+
+        if($punct_space && $str =~ /[,.;:!?]$/) {
+			if($class->char_len($str) >= $chars - 1) {
+		        $str = $remove_last_word->($str);
+		        $remainder = substr($original_string, $class->byte_len($str));
+			} else {
+				$str .= ' ';
+			}   	
+        }
+        
         $str .= $ellipsis;
     }
+    
+    $str ||= $ellipsis if($fill_empty);
 
     $remainder =~ s/^\s+//;
     return wantarray ? ($str, $remainder) : $str;

Tags: juks, livejournal, pm
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments