class DTK::DSL::Template::V1::Workflow

Constants

INTERPRETED_KEYS

Public Class Methods

generate_elements(workflows_content, parent) click to toggle source

For generation

# File lib/dsl/template/v1/workflow.rb, line 61
def self.generate_elements(workflows_content, parent)
  workflows_content.inject({}) do |h, (name, workflow)| 
    h.merge(name => generate_element(workflow, parent))
  end
end
parse_elements(input_hash, parent_info) click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 42
def self.parse_elements(input_hash, parent_info)
  input_hash.inject(file_parser_output_hash) do |h, (name, workflow)|
    h.merge(name => parse_element(workflow, parent_info, :index => name))
  end
end

Public Instance Methods

generate!() click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 67
def generate!
  set? :Name, val(:Name)
  set? :SubtaskOrder, val(:SubtaskOrder)
  if subtasks = val(:Subtasks)
    generated_subtasks = subtasks.map do |subtask|
      generated_subtask = generate_subtask(subtask)
      generated_subtask.empty? ? nil : generated_subtask
    end.compact
    set :Subtasks, generated_subtasks unless generated_subtasks.empty?
  end
  merge(uninterpreted_keys)
end
parse!() click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 48
def parse!
  remove_processed_keys_from_input_hash! do
    set? :Import, input_key_value?(:Import)
    set? :Flatten, input_key_value?(:Flatten)
    set? :Name, input_key_value?(:Name)
    set? :SubtaskOrder, input_key_value?(:SubtaskOrder)
    set? :Subtasks, parse_subtasks?
  end
  # handle keys not processed
  merge change_strings_to_symbols(input_hash) unless input_hash.empty?
end
parser_output_type() click to toggle source

For parsing

# File lib/dsl/template/v1/workflow.rb, line 38
def parser_output_type
  :hash
end

Private Instance Methods

change_strings_to_symbols(obj) click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 120
def change_strings_to_symbols(obj)
  if obj.kind_of?(::Hash)
    obj.inject({}) { |h, (k, v)| h.merge(k.to_sym => change_strings_to_symbols(v)) }
  elsif obj.kind_of?(::Array)
    obj.map { |el| change_strings_to_symbols(el) }
  else
    obj
  end
end
change_symbols_to_strings(obj) click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 108
def change_symbols_to_strings(obj)
  if obj.kind_of?(::Hash)
  obj.inject({}) { |h, (k, v)| h.merge(k.to_s => change_symbols_to_strings(v)) }
  elsif obj.kind_of?(::Array)
    obj.map { |el| change_symbols_to_strings(el) }
  elsif obj.kind_of?(::Symbol)
    obj.to_s
  else
    obj
  end
end
generate_subtask(subtask) click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 94
def generate_subtask(subtask)
  self.class.create_for_generation(subtask, :top => @top, :filter => @filter).generate_yaml_object
end
parse_subtasks?() click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 82
def parse_subtasks?
  if subtasks = input_key_value?(:Subtasks)
    ret = file_parser_output_array
    subtasks.each_with_index do |subtask, i| 
      # TODO: should parent_info instead be Parsing::ParentInfo.new(self, :subtasks)
      parent_info = Parsing::ParentInfo.new(self, :workflow)
      ret << self.class.parse_element(subtask, parent_info, :index => i) 
    end
    ret
  end
end
uninterpreted_keys() click to toggle source
# File lib/dsl/template/v1/workflow.rb, line 102
def uninterpreted_keys
  (@content.keys - INTERPRETED_KEYS).inject({}) do |h, k| 
    h.merge(k.to_s => change_symbols_to_strings(@content[k]))
  end
end