<?php if (!defined('PmWiki')) exit();
/*
 * nopreformatted - Disables he default preformatted text behaviour ofleading white spaces.
 * Copyright 2006 Americo Albuquerque
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 * See http://www.pmwiki.org/wiki/Cookbook/NoPreformattedText for more info.
 */
define('NoPreformatted_VERSION', '2007-01-09');

SDV($EnableNoPreformatted, 1);
SDV($NoPreformattedMarkup, '(:pre:)');

if($EnableNoPreformatted) {
  ## Disable existing Markups
  DisableMarkup('^ws');
  DisableMarkup('^ ');
  
  ## Whitespace at the beginning of lines can be used to maintain the
  ## indent level of a previous list item, but not a preformatted text block.
  ## For a preformatted text block use (:pre:) explicity.
  Markup('^ws', '<^img', '/^(\\s+)/e', "newWSIndent('$1')");
  function newWSIndent($i) {
    global $MarkupFrame;
    $icol = strlen($i);
    for($depth = count(@$MarkupFrame[0]['cs']); $depth > 0; $depth--)
      if (@$MarkupFrame[0]['is'][$depth] == $icol) {
        $MarkupFrame[0]['idep'] = $depth;
        $MarkupFrame[0]['icol'] = $icol;
        return '';
      }
    return "$i";
  }
  
  ## Preformatted text block markup.
  Markup('^ ','block',"/^\s*$NoPreformatedMarkup/",'<:pre,1>');
}