[ Index ]

PHP Cross Reference of Akelos Framework

title

Body

[close]

/AkConverters/ -> AkHtmlToText.php (source)

   1  <?php
   2  /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
   3  
   4  // +----------------------------------------------------------------------+
   5  // | Akelos Framework - http://www.akelos.org                             |
   6  // +----------------------------------------------------------------------+
   7  // | Copyright (c) 2002-2006, Akelos Media, S.L.  & Bermi Ferrer Martinez |
   8  // | Released under the GNU Lesser General Public License, see LICENSE.txt|
   9  // +----------------------------------------------------------------------+
  10  
  11  /**
  12   * @package ActiveSupport
  13   * @subpackage Converters
  14   * @author Bermi Ferrer <bermi a.t akelos c.om>
  15   * @copyright Copyright (c) 2002-2006, Akelos Media, S.L. http://www.akelos.org
  16   * @license GNU Lesser General Public License <http://www.gnu.org/copyleft/lesser.html>
  17   */
  18  
  19  class AkHtmlToText
  20  {
  21      function convert()
  22      {
  23          require_once(AK_VENDOR_DIR.DS.'TextParsers'.DS.'html2text.php');
  24          $Converter = new html2text(true, 0, false);
  25          $markdown = str_replace('__AK:AMP__','&', $Converter->load_string(str_replace('&','__AK:AMP__', $this->source)));
  26  
  27          require_once(AK_VENDOR_DIR.DS.'TextParsers'.DS.'smartypants.php');
  28          $Smartypants = new SmartyPantsTypographer_Parser();
  29          $markdown = Ak::html_entity_decode(strip_tags($Smartypants->transform($markdown)));
  30  
  31          return trim($this->_simplifyMarkdown($markdown));
  32      }
  33  
  34  
  35  
  36      function _simplifyMarkdown($markdown)
  37      {
  38          $markdown = trim($markdown);
  39          if(strstr($markdown,"\n")){
  40              if(preg_match_all('/([ \t]*[#]{1,2})(.*)(\{#[a-z0-9_]+}|$)+/i',$markdown,$matches)){
  41                  foreach ($matches[0] as $k=>$match){
  42                      $simple_markdown = trim($matches[2][$k]);
  43                      if($match[0] == '#'){
  44                          if($simple_markdown[0] == '#'){ // h3, h4, h5
  45                              $markdown = str_replace($match,'##'.$simple_markdown,$markdown);
  46                          }else{
  47                              $separator = strlen($matches[1][$k]) === 1 ? '=' : '-';
  48                              $simple_markdown .= "\n".str_repeat($separator,strlen($simple_markdown));
  49                              $markdown = str_replace($match,$simple_markdown,$markdown);
  50                          }
  51                      }
  52                  }
  53              }
  54          }
  55          return $markdown;
  56      }
  57  }
  58  
  59  ?>


Generated: Mon Oct 27 12:43:49 2008 Cross-referenced by PHPXref 0.6