Class: Code::Node::Statement
- Inherits:
-
Code::Node
- Object
- Code::Node
- Code::Node::Statement
- Defined in:
- lib/code/node/statement.rb
Instance Attribute Summary collapse
-
#statement ⇒ Object
readonly
Returns the value of attribute statement.
Instance Method Summary collapse
- #evaluate(**args) ⇒ Object
-
#initialize(statement) ⇒ Statement
constructor
A new instance of Statement.
Constructor Details
#initialize(statement) ⇒ Statement
Returns a new instance of Statement.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/code/node/statement.rb', line 6 def initialize(statement) if statement.key?(:nothing) @statement = ::Code::Node::Nothing.new elsif statement.key?(:boolean) @statement = ::Code::Node::Boolean.new(statement[:boolean]) elsif statement.key?(:number) @statement = ::Code::Node::Number.new(statement[:number]) elsif statement.key?(:string) @statement = ::Code::Node::String.new(statement[:string]) elsif statement.key?(:call) @statement = ::Code::Node::Call.new(statement[:call]) elsif statement.key?(:name) @statement = ::Code::Node::Name.new(statement[:name]) elsif statement.key?(:list) @statement = ::Code::Node::List.new(statement[:list]) elsif statement.key?(:dictionnary) @statement = ::Code::Node::Dictionnary.new(statement[:dictionnary]) elsif statement.key?(:negation) @statement = ::Code::Node::Negation.new(statement[:negation]) elsif statement.key?(:power) @statement = ::Code::Node::Power.new(statement[:power]) elsif statement.key?(:unary_minus) @statement = ::Code::Node::UnaryMinus.new(statement[:unary_minus]) elsif statement.key?(:multiplication) @statement = ::Code::Node::Operation.new(statement[:multiplication]) elsif statement.key?(:addition) @statement = ::Code::Node::Operation.new(statement[:addition]) elsif statement.key?(:shift) @statement = ::Code::Node::Operation.new(statement[:shift]) elsif statement.key?(:bitwise_and) @statement = ::Code::Node::Operation.new(statement[:bitwise_and]) elsif statement.key?(:bitwise_or) @statement = ::Code::Node::Operation.new(statement[:bitwise_or]) elsif statement.key?(:greater_than) @statement = ::Code::Node::Operation.new(statement[:greater_than]) elsif statement.key?(:equality) @statement = ::Code::Node::Operation.new(statement[:equality]) elsif statement.key?(:and_operator) @statement = ::Code::Node::Operation.new(statement[:and_operator]) elsif statement.key?(:or_operator) @statement = ::Code::Node::Operation.new(statement[:or_operator]) elsif statement.key?(:range) @statement = ::Code::Node::Range.new(statement[:range]) elsif statement.key?(:ternary) @statement = ::Code::Node::Ternary.new(statement[:ternary]) elsif statement.key?(:rescue) @statement = ::Code::Node::Rescue.new(statement[:rescue]) elsif statement.key?(:equal) @statement = ::Code::Node::Equal.new(statement[:equal]) elsif statement.key?(:defined) @statement = ::Code::Node::Defined.new(statement[:defined]) elsif statement.key?(:not_keyword) @statement = ::Code::Node::NotKeyword.new(statement[:not_keyword]) elsif statement.key?(:or_keyword) @statement = ::Code::Node::OrKeyword.new(statement[:or_keyword]) elsif statement.key?(:if_modifier) @statement = ::Code::Node::IfModifier.new(statement[:if_modifier]) elsif statement.key?(:if) @statement = ::Code::Node::If.new(statement[:if]) elsif statement.key?(:while) @statement = ::Code::Node::While.new(statement[:while]) elsif statement.key?(:group) @statement = ::Code::Node::Group.new(statement[:group]) elsif statement.key?(:function) @statement = ::Code::Node::Function.new(statement[:function]) else raise NotImplementedError.new(statement.inspect) end end |
Instance Attribute Details
#statement ⇒ Object (readonly)
Returns the value of attribute statement.
4 5 6 |
# File 'lib/code/node/statement.rb', line 4 def statement @statement end |
Instance Method Details
#evaluate(**args) ⇒ Object
76 77 78 |
# File 'lib/code/node/statement.rb', line 76 def evaluate(**args) @statement.evaluate(**args) end |