diff --git a/inc/reader.php b/inc/reader.php
index 33ba65b..34851bc 100644
--- a/inc/reader.php
+++ b/inc/reader.php
@@ -4,7 +4,7 @@
* Abap Reader
* @author franzz
*/
-class Reader
+class Reader extends PhpObject
{
//objects
//private $oMask;
@@ -22,6 +22,8 @@ class Reader
function __construct($sCode, $bImprovedColoring = false)
{
+ parent::__construct(__CLASS__, Settings::DEBUG);
+
//settings
$this->bImprovedColoring = $bImprovedColoring;
@@ -135,10 +137,9 @@ class Reader
{
//Safe characters
$sCode = $this->convText2Html($this->sCode);
- $sServName = $_GET['serv_name'];
- $sSafeRexExServName = preg_quote(str_replace('http://', '', $sServName), '/');
-
- $asLines = explode("\n", $sCode);
+
+ //$sServName = $_GET['serv_name'];
+ $asLines = explode("\n", str_replace("\r\n", "\n", $sCode));
$asLineClasses = array();
$iOffSet = 0;
@@ -177,15 +178,28 @@ class Reader
//Enlarge line
//if(mb_strpos($sLine, $sServName) !== false) $sLiClass .= ' bigline';
- //comments (entire line)
- $sCodeClass = (in_array($sFirstChar, $this->getWords('cComment')))?'comment':'code';
-
//Internal & external Urls
$sLine = Toolbox::findReplaceLinks($sLine);
- $asColoredLines[] = '
'.$sExpandButton.''.$sLine.'';
+ //Comments (entire line)
+ $bComment = in_array($sFirstChar, $this->getWords('cComment'));
+ $sLine = ''.
+ ''.$sExpandButton.''.
+ ''.
+ '';
+
+ //Store comment before coloring code
+ if($bComment)
+ {
+ $sKey = '§'.$iLineNb.'§';
+ $sPattern = '`'.preg_quote($sKey).'`su';
+ $asCommentLines[$sPattern] = $sLine;
+ $sLine = $sKey;
+ }
+
+ $asColoredLines[] = $sLine;
}
- $sCode = implode('', $asColoredLines);
+ $sCode = mb_strtolower(implode('', $asColoredLines));
//Strings
foreach($this->getWords('cString') as $sStringWord)
@@ -230,6 +244,9 @@ class Reader
$sPattern = '/>((([^<]*)['.$sPreChar.']{1})|.{0})([0-9]+)([\W])/u';
$sCode = preg_replace($sPattern, '>$1$4$5', $sCode);
+ //Add Comments
+ $sCode = preg_replace(array_keys($asCommentLines), array_values($asCommentLines), $sCode);
+
return $sCode;
}
@@ -255,7 +272,7 @@ class Reader
public static function convText2Html($sCode)
{
- return htmlspecialchars(mb_strtolower($sCode), ENT_QUOTES);
+ return htmlspecialchars($sCode, ENT_QUOTES);
}
public function getColoredCode()
diff --git a/inc/toolbox.php b/inc/toolbox.php
index cbdebf4..d15afa4 100644
--- a/inc/toolbox.php
+++ b/inc/toolbox.php
@@ -245,11 +245,20 @@ class ToolBox
{
$sServerPath = substr(str_replace(array('http://', 'https://'), '', $_GET['serv_name']), 0, -1);
+ //building all replacements possibilities
+ foreach(Databap::$TYPES as $sType=>$asTypeInfo)
+ {
+ $sPage = Databap::$HASH_TO_PAGE[$sType];
+ $asHashes = array_keys(Databap::$HASH_TO_PAGE, $sPage);
+ foreach($asHashes as $sHash) $asReplacements[preg_quote($sHash)] = $sPage;
+ $asReplacements[preg_quote(Databap::$PAGE_TITLES[$sPage])] = $sPage;
+ }
+
//Phase 1 : Identify internal links : merge cases /#code-1 and code 1, destroy link.
$asPatterns = array();
- foreach(Databap::$HASH_TO_PAGE as $sAlt=>$sPage)
+ foreach($asReplacements as $sHash=>$sPage)
{
- $asPatterns['`(^|\ )(https?://|)'.$sServerPath.'/?\#'.$sAlt.'\-([\d]+)`sui'] = '$1$4'.$sPage.' $3';
+ $asPatterns['`(^|\ )(https?://|)'.$sServerPath.'/?\#'.$sHash.'\-([\d]+)`sui'] = '$1$4'.$sPage.' $3';
}
$sText = preg_replace(array_keys($asPatterns), array_values($asPatterns), $sText);
@@ -260,19 +269,21 @@ class ToolBox
//Phase 3: rebuild link
$asPatterns = array();
- foreach(Databap::$HASH_TO_PAGE as $sAlt=>$sPage)
+ foreach($asReplacements as $sHash=>$sPage)
{
- if(mb_strlen($sAlt)>1)
+ if(mb_strlen($sHash)>1)
{
$sTitle = Databap::$PAGE_TITLES[$sPage];
- $asPatterns['`(^|\ )'.$sAlt.'\ ([\d]+)(\ |$)`sui'] = '$1'.$sTitle.' n°$2$3';
- if($sPage=='table') $asPatterns['`(^|\ )'.$sAlt.'\ ([_A-Z0-9]+)(\ |$)`su'] = '$1'.$sTitle.' $2$3';
+
+ //Type + phrase
+ if($sPage=='table') $asPatterns['`(^|\ |\*)(?i)'.$sHash.'(?-i)\ ([_A-Z0-9]+)(\ |$)`su'] = '$1'.$sTitle.' $2$3';
+
+ //Type + id
+ $asPatterns['`(^|\ |\*)'.$sHash.'\ ([\d]+)(\ |$)`sui'] = '$1'.$sTitle.' n°$2$3';
}
}
$sText = preg_replace(array_keys($asPatterns), array_values($asPatterns), $sText);
- //@file_put_contents('log.html', "\n\n".date('r')."\n".$test, FILE_APPEND);
-
return $sText;
}
diff --git a/style/screen.css b/style/screen.css
index 52438a0..8a5a4de 100644
--- a/style/screen.css
+++ b/style/screen.css
@@ -294,6 +294,12 @@ a.internal_link {
a.internal_link:visited, a.external_link:visited {
color:grey;
}
+a.internal_link span.type {
+ text-transform:capitalize;
+}
+a[href^="table"].internal_link span.item {
+ text-transform:uppercase;
+}
.h1_wrap h1 {
margin:0 -12px 12px;
@@ -1616,6 +1622,7 @@ vertical-align 0% -5% -10% -15% -20% -25% -30%
#code_container .code_reader a.internal_link:hover, #code_container .code_reader a.internal_link:hover span {
color:#EFAB00;
}
+
#code_container .code_reader ol li span.hide span {
color:#848484;
}