Class: Test::Unit::Diff::SequenceMatcher
- Inherits:
-
Object
- Object
- Test::Unit::Diff::SequenceMatcher
- Defined in:
- lib/test/unit/diff.rb,
lib/test/unit/diff.rb
Instance Method Summary collapse
-
#blocks ⇒ Object
-
#grouped_operations(context_size = nil) ⇒ Object
-
#initialize(from, to, &junk_predicate) ⇒ SequenceMatcher
constructor
A new instance of SequenceMatcher.
-
#longest_match(from_start, from_end, to_start, to_end) ⇒ Object
-
#operations ⇒ Object
-
#ratio ⇒ Object
Constructor Details
#initialize(from, to, &junk_predicate) ⇒ SequenceMatcher
Returns a new instance of SequenceMatcher
14 15 16 17 18 19 |
# File 'lib/test/unit/diff.rb', line 14 def initialize(from, to, &junk_predicate) @from = from @to = to @junk_predicate = junk_predicate update_to_indexes end |
Instance Method Details
#blocks ⇒ Object
35 36 37 |
# File 'lib/test/unit/diff.rb', line 35 def blocks @blocks ||= compute_blocks end |
#grouped_operations(context_size = nil) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/test/unit/diff.rb', line 43 def grouped_operations(context_size=nil) context_size ||= 3 _operations = operations.dup _operations = [[:equal, 0, 0, 0, 0]] if _operations.empty? (_operations, context_size) group_window = context_size * 2 groups = [] group = [] _operations.each do |tag, from_start, from_end, to_start, to_end| if tag == :equal and from_end - from_start > group_window group << [tag, from_start, [from_end, from_start + context_size].min, to_start, [to_end, to_start + context_size].min] groups << group group = [] from_start = [from_start, from_end - context_size].max to_start = [to_start, to_end - context_size].max end group << [tag, from_start, from_end, to_start, to_end] end groups << group unless group.empty? groups end |
#longest_match(from_start, from_end, to_start, to_end) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/test/unit/diff.rb', line 21 def longest_match(from_start, from_end, to_start, to_end) best_info = find_best_match_position(from_start, from_end, to_start, to_end) unless @junks.empty? args = [from_start, from_end, to_start, to_end] best_info = adjust_best_info_with_junk_predicate(false, best_info, *args) best_info = adjust_best_info_with_junk_predicate(true, best_info, *args) end best_info end |
#operations ⇒ Object
39 40 41 |
# File 'lib/test/unit/diff.rb', line 39 def operations @operations ||= compute_operations end |
#ratio ⇒ Object
70 71 72 |
# File 'lib/test/unit/diff.rb', line 70 def ratio @ratio ||= compute_ratio end |