line_ender 0.0.1 → 0.0.2
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/le +78 -0
- data/lib/line_ender.rb +5 -3
- data/lib/test_line_ender.rb +63 -34
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA512:
|
3
|
-
data.tar.gz:
|
4
|
-
metadata.gz:
|
3
|
+
data.tar.gz: 9186cd233ab899bfb47b425f4039fda71d7d840692e20bdc355ee0bc878c0ab3b945f5905a10bfbf0b1d74974b0b8d917e1c5ee7e37955f978e6a2ac89aff24e
|
4
|
+
metadata.gz: 3394b3cdaa70f8a5d7542251a514d45ff1f04338c5f58a99dffe920c9cf97d4e0856ca7dd35dc81be9b8eb541ef07f128e3d8330a1133a967bb921b7cd69d724
|
5
5
|
SHA1:
|
6
|
-
data.tar.gz:
|
7
|
-
metadata.gz:
|
6
|
+
data.tar.gz: ea6ae3546c2020c688b55afcc63dcd37a043f294
|
7
|
+
metadata.gz: 0ae0ea43faecf40c84ce5f6d8610733bfdd2030f
|
data/lib/le
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# == Synopsis
|
3
|
+
# le: This is program that replaces line endings of a file. It either does an inplace update or will write to another file with (-o) switch.
|
4
|
+
# The default line ending is Unix (-u), but other line endings are Windows (-w) or Mac (-m).
|
5
|
+
#
|
6
|
+
# == Note
|
7
|
+
# The -u, -m, and -w flags are mutually exclusive. (Can only choose one).
|
8
|
+
#
|
9
|
+
# == Usage
|
10
|
+
# le [OPTION] ... INPUTFILE
|
11
|
+
#
|
12
|
+
# -h, --help: show help
|
13
|
+
#
|
14
|
+
# -w, --windows: gives the file line endings of carriage return + line feed (\r\n)
|
15
|
+
#
|
16
|
+
# -u, --unix: gives the file line endings of line feed (\n) (default)
|
17
|
+
#
|
18
|
+
# -m, --mac: gives the file line endings of carriage return (\r)
|
19
|
+
#
|
20
|
+
# -o, --out: will write the output to a file with this name
|
21
|
+
#
|
22
|
+
# INPUTFILE: The file you want to modify the line endings for.
|
23
|
+
|
24
|
+
require 'rubygems'
|
25
|
+
require 'getoptlong'
|
26
|
+
require 'rdoc/usage'
|
27
|
+
require 'line_ender'
|
28
|
+
|
29
|
+
include LineEnder
|
30
|
+
|
31
|
+
opts = GetoptLong.new(
|
32
|
+
[ '--windows', '-w', GetoptLong::OPTIONAL_ARGUMENT ],
|
33
|
+
[ '--mac', '-m', GetoptLong::OPTIONAL_ARGUMENT ],
|
34
|
+
[ '--unix', '-u', GetoptLong::OPTIONAL_ARGUMENT ],
|
35
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
|
36
|
+
[ '--out', '-o', GetoptLong::OPTIONAL_ARGUMENT ]
|
37
|
+
)
|
38
|
+
|
39
|
+
outfile = nil
|
40
|
+
infile = nil
|
41
|
+
ending = nil
|
42
|
+
opts.each do |opt, arg|
|
43
|
+
case opt
|
44
|
+
when '--windows'
|
45
|
+
RDoc::usage if ending
|
46
|
+
ending = LineEnder::Ending::Windows
|
47
|
+
when '--unix'
|
48
|
+
RDoc::usage if ending
|
49
|
+
ending = LineEnder::Ending::Unix
|
50
|
+
when '--mac'
|
51
|
+
RDoc::usage if ending
|
52
|
+
ending = LineEnder::Ending::Mac
|
53
|
+
when '--help'
|
54
|
+
RDoc::usage
|
55
|
+
when '--out'
|
56
|
+
outfile = arg
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
ending = LineEnder::Ending::Unix unless ending
|
61
|
+
|
62
|
+
if ARGV.length != 1
|
63
|
+
puts "***---Missing INPUTFILE argument---***"
|
64
|
+
puts
|
65
|
+
RDoc::usage
|
66
|
+
exit 0
|
67
|
+
end
|
68
|
+
|
69
|
+
infile = ARGV.shift
|
70
|
+
|
71
|
+
if outfile
|
72
|
+
output_to_file( infile, ending, outfile )
|
73
|
+
else
|
74
|
+
output_to_file( infile, ending )
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
data/lib/line_ender.rb
CHANGED
@@ -27,6 +27,8 @@ module LineEnder
|
|
27
27
|
raise RuntimeError, "Something is wrong with the 'Ending' parameter passed in!" unless valid_ending?(ending)
|
28
28
|
output_filepath = get_output_filepath(input_filepath, output_filename)
|
29
29
|
puts "output filepath = #{output_filepath}" if @debug
|
30
|
+
|
31
|
+
#this will only happen for an inplace file update
|
30
32
|
if (output_filepath == input_filepath)
|
31
33
|
raise RuntimeError, "File is not writeable!" unless File.writable?(output_filepath)
|
32
34
|
end
|
@@ -67,7 +69,7 @@ module LineEnder
|
|
67
69
|
puts "in get_output_filepath ... output_filepath = #{output_filepath}" if @debug
|
68
70
|
end
|
69
71
|
else
|
70
|
-
#the
|
72
|
+
#the output_filename is a path ... lets expand it
|
71
73
|
output_path = File.expand_path(output_filename).split(::File::Separator)
|
72
74
|
output_filepath = File.join(output_path)
|
73
75
|
end
|
@@ -90,9 +92,9 @@ module LineEnder
|
|
90
92
|
|
91
93
|
def file_to_string(filepath)
|
92
94
|
file = File.open(filepath, "rb")
|
93
|
-
|
95
|
+
file_string = file.read
|
94
96
|
file.close
|
95
|
-
|
97
|
+
file_string
|
96
98
|
end
|
97
99
|
|
98
100
|
def valid_ending?(ending)
|
data/lib/test_line_ender.rb
CHANGED
@@ -11,14 +11,10 @@ class TestLineEnder < Test:: Unit::TestCase
|
|
11
11
|
|
12
12
|
def setup
|
13
13
|
puts 'setup'
|
14
|
-
@debug =
|
14
|
+
@debug = true
|
15
15
|
@tle = TLE.new
|
16
16
|
@file1 = "file1.txt"
|
17
17
|
@file2 = "file2.txt"
|
18
|
-
@le_mac = "a\\\\rb\\\\rc"
|
19
|
-
@le_windows = "a\r\nb\r\nc"
|
20
|
-
@le_unix = "a\nb\nc"
|
21
|
-
system "echo #{@le_mac} > #{@file1}"
|
22
18
|
end
|
23
19
|
|
24
20
|
def teardown
|
@@ -28,36 +24,69 @@ class TestLineEnder < Test:: Unit::TestCase
|
|
28
24
|
system "rm #{@file2}" if File.exists?(@file2)
|
29
25
|
end
|
30
26
|
|
31
|
-
def
|
32
|
-
puts "
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
puts "
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
def test_string_convert_to_windows
|
58
|
-
puts "from test_string_convert_to_windows ..."
|
27
|
+
def test_mac_to_unix_written_to_new_file
|
28
|
+
puts "in test: #{__method__} ..."
|
29
|
+
start_value = "a\rb\rc\r"
|
30
|
+
fixed_value = "a\nb\nc\n"
|
31
|
+
fs = helper_for_file_test(start_value, fixed_value , LineEnder::Ending::Unix, true)
|
32
|
+
assert(File.exists?(@file2), "#{__method__} ... has not written to new file")
|
33
|
+
assert(fs == fixed_value, "#{__method__} ... fixed file is not a match to expected value") if File.exists?(@file2)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_mac_to_windows_write_to_same_file
|
37
|
+
puts "in test: #{__method__} ..."
|
38
|
+
start_value = "a\rb\rc\r\r\r"
|
39
|
+
fixed_value = "a\r\nb\r\nc\r\n\r\n\r\n"
|
40
|
+
fs = helper_for_file_test(start_value, fixed_value , LineEnder::Ending::Windows)
|
41
|
+
assert(fs == fixed_value, "#{__method__} ... fixed file is not a match to expected value")
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_mac_to_windows_string_dump
|
45
|
+
puts "in test: #{__method__} ..."
|
46
|
+
start_value = "a\rb\rc\r\r"
|
47
|
+
fixed_value = "a\r\nb\r\nc\r\n\r\n"
|
48
|
+
helper_write_file(@file1, start_value)
|
49
|
+
helper_for_hexdump("start", @file1) if @debug
|
59
50
|
fs= @tle.output_to_string(@file1, LineEnder::Ending::Windows)
|
60
|
-
assert(fs ==
|
51
|
+
assert(fs == fixed_value, "#{__method__} ... fixed file is not a match to expected value")
|
61
52
|
end
|
62
53
|
|
54
|
+
def helper_for_file_test(start_value, fixed_value, ending_to_use, new_output_file = false)
|
55
|
+
helper_write_file(@file1, start_value)
|
56
|
+
helper_for_hexdump("start", @file1) if @debug
|
57
|
+
if new_output_file
|
58
|
+
@tle.output_to_file( @file1, ending_to_use, @file2 )
|
59
|
+
fixed_file = @file2
|
60
|
+
else
|
61
|
+
@tle.output_to_file( @file1, ending_to_use)
|
62
|
+
fixed_file = @file1
|
63
|
+
end
|
64
|
+
helper_for_hexdump("fixed", fixed_file) if File.exists?(fixed_file) && @debug
|
65
|
+
helper_read_file(fixed_file)
|
66
|
+
end
|
67
|
+
|
68
|
+
def helper_write_file(file_name, value)
|
69
|
+
file = File.new(file_name, "wb")
|
70
|
+
file.binmode
|
71
|
+
file.write(value)
|
72
|
+
file.close
|
73
|
+
end
|
74
|
+
|
75
|
+
def helper_read_file(file_name)
|
76
|
+
file_string = ""
|
77
|
+
if File.exists?(file_name)
|
78
|
+
file = File.open(file_name, "rb")
|
79
|
+
file.binmode
|
80
|
+
file_string = file.read
|
81
|
+
puts "contents of file #{file_name} as a string ... #{file_string.inspect}" if @debug
|
82
|
+
end
|
83
|
+
file_string
|
84
|
+
end
|
85
|
+
|
86
|
+
def helper_for_hexdump(which_file, file_name)
|
87
|
+
puts "#{which_file} file looks like this ..."
|
88
|
+
system "hexdump -C #{file_name}"
|
89
|
+
end
|
90
|
+
|
91
|
+
|
63
92
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: line_ender
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rich Krueger
|
@@ -9,10 +9,10 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-28 00:00:00 Z
|
13
13
|
dependencies: []
|
14
14
|
|
15
|
-
description: A little mixin to change line
|
15
|
+
description: A little mixin to change the line endings of files. Supports Mac, Unix, and Windows line ending conversions.
|
16
16
|
email:
|
17
17
|
- rkrueger@gmail.com
|
18
18
|
executables: []
|
@@ -24,6 +24,7 @@ extra_rdoc_files: []
|
|
24
24
|
files:
|
25
25
|
- lib/line_ender.rb
|
26
26
|
- lib/test_line_ender.rb
|
27
|
+
- lib/le
|
27
28
|
homepage: http://www.hqual.net
|
28
29
|
licenses: []
|
29
30
|
|
@@ -49,6 +50,6 @@ rubyforge_project:
|
|
49
50
|
rubygems_version: 2.0.7
|
50
51
|
signing_key:
|
51
52
|
specification_version: 4
|
52
|
-
summary: Mixin to fix
|
53
|
+
summary: Mixin to fix line endings of files
|
53
54
|
test_files: []
|
54
55
|
|