jargon

MR97-ProcGen Rip Vars

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