silkedit 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,49 +7,50 @@ module Silkedit::Savegame
7
7
 
8
8
  diff = nil
9
9
 
10
- if old.is_a?(Hash)
10
+ if old.is_a?(Hash) || new.is_a?(Hash)
11
11
  diff = {}
12
12
  (old.keys + new.keys).uniq.each do |k|
13
13
  itemdiff = mkdiff(old[k], new[k])
14
14
  diff[k] = itemdiff unless itemdiff.nil? || itemdiff.empty?
15
15
  end
16
- elsif old.is_a?(Array)
16
+ elsif old.is_a?(Array) || new.is_a?(Array)
17
17
  diff = []
18
- if old.first.is_a?(Hash)
19
- if old.first.key?('Name')
20
- keycomps = %w[Name]
21
- elsif old.first.key?('SceneName') && old.first.key?('ID')
22
- keycomps = %w[SceneName ID]
23
- elsif old.first.key?('SceneName') && old.first.key?('EventType')
24
- keycomps = %w[SceneName EventType]
25
- else
26
- keycomps = nil
27
- end
28
- if keycomps.nil?
29
- diff = { old: old.reject { |e| new.include?(e) }, new: new.reject { |e| old.include?(e) } }
30
- else
31
- old.each do |o|
32
- n = new.find { |e| keycomps.map { |k| e[k] == o[k] }.reduce { |a, b| a && b } }
33
- itemdiff = mkdiff(
34
- o.reject { |k, _v| keycomps.include?(k) },
35
- n.nil? ? nil : n.reject { |k, _v| keycomps.include?(k) }
36
- )
37
- next if itemdiff.empty?
38
- newobj = {}
39
- keycomps.each { |k| newobj[k] = o[k] }
40
- diff.append(newobj.merge(itemdiff))
41
- end
42
- new.each do |n|
43
- o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
44
- next unless o.nil?
45
- itemdiff = mkdiff(
46
- nil,
47
- n.reject { |k, _v| keycomps.include?(k) }
48
- )
49
- newobj = {}
50
- keycomps.each { |k| newobj[k] = n[k] }
51
- diff.append(newobj.merge(itemdiff))
18
+ if (old.first.is_a?(Hash) && old.first.key?('Name')) ||
19
+ (new.first.is_a?(Hash) && new.first.key?('Name'))
20
+ keycomps = %w[Name]
21
+ elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('ID')) ||
22
+ (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('ID'))
23
+ keycomps = %w[SceneName ID]
24
+ elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('EventType')) ||
25
+ (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('EventType'))
26
+ keycomps = %w[SceneName EventType]
27
+ else
28
+ keycomps = nil
29
+ end
30
+ if keycomps.nil?
31
+ diff = { old: old.reject { |e| new.include?(e) }, new: new.reject { |e| old.include?(e) } }
32
+ diff = nil if diff[:old].empty? && diff[:new].empty?
33
+ else
34
+ old.each do |o|
35
+ n = new.find { |e| keycomps.map { |k| e[k] == o[k] }.reduce { |a, b| a && b } }
36
+ if n.nil?
37
+ diff.append({new: n, old: o})
38
+ next
52
39
  end
40
+ itemdiff = mkdiff(
41
+ o.reject { |k, _v| keycomps.include?(k) },
42
+ n.nil? ? nil : n.reject { |k, _v| keycomps.include?(k) }
43
+ )
44
+ next if itemdiff.empty?
45
+ newobj = {}
46
+ keycomps.each { |k| newobj[k] = o[k] }
47
+ diff.append(newobj.merge(itemdiff))
48
+ end
49
+ new.each do |n|
50
+ o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
51
+ next unless o.nil?
52
+ diff.append({new: n, old: o})
53
+ next
53
54
  end
54
55
  end
55
56
  elsif old != new
@@ -71,7 +72,7 @@ module Silkedit::Savegame
71
72
  if line[i] == '-' && blank_leadup
72
73
  colored_string += line[i].colorize(:yellow)
73
74
  i += 1
74
- elsif line[i] == ':' && blank_leadup
75
+ elsif line[i] == ':' && (blank_leadup || line[0..i-1].sub('-', '').chars.map { |c| c == ' ' }.all?)
75
76
  j = i + line[i+1..-1].index(':')
76
77
  colored_string += line[i..j].colorize(:magenta)
77
78
  i += j - i + 1
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Silkedit
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silkedit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Khoury