Adapt syntax coloring to abap 7.40

This commit is contained in:
2019-09-22 02:04:59 +02:00
parent cc749be724
commit 06347a9b3e
6 changed files with 31 additions and 19 deletions

View File

@@ -2975,7 +2975,7 @@ class Databap extends PhpObject
public static function toBytes($str)
{
$val = trim($str);
$val = (int) trim($str);
$last = mb_strtolower($str[mb_strlen($str)-1]);
switch($last) {
case 'g': $val *= 1024;

View File

@@ -56,7 +56,7 @@ class Reader extends PhpObject
'ENDON','ENDPROVIDE','ENDSELECT','ENDTRY','ENDWHILE','END-OF_FILE','END-OF-DEFINITION','END-OF-PAGE',
'END-OF-SELECTION','ENTRIES','EQ','ERRORS','EVENT','EVENTS','EXCEPTION','EXCEPTIONS','EXCEPTION-TABLE','EXCLUDE',
'EXCLUDING','EXEC','EXIT','EXIT-COMMAND','EXPORT','EXPORTING','EXTENDED','EXTRACT','FETCH','FIELD','FIELD-GROUPS',
'FIELDSNO','FIELD-SYMBOLS','FILTER','FINAL','FIND','FIRST','FOR','FORM','FORMAT','FORWARDBACKWARD','FOUND','FRAME',
'FIELDSNO','FIELD-SYMBOL','FIELD-SYMBOLS','FILTER','FINAL','FIND','FIRST','FOR','FORM','FORMAT','FORWARDBACKWARD','FOUND','FRAME',
'FREE','FRIENDS','FROM','FUNCTION','FUNCTION-POOL','GE','GET','GIVING','GROUP','GT','HANDLER','HASHED','HAVING',
'HEADER','HEADING','HELP-ID','HIDE','HIGHLOW','HOLD','HOTSPOT','ID','IF','IGNORING','IMMEDIATELY','IMPLEMENTATION',
'IMPORT','IMPORTING','IN','INCREMENT','INDEX','INDEX-LINE','INHERITING','INIT','INITIAL','INITIALIZATION','INNER',
@@ -96,11 +96,16 @@ class Reader extends PhpObject
'RIGHT','SIGN','SIN','SINH','SQRT','TABLE','TABLENAME','TAN','TANH','TITLE','TO','TRAILING','TRUNC','TYPE','UPPER',
'USING','VALUE','WITH', 'TRANSPORTING', 'TYPE-POOLS'),
'wBwCore'=>array('SOURCE_PACKAGE', 'RESULT_PACKAGE', '<SOURCE_FIELDS>', '<RESULT_FIELDS>'),
'cOperator'=>array('(', ')', ',', '.', ':', '-', '~', '[', ']', '&lt;', '&gt;'),
'cOperator'=>array('(', ')', ',', '.', ':', '-', '~', '[', ']', '&lt;', '&gt;', '|', '{', '}', '@'),
'cCalculation'=>array('+', '-', '*', '/', '=', '(', ')'),
'cComment'=>array('*'),
'cPartComment'=>array('&quot;'),
'cString'=>array('&quot;', '&#039;'),
'cString'=>array(
'quote' => array('&quot;', '&quot;'),
'quot2' => array('&#039;', '&#039;'),
'pipe' => array('|', '|'),
'curly' => array('{', '}')
),
'iNumber'=>array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'),
'wExpand'=>array('loop'=>'endloop', 'if'=>'endif'),
'wGlobal'=>array('SY'),
@@ -208,10 +213,12 @@ class Reader extends PhpObject
$sCode = mb_strtolower(implode('', $asColoredLines));
//Strings
foreach($this->getWords('cString') as $sStringWord)
foreach($this->getWords('cString') as $sDelName=>$asDels)
{
$sPattern = '/>([^<]*?)'.$sStringWord.'([^<]*?)'.$sStringWord.'/u';
$sCode = preg_replace($sPattern, '>$1<span class="string">'.$sStringWord.'$2'.$sStringWord.'</span>', $sCode);
$sDelStart = $asDels[0];
$sDelEnd = $asDels[1];
$sPattern = '/([^<]*?)'.preg_quote($sDelStart).'([^<]*?)'.preg_quote($sDelEnd).'/u';
$sCode = preg_replace($sPattern, '$1<span class="string '.$sDelName.'">'.$sDelStart.'$2'.$sDelEnd.'</span>', $sCode);
}
//Part comment
@@ -223,10 +230,12 @@ class Reader extends PhpObject
$sCode = preg_replace($sPattern, '><span class="code_part">&#62; $1</span>', $sCode);
//Core Words
foreach($this->getWords('wCore') as $sCoreWord)
$asCoreWords = $this->getWords('wCore');
rsort($asCoreWords);
foreach($asCoreWords as $sCoreWord)
{
$sCoreWord = mb_strtolower($sCoreWord);
$sPattern = '/>(([^<]*)([^\w&<]{1})|.{0})('.$sCoreWord.')([\W])/u';
$sPattern = '/>(([^<]*)([^\w&<-]{1})|.{0})('.$sCoreWord.')([\W])/u';
$sCode = preg_replace($sPattern, '>$1<span class="core">$4</span>$5', $sCode);
}
//$sCoreWords = str_replace(' ', '\ ', implode('|', array_map('mb_strtolower', $this->getWords('wCore'))));
@@ -238,8 +247,14 @@ class Reader extends PhpObject
$asOperators = array_unique(array_merge($this->getWords('cOperator'), $this->getWords('cCalculation')));
foreach($asOperators as $sOpWord)
{
$sOpName = '';
switch($sOpWord) {
case '|': $sOpName = 'pipe'; break;
case '{':
case '}': $sOpName = 'curly'; break;
}
$sPattern = '/>([^<]*)\\'.$sOpWord.'/u';
$sCode = preg_replace($sPattern, '>$1<span class="operator">'.$sOpWord.'</span>', $sCode);
$sCode = preg_replace($sPattern, '>$1<span class="'.trim('operator '.$sOpName).'">'.$sOpWord.'</span>', $sCode);
}
//$sPattern = '/>([^<]*)['.implode(array_map('mb_strtolower', ($this->getWords('cOperator')))).']/';
//echo $sPattern;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -430,6 +430,9 @@
#code_container .code_reader .operator {color:#840084;}
#code_container .code_reader .string {color:#4aa518;text-transform:uppercase;}
#code_container .code_reader .string span {color:#4aa518;} /* override syntax coloring in strings */
#code_container .code_reader .string.curly {color:#000000;}
#code_container .code_reader .string .operator.pipe,
#code_container .code_reader .string .operator.curly {color:#840084;}
#code_container .code_reader .field-symbol {color:#848484;}
#code_container .code_reader .line {color:#848484;}
#code_container .code_reader .line-number, #code_container .code_reader .line-post-number {color:#398c8c;}

1
style/scss.bat Normal file
View File

@@ -0,0 +1 @@
sass --style=compressed --watch databap.scss:databap.css --poll