Aleksander Machniak
2014-05-12 1053ae5e729203b16d792c53640b6273feed2056
Merge branch 'dev-text2html' of github.com:roundcube/roundcubemail into dev-text2html
1 files modified
27 ■■■■■ changed files
program/lib/Roundcube/rcube_text2html.php 27 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_text2html.php
@@ -163,7 +163,7 @@
        // find/mark quoted lines...
        for ($n=0, $cnt=count($text); $n < $cnt; $n++) {
            $flowed = false;
            if ($this->config['flowed'] && ord($text[0]) == $flowed_char) {
            if ($this->config['flowed'] && ord($text[$n][0]) == $flowed_char) {
                $flowed   = true;
                $text[$n] = substr($text[$n], 1);
            }
@@ -259,17 +259,24 @@
        // replace spaces with non-breaking spaces
        if ($is_flowed) {
            $text = preg_replace_callback('/(^|[^ ])( +)/', function($matches) {
                    if (!strlen($matches[2])) {
                        return str_repeat($nbsp, strlen($matches[2]));
                    }
                    else {
                        return $matches[1] . ' ' . str_repeat($nbsp, strlen($matches[2])-1);
                    }
                }, $text);
            $pos  = 0;
            $diff = 0;
            $len  = strlen($nbsp);
            $copy = $text;
            while (($pos = strpos($text, ' ', $pos)) !== false) {
                if ($pos == 0 || $text[$pos-1] == ' ') {
                    $copy = substr_replace($copy, $nbsp, $pos + $diff, 1);
                    $diff += $len - 1;
                }
                $pos++;
            }
            $text = $copy;
        }
        else {
            $text = str_replace(' ', $nbsp, $text);
            // make the whole line non-breakable
            $text = str_replace(array(' ', '-'), array($nbsp, '-&#8288;'), $text);
        }
        return $text;