Module: RubyToBlock::Block::CharacterOperation::ClassMethods
- Defined in:
- app/models/concerns/ruby_to_block/block/character_operation.rb
Instance Method Summary collapse
-
#add_child_or_create_character_new_block(context, name, block) ⇒ Array<ブロック, ブロック>
必要であればcharacter_newブロックを作成してから指定したブロッ クをcharacter_newブロックの子供として追加する.
-
#create_character_new_block(context, character, block) ⇒ RubyToBlock::Block::CharacterNew
character_newブロックを生成する.
-
#get_character(context, name) ⇒ Character
コンテキストからキャラクターを取得する.
Instance Method Details
#add_child_or_create_character_new_block(context, name, block) ⇒ Array<ブロック, ブロック>
必要であればcharacter_newブロックを作成してから指定したブロックをcharacter_newブロックの子供として追加する
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/concerns/ruby_to_block/block/character_operation.rb', line 38 def add_child_or_create_character_new_block(context, name, block) character = get_character(context, name) block.character = character cb = context.current_block if cb && cb.type == 'character_new' && cb.character == character cb.add_statement(:DO, block) [cb, cb] elsif character == context.receiver cb.sibling = block [cb.parent, block] else character_new = create_character_new_block(context, character, block) [character_new, character_new] end end |
#create_character_new_block(context, character, block) ⇒ RubyToBlock::Block::CharacterNew
character_newブロックを生成する
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/models/concerns/ruby_to_block/block/character_operation.rb', line 63 def create_character_new_block(context, character, block) character_new_block = Block.new('character_new', fields: { NAME: character.name }, statements: { DO: block }) character_new_block.character = character cb = context.current_block if cb && cb.type != 'character_new' cb.sibling = character_new_block else context.blocks.push(character_new_block) end character_new_block end |
#get_character(context, name) ⇒ Character
コンテキストからキャラクターを取得する
キャラクターの名前がnil、または‘self’の場合はコンテキストのレシーバの名前を利用する。
コンテキストからキャラクターが取得できない場合は例外が発生する。
24 25 26 27 28 |
# File 'app/models/concerns/ruby_to_block/block/character_operation.rb', line 24 def get_character(context, name) name = context.receiver.try(:name) if !name || name == 'self' fail unless context.characters.key?(name) context.characters[name] end |