Class: BlocklyInterpreter::CoreBlocks::IfBlock::DSLMethods::IfBlockBuilder

Inherits:
DSL::BlockBuilder
  • Object
show all
Defined in:
lib/blockly_interpreter/core_blocks/if_block.rb

Instance Attribute Summary collapse

Attributes inherited from DSL::BlockBuilder

#block_type, #comment, #comment_pinned, #fields, #is_shadow, #mutation_attrs, #mutation_child_procs, #statements, #values, #x, #y

Instance Method Summary collapse

Methods inherited from DSL::BlockBuilder

#build_subblock, #comment_to_xml, #field, #field_to_xml, #mutation_attr, #mutation_child, #mutations_to_xml, #set_comment, #set_position!, #shadow!, #statement, #subblock_to_xml, #tag_name, #value

Constructor Details

#initialize(block_type) ⇒ IfBlockBuilder

Returns a new instance of IfBlockBuilder.



70
71
72
73
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 70

def initialize(block_type)
  super
  @predicate_number = 0
end

Instance Attribute Details

#predicate_numberObject (readonly)

Returns the value of attribute predicate_number.



68
69
70
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 68

def predicate_number
  @predicate_number
end

Instance Method Details

#action(&proc) ⇒ Object



79
80
81
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 79

def action(&proc)
  statement "DO#{predicate_number}", &proc
end

#else_action(&proc) ⇒ Object



88
89
90
91
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 88

def else_action(&proc)
  mutation_attr "else", 1
  statement "ELSE", &proc
end

#elsif_clause(&proc) ⇒ Object



83
84
85
86
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 83

def elsif_clause(&proc)
  @predicate_number += 1
  instance_exec(&proc)
end

#predicate(&proc) ⇒ Object



75
76
77
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 75

def predicate(&proc)
  value "IF#{predicate_number}", &proc
end

#to_xml(node) ⇒ Object



93
94
95
96
# File 'lib/blockly_interpreter/core_blocks/if_block.rb', line 93

def to_xml(node)
  mutation_attr("elseif", @predicate_number) if @predicate_number > 0
  super
end