MediaWiki  master
PPDStack_Hash.php
Go to the documentation of this file.
1 <?php
26 // phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
29  public $stack;
31  public $rootAccum;
33  public $accum;
34 
38  public $top;
39  public $out;
40  public $elementClass = PPDStackElement_Hash::class;
41 
42  public static $false = false;
43 
44  public function __construct() {
45  $this->stack = [];
46  $this->top = false;
47  $this->rootAccum = [];
48  $this->accum =& $this->rootAccum;
49  }
50 
54  public function count() {
55  return count( $this->stack );
56  }
57 
58  public function &getAccum() {
59  return $this->accum;
60  }
61 
65  public function getCurrentPart() {
66  if ( $this->top === false ) {
67  return false;
68  } else {
69  return $this->top->getCurrentPart();
70  }
71  }
72 
73  public function push( $data ) {
74  if ( $data instanceof $this->elementClass ) {
75  $this->stack[] = $data;
76  } else {
77  $class = $this->elementClass;
78  $this->stack[] = new $class( $data );
79  }
80  $this->top = $this->stack[count( $this->stack ) - 1];
81  $this->accum =& $this->top->getAccum();
82  }
83 
84  public function pop() {
85  if ( $this->stack === [] ) {
86  throw new RuntimeException( __METHOD__ . ': no elements remaining' );
87  }
88  $temp = array_pop( $this->stack );
89 
90  if ( count( $this->stack ) ) {
91  $this->top = $this->stack[count( $this->stack ) - 1];
92  $this->accum =& $this->top->getAccum();
93  } else {
94  $this->top = self::$false;
95  $this->accum =& $this->rootAccum;
96  }
97  return $temp;
98  }
99 
100  public function addPart( $s = '' ) {
101  $this->top->addPart( $s );
102  $this->accum =& $this->top->getAccum();
103  }
104 
108  public function getFlags() {
109  if ( $this->stack === [] ) {
110  return [
111  'findEquals' => false,
112  'findPipe' => false,
113  'inHeading' => false,
114  ];
115  } else {
116  return $this->top->getFlags();
117  }
118  }
119 }
Stack class to help Preprocessor::preprocessToObj()
PPDStackElement_Hash[] $stack
PPDStackElement_Hash false $top
string[] $rootAccum
string[] $accum