Sha256: 6a566d81ee3cdbb672e668ed4674fe3b6b1a15cf170fa0a0a61b53d82a48627e

Contents?: true

Size: 1 KB

Versions: 15

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true
module Dynflow
  module Flows

    class Abstract < Serializable
      include Algebrick::TypeCheck

      def initialize
        raise 'cannot instantiate Flows::Abstract'
      end

      def to_hash
        { :class => self.class.name }
      end

      def empty?
        self.size == 0
      end

      def size
        raise NotImplementedError
      end

      def includes_step?(step_id)
        self.all_step_ids.any? { |s| s == step_id }
      end

      def all_step_ids
        raise NotImplementedError
      end

      def flatten!
        raise NotImplementedError
      end

      def self.new_from_hash(hash)
        check_class_matching hash
        new(hash[:flows].map { |flow_hash| from_hash(flow_hash) })
      end

      def self.decode(data)
        if data.is_a? Integer
          Flows::Atom.new(data)
        else
          kind, *subflows = data
          Registry.decode(kind).new(subflows.map { |subflow| self.decode(subflow) })
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
dynflow-1.8.2 lib/dynflow/flows/abstract.rb
dynflow-1.8.1 lib/dynflow/flows/abstract.rb
dynflow-1.8.0 lib/dynflow/flows/abstract.rb
dynflow-1.7.0 lib/dynflow/flows/abstract.rb
dynflow-1.6.11 lib/dynflow/flows/abstract.rb
dynflow-1.6.10 lib/dynflow/flows/abstract.rb
dynflow-1.6.8 lib/dynflow/flows/abstract.rb
dynflow-1.6.7 lib/dynflow/flows/abstract.rb
dynflow-1.6.6 lib/dynflow/flows/abstract.rb
dynflow-1.6.5 lib/dynflow/flows/abstract.rb
dynflow-1.6.4 lib/dynflow/flows/abstract.rb
dynflow-1.6.3 lib/dynflow/flows/abstract.rb
dynflow-1.6.2 lib/dynflow/flows/abstract.rb
dynflow-1.6.1 lib/dynflow/flows/abstract.rb
dynflow-1.5.0 lib/dynflow/flows/abstract.rb