Advertisement
jargon

MR97-ProcGen Regex

Dec 17th, 2021
1,141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.11 KB | None | 0 0
  1. <?php
  2.  
  3. include_once( 'php/bootstrap.php' );
  4.  
  5. bootstrap( array( 'php::frontend', 'php::mk constants' ) );
  6.  
  7. echo perform_swaps( str_replace( '{{content}}', vars_rip(), page_create() ) );
  8.  
  9. exit;
  10.  
  11. function vars_rip( $subject = '' )
  12. {
  13.     $nen = nen_ini();
  14.    
  15.     $pagedata = '';
  16.    
  17.     $subject=file_get_contents($nen['root'].'source/MR97 ProcGen Core.bas');
  18.     $pattern = '/(?<var>([A-Za-z][A-Za-z0-9]*))(\$|\!|\&|\#|\%|)/';
  19.     $match_count=preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER );
  20.    
  21.     trk_echo2('match', $matches);
  22.    
  23.     $matches = array_unique( $matches );
  24.     $match_count = count( $matches );
  25.    
  26.     for ( $index = 0; $index < $match_count; $index++ )
  27.     {
  28.         if( strlen( $matches[ $index ][ 1 ] ) > 0 )
  29.         {
  30.             $pagedata.= '<tr><td>'. $matches[ $index ][ 1 ]. '</td></tr>';
  31.         }
  32.     }
  33.        
  34.     if( strlen( $pagedata ) > 0 ){
  35.         $pagedata = '<table>'. $pagedata. '</table>';
  36.     }
  37.     return $pagedata;
  38. }
  39.  
  40. //var_dump( jpp_build( 'qbasic vocabulary.dat' ) );
  41.  
  42. function regex_vars( $page = '' )
  43. {
  44.     $nen = nen_ini();
  45.     $pagedata = '';
  46.    
  47.     $page = file_get_contents( $nen[ 'root' ]. 'qbasic vocabulary.dat' );
  48.    
  49.     $var_pattern = '/^
  50.  
  51. (?<var>
  52. (?<prefix>\$|)
  53. (?<name>[A-Z]+)
  54.  
  55. (?:(\s|\.{3})
  56. (?<suffix>[A-Z]+)
  57. |)
  58.  
  59. (?<ext>[%&!#$]|)
  60.  
  61. (?:\s
  62. (?<spec>(^\s|)\([A-Za-z \/]+\)(^\s|))
  63. |)
  64.  
  65. (?:\s
  66. (?<format>([A-Z][a-z]*))
  67. )
  68.  
  69. )
  70. $/mx';
  71.  
  72.     $ret_groups = array( 'var', 'prefix', 'name', 'suffix', 'ext', 'spec', 'format' );
  73.  
  74.     // assign replacement (unused)
  75.     $var_replace = "$0\n";
  76.    
  77.     // create desination folder if it does not exist
  78.     create_destination( 'vars out data' );
  79.    
  80.     // perform current page data regex
  81.    
  82.     $e = explode( "\r\n", $page );
  83.    
  84.     for( $eindex = 0; $eindex < count( $e ); $eindex++ )
  85.     {
  86.         if(
  87.             preg_match(
  88.             $var_pattern,
  89.             $e[ $eindex ],
  90.             $var_groups
  91.             )
  92.         )  
  93.         {      
  94.             $temp = '<tr><td colspan="2"><div style="font-size:160%;">'.$var_groups[ 'name' ]. ( strlen( $var_groups[ 'suffix' ] ) > 0 ? ' '. $var_groups[ 'suffix' ] : '' ). '</div></td></tr>';
  95.             for( $index = 0; $index < count( $ret_groups ); $index++ )
  96.             {
  97.                 $temp.= '<tr><td style="width:196px;text-align:center;">'. $ret_groups[ $index ]. '</td><td><b>'. $var_groups[ $ret_groups[ $index ] ]. '</b></td></tr>';
  98.             }
  99.             $temp = '<table style="width:100%;text-align:left;">'.$temp.'</table>';
  100.             $pagedata.= $temp;
  101.         }
  102.     }
  103.     return $pagedata;
  104. }
  105.  
  106. function qb_keywords()
  107. {
  108.     $nen = nen_ini();
  109.     $temp = '';
  110.    
  111.     $page = file_get_contents( $nen[ 'root' ]. 'qbasic vocabulary.dat' );
  112.    
  113.     $var_pattern = '/^
  114.  
  115. (?<var>
  116. (?<prefix>\$|)
  117. (?<name>[A-Z]+)
  118.  
  119. (?:(\s|\.{3})
  120. (?<suffix>[A-Z]+)
  121. |)
  122.  
  123. (?<ext>[%&!#$]|)
  124.  
  125. (?:\s
  126. (?<spec>(^\s|)\([A-Za-z \/]+\)(^\s|))
  127. |)
  128.  
  129. (?:\s
  130. (?<format>([A-Z][a-z]*))
  131. )
  132.  
  133. )
  134. $/mx';
  135.  
  136.     $ret_groups = array( 'var', 'prefix', 'name', 'suffix', 'ext', 'spec', 'format' );
  137.  
  138.     // assign replacement (unused)
  139.     $var_replace = "$0\n";
  140.    
  141.     // create desination folder if it does not exist
  142.     create_destination( 'vars out data' );
  143.    
  144.     // perform current page data regex
  145.    
  146.     $e = explode( "\r\n", $page );
  147.    
  148.     for( $eindex = 0; $eindex < count( $e ); $eindex++ )
  149.     {
  150.         if(
  151.             preg_match(
  152.             $var_pattern,
  153.             $e[ $eindex ],
  154.             $var_groups
  155.             )
  156.         )  
  157.         {      
  158.             $temp[$var_groups[ 'name' ]] = array(
  159.                 'name' -> $var_groups[ 'name' ],
  160.                 'suffix' -> strlen( $var_groups[ 'suffix' ] ) > 0 ? ' '. $var_groups[ 'suffix' ] : '',
  161.                 'index' -> $ret_groups[ $index ],
  162.                 'index' -> $var_groups[ $ret_groups[ $index ] ]
  163.             );
  164.         }
  165.     }
  166.     sort( $temp );
  167.     return $temp;
  168. }
  169.  
  170.  
  171. function quick_attribute(&$v, $var_matches, $var_index, $tags = array( 'var' ) )
  172. {
  173.     foreach( $tags as $tag )
  174.     {
  175.         $v = append_attribute ( $v, $var_matches[ 'var' ][ $var_index ], $var_matches[ $tag ][ $var_index ], $tag );
  176.     }
  177. }
  178.  
  179. function append_attribute ( $v, $var, $group, $tag )
  180. {
  181.     $v[ $var ][ $tag ] = $group;   
  182.     return $v;
  183. }
  184.  
  185. function create_destination( $path = '' )
  186. {
  187.     $nen = nen_ini();
  188.    
  189.     $e = explode( '/', $path );
  190.     $i = 0;
  191.     $s = '';   
  192.    
  193.     while( $i < count( $e ) )
  194.     {
  195.         if($i > 0)
  196.         {
  197.             $s.= '/';
  198.         }
  199.         $s.= $e[ $i ];
  200.         if( !is_dir( $nen[ 'root' ]. $s ) )
  201.         {
  202.             mkdir ( $nen[ 'root' ]. $s );
  203.         }
  204.         $i++;
  205.     }
  206. }
  207.  
  208.  
  209. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement