Module: Remocon::ConditionSorter

Included in:
Remocon::Command::Pull
Defined in:
lib/remocon/sorter/condition_sorter.rb

Constant Summary collapse

CONDITION_KEYS =
%w(name expression tagColor).freeze

Instance Method Summary collapse

Instance Method Details

#comparator_of_condition_keys(left, right) ⇒ Object



7
8
9
# File 'lib/remocon/sorter/condition_sorter.rb', line 7

def comparator_of_condition_keys(left, right)
  (CONDITION_KEYS.index(left) || 10_000) <=> (CONDITION_KEYS.index(right) || 10_000)
end

#sort_conditions(conditions) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/remocon/sorter/condition_sorter.rb', line 11

def sort_conditions(conditions)
  conditions
    .sort_by { |e| e["name"] || e[:name] }
    .map do |e|
    e.stringify_keys
      .sort { |(a, _), (b, _)| comparator_of_condition_keys(a, b) }
      .each_with_object({}) { |(k, v), acc| acc[k] = v }
      .with_indifferent_access
  end
end