Sha256: c86da3e33df11fda28ffbb4e835977a1dac2b5b3acde9b4836332a2353d4a205

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module Grumlin
  class AnonymousStep
    attr_reader :name, :args, :previous_step

    # TODO: add other steps
    SUPPORTED_STEPS = %i[E V addE addV and as both bothE by coalesce count dedup drop elementMap emit fold from group
                         groupCount has hasId hasLabel hasNot id in inE inV is label limit not or order out outE path
                         project property range repeat select sideEffect skip tail to unfold union until valueMap
                         values where with].freeze

    def initialize(name, *args, previous_step: nil)
      @name = name
      @previous_step = previous_step
      @args = args
    end

    SUPPORTED_STEPS.each do |step|
      define_method(step) do |*args|
        step(step, args)
      end
    end

    def step(name, args)
      self.class.new(name, *args, previous_step: self)
    end

    def inspect
      bytecode.inspect
    end

    alias to_s inspect

    def bytecode(no_return: false)
      @bytecode ||= Bytecode.new(self, no_return: no_return)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grumlin-0.13.1 lib/grumlin/anonymous_step.rb
grumlin-0.13.0 lib/grumlin/anonymous_step.rb