Class: Plain::Merge::Provider
- Inherits:
-
Object
- Object
- Plain::Merge::Provider
- Defined in:
- lib/plain/merge/provider.rb,
sig/plain/merge.rbs
Overview
Coarse whole-document provider for unstructured plain text. rubocop:disable Metrics/ClassLength, Metrics/MethodLength, Metrics/ParameterLists -- provider operations and envelopes form one cohesive boundary
Instance Method Summary collapse
- #analyze(request) ⇒ Ast::Merge::provider_result
- #capabilities ⇒ Ast::Merge::provider_capabilities
- #diff2(request) ⇒ Ast::Merge::provider_result
- #family ⇒ String
- #merge2(request) ⇒ Ast::Merge::provider_result
- #merge3(request) ⇒ Ast::Merge::provider_result
- #provider_id ⇒ String
Instance Method Details
#analyze(request) ⇒ Ast::Merge::provider_result
22 23 24 |
# File 'lib/plain/merge/provider.rb', line 22 def analyze(request) result(:analyze, request, analysis: Plain::Merge.analyze_text(request.fetch(:source))) end |
#capabilities ⇒ Ast::Merge::provider_capabilities
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/plain/merge/provider.rb', line 11 def capabilities { operations: Ast::Merge::ProviderContract::OPERATIONS, dialects: %i[text], backends: [Plain::Merge::BACKEND_REFERENCE.id.to_sym], profiles: %i[coarse_document], role: :workflow, source_preservation: %i[exact_source whole_document_conflict] }.freeze end |
#diff2(request) ⇒ Ast::Merge::provider_result
26 27 28 29 30 31 |
# File 'lib/plain/merge/provider.rb', line 26 def diff2(request) before = request.fetch(:before_source) after = request.fetch(:after_source) changes = before == after ? [] : [classification(before, before, after)] result(:diff2, request, changes: changes, diff: { before: before, after: after, changes: changes }) end |
#family ⇒ String
9 |
# File 'lib/plain/merge/provider.rb', line 9 def family = 'text' |
#merge2(request) ⇒ Ast::Merge::provider_result
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/plain/merge/provider.rb', line 33 def merge2(request) merged = Plain::Merge.merge_text(request.fetch(:incoming_source), request.fetch(:current_source)) result( :merge2, request, output: merged.fetch(:output), render_report: { strategy: :normalized_block_merge }, verification: { output_rendered: true } ) end |
#merge3(request) ⇒ Ast::Merge::provider_result
44 45 46 47 48 49 50 51 52 |
# File 'lib/plain/merge/provider.rb', line 44 def merge3(request) base = request.fetch(:base_source) ours = request.fetch(:ours_source) theirs = request.fetch(:theirs_source) return exact_merge3(request, :ours, ours, base, ours, theirs) if ours == theirs || base == theirs return exact_merge3(request, :theirs, theirs, base, ours, theirs) if base == ours conflicted_merge3(request, base, ours, theirs) end |
#provider_id ⇒ String
8 |
# File 'lib/plain/merge/provider.rb', line 8 def provider_id = 'ruby.text' |