difftastic 0.1.1-arm64-linux → 0.1.2-arm64-linux
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.
- checksums.yaml +4 -4
- data/lib/difftastic/ansi.rb +23 -0
- data/lib/difftastic/differ.rb +39 -1
- data/lib/difftastic/version.rb +1 -1
- data/lib/difftastic.rb +2 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f8cbb936322c76af988d7bf714f2d8f31c51bad304ca669365e5aff37b8982c
|
4
|
+
data.tar.gz: 886a81849018435199ec93c5b35d7e703cdd47bac8836eab74736441b74ad858
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dac982dbb4b2fc13ad6c6e2c857735c9e9983c5eb187a16466bc855ff248b176b64afd1ff9b2187adec15f0005521193122afce7f47ea7a1970f37752bd676bf
|
7
|
+
data.tar.gz: ecb237465ed4aa8581c39ed41c264f9afbfa284417ebbafd4b58735481dbe2191f5b061c44f76b74f8b0fe545f15dc43fc0414e47e1e92217e70338c50b563bb
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Difftastic::ANSI
|
4
|
+
RED = "\e[91;1m"
|
5
|
+
GREEN = "\e[92;1m"
|
6
|
+
RESET = "\e[0m"
|
7
|
+
|
8
|
+
def self.green(string = "")
|
9
|
+
"#{GREEN}#{string}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.red(string = "")
|
13
|
+
"#{RED}#{string}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.reset(string = "")
|
17
|
+
"#{RESET}#{string}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.strip_formatting(string)
|
21
|
+
string.to_s.gsub(/\e\[[0-9;]*m/, "")
|
22
|
+
end
|
23
|
+
end
|
data/lib/difftastic/differ.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Difftastic::Differ
|
4
|
-
def initialize(background: nil, color: nil, syntax_highlight: nil, context: nil, tab_width: nil, parse_error_limit: nil, underline_highlights: true)
|
4
|
+
def initialize(background: nil, color: nil, syntax_highlight: nil, context: nil, tab_width: nil, parse_error_limit: nil, underline_highlights: true, left_label: nil, right_label: nil)
|
5
5
|
@show_paths = false
|
6
6
|
@background = background => :dark | :light | nil
|
7
7
|
@color = color => :always | :never | :auto | nil
|
@@ -10,6 +10,8 @@ class Difftastic::Differ
|
|
10
10
|
@tab_width = tab_width => Integer | nil
|
11
11
|
@parse_error_limit = parse_error_limit => Integer | nil
|
12
12
|
@underline_highlights = underline_highlights => true | false
|
13
|
+
@left_label = left_label => String | nil
|
14
|
+
@right_label = right_label => String | nil
|
13
15
|
end
|
14
16
|
|
15
17
|
def diff_objects(old, new)
|
@@ -297,6 +299,30 @@ class Difftastic::Differ
|
|
297
299
|
result = result.byteslice(new_line_index, result.bytesize - new_line_index)
|
298
300
|
end
|
299
301
|
|
302
|
+
if @left_label || @right_label
|
303
|
+
# Get the first content line to calculate offset
|
304
|
+
offset_line = @show_paths ? 1 : 0
|
305
|
+
first_line = result.split("\n")[offset_line]
|
306
|
+
|
307
|
+
# Calculate padding needed between labels
|
308
|
+
offset = right_label_offset(first_line)
|
309
|
+
|
310
|
+
left_part = if @left_label
|
311
|
+
Difftastic::ANSI.red(@left_label.to_s.ljust(offset))
|
312
|
+
else
|
313
|
+
" " * offset
|
314
|
+
end
|
315
|
+
|
316
|
+
right_part = if @right_label
|
317
|
+
Difftastic::ANSI.green(@right_label.to_s)
|
318
|
+
else
|
319
|
+
""
|
320
|
+
end
|
321
|
+
|
322
|
+
# Insert formatted labels at the top
|
323
|
+
result = "\n#{left_part}#{right_part}#{Difftastic::ANSI.reset}\n#{result}"
|
324
|
+
end
|
325
|
+
|
300
326
|
# Removed due to inconsistencies in the original output. Need to improve the pattern matching.
|
301
327
|
# if @underline_highlights
|
302
328
|
# result.gsub!(/\e\[([0-9;]*)m/) {
|
@@ -311,4 +337,16 @@ class Difftastic::Differ
|
|
311
337
|
|
312
338
|
result
|
313
339
|
end
|
340
|
+
|
341
|
+
private
|
342
|
+
|
343
|
+
def right_label_offset(line)
|
344
|
+
stripped_line = ::Difftastic::ANSI.strip_formatting(line)
|
345
|
+
_lhs, rhs = stripped_line.split(/\s{#{@tab_width},}/, 2)
|
346
|
+
|
347
|
+
offset = (stripped_line.index("#{' ' * @tab_width}#{rhs}") || 0) + @tab_width
|
348
|
+
minimum_offset = 29
|
349
|
+
|
350
|
+
[minimum_offset, offset].max
|
351
|
+
end
|
314
352
|
end
|
data/lib/difftastic/version.rb
CHANGED
data/lib/difftastic.rb
CHANGED
@@ -4,6 +4,7 @@ require "difftastic/version"
|
|
4
4
|
require "tempfile"
|
5
5
|
|
6
6
|
module Difftastic
|
7
|
+
autoload :ANSI, "difftastic/ansi"
|
7
8
|
autoload :Differ, "difftastic/differ"
|
8
9
|
autoload :Upstream, "difftastic/upstream"
|
9
10
|
|
@@ -39,7 +40,7 @@ module Difftastic
|
|
39
40
|
MESSAGE
|
40
41
|
end
|
41
42
|
|
42
|
-
exe_file = Dir.glob(File.expand_path(File.join(exe_path, "
|
43
|
+
exe_file = Dir.glob(File.expand_path(File.join(exe_path, "**", "difft"))).find do |f|
|
43
44
|
Gem::Platform.match_gem?(Gem::Platform.new(File.basename(File.dirname(f))), GEM_NAME)
|
44
45
|
end
|
45
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: difftastic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: arm64-linux
|
6
6
|
authors:
|
7
7
|
- Joel Drapper
|
@@ -22,6 +22,7 @@ files:
|
|
22
22
|
- exe/arm64-linux/difft
|
23
23
|
- exe/difft
|
24
24
|
- lib/difftastic.rb
|
25
|
+
- lib/difftastic/ansi.rb
|
25
26
|
- lib/difftastic/differ.rb
|
26
27
|
- lib/difftastic/upstream.rb
|
27
28
|
- lib/difftastic/version.rb
|