Module: PlanMyStuff::IssueFieldTranslation
- Defined in:
- lib/plan_my_stuff/issue_field_translation.rb
Overview
Translates between the canonical Issue Field names / values the gem refers to internally (e.g. “Issue Status”, “Waiting on Reply”) and the names / values a consuming org actually uses on GitHub. Driven by config.issue_field_names (canonical field name => consumer field name) and config.issue_field_values (canonical field name => { canonical value => consumer value }).
Outbound (canonical -> consumer) translation happens on writes and filters; inbound (consumer -> canonical) on reads, so internal comparisons like issue_fields[‘Issue Status’] == ‘Waiting on Reply’ keep working regardless of how the org named the field or option. Unconfigured names / values pass through unchanged (identity fallback, mirroring config.pipeline_statuses).
Class Method Summary collapse
-
.canonical_field_name(consumer) ⇒ String
The canonical field name, or the consumer name when unmapped.
-
.canonical_value(canonical_field, value) ⇒ Object?
Translates a consumer value back to the canonical value for the given canonical field.
-
.consumer_field_name(canonical) ⇒ String
The consumer’s field name, or the canonical name when unmapped.
-
.consumer_value(canonical_field, value) ⇒ Object?
Translates a canonical value to the consumer’s value for the given canonical field.
-
.value_map(canonical_field) ⇒ Hash{String => String}
Canonical-value => consumer-value map for the field (empty when unconfigured).
Class Method Details
.canonical_field_name(consumer) ⇒ String
Returns the canonical field name, or the consumer name when unmapped.
28 29 30 |
# File 'lib/plan_my_stuff/issue_field_translation.rb', line 28 def canonical_field_name(consumer) PlanMyStuff.configuration.issue_field_names.invert.fetch(consumer, consumer) end |
.canonical_value(canonical_field, value) ⇒ Object?
Translates a consumer value back to the canonical value for the given canonical field.
53 54 55 56 57 |
# File 'lib/plan_my_stuff/issue_field_translation.rb', line 53 def canonical_value(canonical_field, value) return value unless value.is_a?(String) value_map(canonical_field).invert.fetch(value, value) end |
.consumer_field_name(canonical) ⇒ String
Returns the consumer’s field name, or the canonical name when unmapped.
20 21 22 |
# File 'lib/plan_my_stuff/issue_field_translation.rb', line 20 def consumer_field_name(canonical) PlanMyStuff.configuration.issue_field_names.fetch(canonical.to_s, canonical.to_s) end |
.consumer_value(canonical_field, value) ⇒ Object?
Translates a canonical value to the consumer’s value for the given canonical field. Non-String values (numbers, dates, nil) pass through untouched – only single-select / text labels are translatable.
40 41 42 43 44 |
# File 'lib/plan_my_stuff/issue_field_translation.rb', line 40 def consumer_value(canonical_field, value) return value unless value.is_a?(String) value_map(canonical_field).fetch(value, value) end |
.value_map(canonical_field) ⇒ Hash{String => String}
Returns canonical-value => consumer-value map for the field (empty when unconfigured).
63 64 65 |
# File 'lib/plan_my_stuff/issue_field_translation.rb', line 63 def value_map(canonical_field) PlanMyStuff.configuration.issue_field_values.fetch(canonical_field.to_s, {}) end |