Class: NaturalDSL::Stack
- Inherits:
-
Array
- Object
- Array
- NaturalDSL::Stack
- Defined in:
- lib/natural_dsl/stack.rb
Instance Method Summary collapse
Instance Method Details
#pop_if(expected_class, raise: true) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/natural_dsl/stack.rb', line 5 def pop_if(expected_class, raise: true) return pop if last.is_a?(expected_class) return unless raise error_reason = empty? ? "stack was empty" : "got #{last.class.name.demodulize}" raise "Expected #{expected_class.name.demodulize} but #{error_reason}" end |
#pop_if_keyword(keyword_type, raise: true) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/natural_dsl/stack.rb', line 13 def pop_if_keyword(keyword_type, raise: true) pop_if(Primitives::Keyword, raise: raise).tap do |keyword| next if raise == false && keyword.nil? || keyword.type == keyword_type push(keyword) next unless raise raise "Expected #{keyword_type} but got #{keyword.type}" end end |