dry-file 0.1.3 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74088c4434597c52c8be30c0d5376aa1100b9bba9ec23183bca43862a0a6c408
4
- data.tar.gz: f30ffba2614d78f565164644b8cb8e111e678adadfceced1d42c74f271112aa6
3
+ metadata.gz: 8f0c30f41095a9db669ec7d0c0c2e37b8240ea30516aa1fed27704bdd94bceb4
4
+ data.tar.gz: 4b47bac06e808deaa5a60bd7e972d8cb46b71d000f186205b3a687dfff4eaedf
5
5
  SHA512:
6
- metadata.gz: b83e595eef237ac929dc1afc4be2049a9c98c97f16373e36cec599c2929429a8953a9f9998dbe106cb7cdf3af3c3399d0e8327258936c3f603764d00c732a4cc
7
- data.tar.gz: 36a6cfbebe9ef56c25e70574ceb3ef04865d5cc6c8f5003e5e79c78a6db245ec190b52cfaa36e88f4d7d4532ec79e7eb554cba0d4b135153d2d651f21ce05282
6
+ metadata.gz: a60d28399e5dbeca9f75b7adaa6ad61b9f33cd65094fc61d25ae16e24dcf2adcbd6935de0331ad75d3044469b25fb956d75aef51d5486639f0e2ef5831e5c9ad
7
+ data.tar.gz: 1d2f01e718768cc1b73a833a5dabd34525abe7f2bba666c28da3072d2cb53af8f2ae727402011daea92dad6ed0936695e3fcde66fb1a608fe35633b4dce350db
data/README.md CHANGED
@@ -1,9 +1,22 @@
1
1
  Purpose:
2
2
 
3
- Remove duplicate URLs from a file, where the URLs only differ in the value of the params
3
+ Remove duplicate URLs from a file, where the URLs only differ by N characters
4
4
 
5
5
  Usage:
6
6
 
7
- dry 40 $domain/scan/gf/xss.txt # creates dry-xss.txt
7
+ # With pipe
8
+ cat <file> | dry <N>
8
9
 
9
- This gem has been deprecated since gh/tomnomnom/qsreplace does the same job more efficiently.
10
+ # With file
11
+ dry <N> <file> [options]
12
+
13
+ Example:
14
+
15
+ # Read from a pipe and print to stdout
16
+ cat file | dry 50
17
+
18
+ # Which is the same as
19
+ dry 50 file
20
+
21
+ # Replace file in-place
22
+ dry 40 $domain/scan/gf/xss.txt -i
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module File
5
- VERSION = "0.1.3"
5
+ VERSION = "0.1.4"
6
6
  end
7
7
  end
data/lib/dry-file.rb CHANGED
@@ -12,30 +12,27 @@ module Dry
12
12
  # max_chars: minimum number of different characters to keep a line.
13
13
  # file: input file.
14
14
  # options: '-i' replace file in-place.
15
- def run(max_chars, file, *options)
15
+ def run(max_chars, file=nil, *options)
16
16
  max_chars = max_chars.to_i
17
17
  previous_line = ''
18
- file_out = if options.include?('-i')
19
- File.basename(file)
20
- else
21
- "dry-#{File.basename(file)}"
22
- end
18
+ new_lines = ''
19
+ ARGV.clear
23
20
 
24
- temp_file = Tempfile.new(File.basename(file))
21
+ lines = file.nil? ? ARGF.read : File.open(file)
25
22
 
26
- File.open(file).each_line do |l|
23
+ lines.each_line do |l|
27
24
  # We compare the line size as well as the line similarity. We could have
28
25
  # different treshold values for each of these comparisons (eg use
29
26
  # +max_chars+ for the size comparison and +max_diff_chars+ for the
30
27
  # similarity comparison, but i think using +max_chars+ for both
31
28
  # comparisons is also OK, the results seem pretty good.
32
29
  if (previous_line.size - l.size).abs > max_chars || diff_size(previous_line, l) > max_chars
33
- temp_file.write l
30
+ new_lines << l
34
31
  previous_line = l
35
32
  end
36
33
  end
37
- temp_file.close
38
- FileUtils.mv(temp_file.path, File.join(File.dirname(file), file_out))
34
+
35
+ options.include?('-i') ? File.write(file, new_lines) : puts(new_lines)
39
36
  end
40
37
 
41
38
  # Returns the number of differing characters between two lines.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-file
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Romero
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-25 00:00:00.000000000 Z
11
+ date: 2022-11-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Removes almost identical lines based on a similarity parameter.
14
14
  email: