Class: Ast::Merge::UnresolvedPolicy
- Inherits:
-
Object
- Object
- Ast::Merge::UnresolvedPolicy
- Defined in:
- lib/ast/merge/unresolved_policy.rb
Overview
Declarative caller-facing policy for reviewable unresolved merge behavior.
Constant Summary collapse
- VALID_PROVISIONAL_WINNERS =
%i[destination template].freeze
Instance Attribute Summary collapse
-
#enabled_kinds ⇒ Object
readonly
Returns the value of attribute enabled_kinds.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#provisional_winner ⇒ Object
readonly
Returns the value of attribute provisional_winner.
-
#provisional_winner_by_kind ⇒ Object
readonly
Returns the value of attribute provisional_winner_by_kind.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(enabled_kinds: :all, provisional_winner: nil, provisional_winner_by_kind: {}, metadata: {}) ⇒ UnresolvedPolicy
constructor
A new instance of UnresolvedPolicy.
- #provisional_winner_for(kind, fallback: nil) ⇒ Object
- #to_h ⇒ Object
- #unresolved_for?(kind) ⇒ Boolean
Constructor Details
#initialize(enabled_kinds: :all, provisional_winner: nil, provisional_winner_by_kind: {}, metadata: {}) ⇒ UnresolvedPolicy
Returns a new instance of UnresolvedPolicy.
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ast/merge/unresolved_policy.rb', line 22 def initialize( enabled_kinds: :all, provisional_winner: nil, provisional_winner_by_kind: {}, metadata: {} ) @enabled_kinds = normalize_enabled_kinds(enabled_kinds) @provisional_winner = normalize_provisional_winner(provisional_winner) @provisional_winner_by_kind = normalize_provisional_winner_by_kind(provisional_winner_by_kind) @metadata = .dup.freeze end |
Instance Attribute Details
#enabled_kinds ⇒ Object (readonly)
Returns the value of attribute enabled_kinds.
9 10 11 |
# File 'lib/ast/merge/unresolved_policy.rb', line 9 def enabled_kinds @enabled_kinds end |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
9 10 11 |
# File 'lib/ast/merge/unresolved_policy.rb', line 9 def @metadata end |
#provisional_winner ⇒ Object (readonly)
Returns the value of attribute provisional_winner.
9 10 11 |
# File 'lib/ast/merge/unresolved_policy.rb', line 9 def provisional_winner @provisional_winner end |
#provisional_winner_by_kind ⇒ Object (readonly)
Returns the value of attribute provisional_winner_by_kind.
9 10 11 |
# File 'lib/ast/merge/unresolved_policy.rb', line 9 def provisional_winner_by_kind @provisional_winner_by_kind end |
Class Method Details
.coerce(value) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/ast/merge/unresolved_policy.rb', line 11 def self.coerce(value) case value when nil then new when self then value when Hash then new(**value) else raise ArgumentError, "unresolved_policy must be an #{name} or Hash, got #{value.class}" end end |
Instance Method Details
#provisional_winner_for(kind, fallback: nil) ⇒ Object
40 41 42 43 44 |
# File 'lib/ast/merge/unresolved_policy.rb', line 40 def provisional_winner_for(kind, fallback: nil) normalize_provisional_winner( provisional_winner_by_kind.fetch(kind.to_sym, provisional_winner || fallback) ) end |
#to_h ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/ast/merge/unresolved_policy.rb', line 46 def to_h { enabled_kinds: enabled_kinds, provisional_winner: provisional_winner, provisional_winner_by_kind: provisional_winner_by_kind, metadata: }.compact end |
#unresolved_for?(kind) ⇒ Boolean
34 35 36 37 38 |
# File 'lib/ast/merge/unresolved_policy.rb', line 34 def unresolved_for?(kind) return true if enabled_kinds == :all enabled_kinds.include?(kind.to_sym) end |