Sha256: c7d30b2ac894690bd0226aefe035c4729e7e0fb830f284632307917d11e2904f

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

module Pione
  module Util
    # ID is a set of ID generators.
    module TaskID
      # Make a task id by input data names and parameters.
      #
      # @param inputs [Array<Tuple::DataTuple>]
      #   input data tuples
      # @param params [Model::Parameters]
      #   parameters object
      # @return [String]
      #   task's digest string
      def generate(inputs, params)
        input_names = inputs.map{|t| t.name}
        Digest::MD5.hexdigest("%s,%s" % [input_names.join(":"), params.textize])
      end
      module_function :generate
    end

    module DomainID
      # Make a domain id by rule, inputs, and parameters.
      #
      # @param rule [Component::Rule]
      #   rule
      # @param inputs [Array<Tuple::DataTuple>]
      #   input data tuples
      # @param params [Model::Parameters]
      #   parameters
      # @return [String]
      #   domain id string
      def generate(rule, inputs, params)
        package_name = rule.package_name
        rule_name = rule.name
        "%s-%s_%s" % [package_name, rule_name, TaskID.generate(inputs.flatten, params)]
      end
      module_function :generate
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/util/id.rb
pione-0.2.1 lib/pione/util/id.rb
pione-0.2.0 lib/pione/util/id.rb