Module: Solana::Ruby::Kit::InstructionPlans

Extended by:
T::Sig
Defined in:
lib/solana/ruby/kit/instruction_plans.rb,
lib/solana/ruby/kit/instruction_plans/plans.rb

Defined Under Namespace

Classes: ParallelInstructionPlan, SequentialInstructionPlan, SingleInstructionPlan

Class Method Summary collapse

Class Method Details

.flatten_instruction_plan(plan) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/solana/ruby/kit/instruction_plans.rb', line 34

def flatten_instruction_plan(plan)
  case plan
  when SingleInstructionPlan
    [plan.instruction]
  when SequentialInstructionPlan
    plan.steps.flat_map { |s| flatten_instruction_plan(s) }
  when ParallelInstructionPlan
    plan.plans.flat_map { |p| flatten_instruction_plan(p) }
  else
    Kernel.raise ArgumentError, "Unknown InstructionPlan type: #{plan.class}"
  end
end

.parallel_instruction_plan(plans) ⇒ Object



28
29
30
# File 'lib/solana/ruby/kit/instruction_plans.rb', line 28

def parallel_instruction_plan(plans)
  ParallelInstructionPlan.new(plans: plans)
end

.sequential_instruction_plan(steps, divisible: false) ⇒ Object



22
23
24
# File 'lib/solana/ruby/kit/instruction_plans.rb', line 22

def sequential_instruction_plan(steps, divisible: false)
  SequentialInstructionPlan.new(steps: steps, divisible: divisible)
end

.single_instruction_plan(instruction) ⇒ Object



16
17
18
# File 'lib/solana/ruby/kit/instruction_plans.rb', line 16

def single_instruction_plan(instruction)
  SingleInstructionPlan.new(instruction: instruction)
end