tabelr 0.0.6 → 0.0.7
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.
- data/lib/tabelr/table_formater.rb +18 -10
- data/lib/tabelr.rb +16 -3
- data/tabelr.gemspec +1 -1
- data/test/example2.json +56 -0
- data/test/example2.txt +12 -0
- data/test/test_all.rb +3 -0
- data/test/test_tabelr.rb +56 -4
- data/test/test_table_formater.rb +31 -0
- metadata +9 -4
- data/test/test.run +0 -8
- /data/test/{output.txt → example.txt} +0 -0
@@ -7,6 +7,8 @@ module Tabelr
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def go json, output
|
10
|
+
raise 'aw' if output.respond_to? :Append
|
11
|
+
|
10
12
|
parse json
|
11
13
|
analyse
|
12
14
|
dump output
|
@@ -22,12 +24,19 @@ module Tabelr
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def parse json
|
25
|
-
|
26
|
-
json
|
27
|
-
|
27
|
+
@header = true
|
28
|
+
json.each_value { |h| parse_hash h }
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_hash hash
|
32
|
+
if @header
|
33
|
+
hash.first.each_key { |key| stash key }
|
34
|
+
bank
|
35
|
+
@header = false
|
36
|
+
end
|
28
37
|
|
29
38
|
# content/row
|
30
|
-
|
39
|
+
hash.each do |line|
|
31
40
|
line.each_value { |value| stash value }
|
32
41
|
bank
|
33
42
|
end
|
@@ -43,16 +52,15 @@ module Tabelr
|
|
43
52
|
end
|
44
53
|
|
45
54
|
def dump output
|
46
|
-
output
|
55
|
+
output << divider
|
47
56
|
@lines.each_with_index do |line, index|
|
48
|
-
output
|
57
|
+
output << divider if index == 1
|
49
58
|
line.each_with_index do |item, i|
|
50
|
-
output
|
59
|
+
output << format(item.to_s, @max_len[i])
|
51
60
|
end
|
52
|
-
output
|
61
|
+
output << "|\n"
|
53
62
|
end
|
54
|
-
output
|
55
|
-
output.flush
|
63
|
+
output << divider
|
56
64
|
end
|
57
65
|
|
58
66
|
def max a, b
|
data/lib/tabelr.rb
CHANGED
@@ -6,12 +6,13 @@ module Tabelr
|
|
6
6
|
|
7
7
|
def run
|
8
8
|
args = parse_args
|
9
|
+
return unless valid? args
|
10
|
+
|
9
11
|
@tf = TableFormator.new
|
10
12
|
|
11
13
|
json = JSON.parse(File.read(args[0]))
|
12
|
-
output = STDOUT
|
13
|
-
output =
|
14
|
-
|
14
|
+
# output = STDOUT
|
15
|
+
output = $stdout
|
15
16
|
@tf.go json, output
|
16
17
|
end
|
17
18
|
|
@@ -23,5 +24,17 @@ module Tabelr
|
|
23
24
|
commands
|
24
25
|
end
|
25
26
|
|
27
|
+
def valid? args
|
28
|
+
if args.nil? or args[0].nil?
|
29
|
+
puts "Man, you gotta give me a file to read from!"
|
30
|
+
return
|
31
|
+
end
|
32
|
+
unless File.exist?(args[0])
|
33
|
+
puts "Man, you gotta give me a valid file to read from!"
|
34
|
+
return
|
35
|
+
end
|
36
|
+
true
|
37
|
+
end
|
38
|
+
|
26
39
|
end
|
27
40
|
end
|
data/tabelr.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = "tabelr"
|
3
3
|
s.summary = "Creates neat aligned ascii tables from a json input"
|
4
4
|
s.description = "Creates neat aligned ascii tables from a json input"
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.7"
|
6
6
|
s.author = "Ian Vaughan"
|
7
7
|
s.email = "tabelr@ianvaughan.co.uk"
|
8
8
|
s.homepage = "http://ianvaughan.co.uk"
|
data/test/example2.json
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
{
|
2
|
+
"data":
|
3
|
+
[
|
4
|
+
{
|
5
|
+
"column1": "This",
|
6
|
+
"column2": "is",
|
7
|
+
"column3": "quite",
|
8
|
+
"column4": "cool!"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"column1": "This",
|
12
|
+
"column2": "is the longest field",
|
13
|
+
"column3": "by far",
|
14
|
+
"column4": 1241
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"column1": "Short",
|
18
|
+
"column2": "fields",
|
19
|
+
"column3": "fit",
|
20
|
+
"column4": "in"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"column1": "other",
|
24
|
+
"column2": "eg",
|
25
|
+
"column3": null,
|
26
|
+
"column4": 33221199999999991111211111111111
|
27
|
+
}
|
28
|
+
],
|
29
|
+
"doesnt matter":
|
30
|
+
[
|
31
|
+
{
|
32
|
+
"column1": "This",
|
33
|
+
"column2": "is",
|
34
|
+
"column3": "quite",
|
35
|
+
"column4": "cool!"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"column1": "This",
|
39
|
+
"column2": "is the longest field",
|
40
|
+
"column3": "by far",
|
41
|
+
"column4": 1241
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"column1": "Short",
|
45
|
+
"column2": "fields",
|
46
|
+
"column3": "fit",
|
47
|
+
"column4": "in"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"column1": "other---------------------",
|
51
|
+
"column2": "eg",
|
52
|
+
"column3": null,
|
53
|
+
"column4": 3322119999999999
|
54
|
+
}
|
55
|
+
]
|
56
|
+
}
|
data/test/example2.txt
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
+----------------------------+----------------------+---------+----------------------------------+
|
2
|
+
| column1 | column2 | column3 | column4 |
|
3
|
+
+----------------------------+----------------------+---------+----------------------------------+
|
4
|
+
| This | is | quite | cool! |
|
5
|
+
| This | is the longest field | by far | 1241 |
|
6
|
+
| Short | fields | fit | in |
|
7
|
+
| other | eg | | 33221199999999991111211111111111 |
|
8
|
+
| This | is | quite | cool! |
|
9
|
+
| This | is the longest field | by far | 1241 |
|
10
|
+
| Short | fields | fit | in |
|
11
|
+
| other--------------------- | eg | | 3322119999999999 |
|
12
|
+
+----------------------------+----------------------+---------+----------------------------------+
|
data/test/test_all.rb
ADDED
data/test/test_tabelr.rb
CHANGED
@@ -1,11 +1,63 @@
|
|
1
1
|
require "test/unit"
|
2
|
+
require 'stringio'
|
2
3
|
require_relative '../lib/tabelr'
|
3
4
|
|
4
5
|
class TestTabelr < Test::Unit::TestCase
|
5
|
-
|
6
|
+
|
7
|
+
def test_output
|
8
|
+
stdout_orig = $stdout
|
9
|
+
$stdout = StringIO.new
|
10
|
+
yield if block_given?
|
11
|
+
result = $stdout.string.dup
|
12
|
+
$stdout = stdout_orig
|
13
|
+
result
|
14
|
+
end
|
15
|
+
|
16
|
+
# run
|
17
|
+
|
18
|
+
def test_run
|
6
19
|
ARGV[0] = 'test/example.json'
|
7
|
-
|
8
|
-
|
9
|
-
|
20
|
+
result = test_output do
|
21
|
+
Tabelr.run
|
22
|
+
end
|
23
|
+
assert_equal File.read('test/example.txt'), result
|
24
|
+
end
|
25
|
+
|
26
|
+
# #parse-args
|
27
|
+
|
28
|
+
def test_parse_args_no_args
|
29
|
+
ARGV.clear
|
30
|
+
result = Tabelr.parse_args
|
31
|
+
assert_equal [], result
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_parse_args_one_arg
|
35
|
+
ARGV[0] = ''
|
36
|
+
result = Tabelr.parse_args
|
37
|
+
assert_equal [''], result
|
10
38
|
end
|
39
|
+
|
40
|
+
# valid
|
41
|
+
|
42
|
+
def test_valid_with_no_args
|
43
|
+
result = test_output do
|
44
|
+
Tabelr.valid? nil
|
45
|
+
end
|
46
|
+
assert_equal "Man, you gotta give me a file to read from!\n", result
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_valid_one_invalid_arg
|
50
|
+
result = test_output do
|
51
|
+
Tabelr.valid? ['']
|
52
|
+
end
|
53
|
+
assert_equal "Man, you gotta give me a valid file to read from!\n", result
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_valid_with_one_valid_arg
|
57
|
+
result = test_output do
|
58
|
+
Tabelr.valid? [__FILE__]
|
59
|
+
end
|
60
|
+
assert_equal "", result
|
61
|
+
end
|
62
|
+
|
11
63
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require_relative '../lib/tabelr/table_formater'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class TestTabelr < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@tf = Tabelr::TableFormator.new
|
9
|
+
@input = JSON.parse(File.read('test/example.json'))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_no_file
|
13
|
+
# ARGV[1] = 'test/test.run'
|
14
|
+
output = ''
|
15
|
+
@tf.go @input, output
|
16
|
+
assert_equal output, File.read('test/example.txt')
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_larger_hash
|
20
|
+
# ARGV[0] = 'test/example2.json'
|
21
|
+
# ARGV[1] = 'test/test.run'
|
22
|
+
# Tabelr.run
|
23
|
+
# assert_equal File.read('test/example2.txt'), File.read(ARGV[1])
|
24
|
+
# File.delete ARGV[1]
|
25
|
+
end
|
26
|
+
|
27
|
+
# def test_no_file
|
28
|
+
# Tabelr.run
|
29
|
+
# assert_equal "No file"
|
30
|
+
# end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabelr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Creates neat aligned ascii tables from a json input
|
15
15
|
email: tabelr@ianvaughan.co.uk
|
@@ -25,9 +25,12 @@ files:
|
|
25
25
|
- stash
|
26
26
|
- tabelr.gemspec
|
27
27
|
- test/example.json
|
28
|
-
- test/
|
29
|
-
- test/
|
28
|
+
- test/example.txt
|
29
|
+
- test/example2.json
|
30
|
+
- test/example2.txt
|
31
|
+
- test/test_all.rb
|
30
32
|
- test/test_tabelr.rb
|
33
|
+
- test/test_table_formater.rb
|
31
34
|
homepage: http://ianvaughan.co.uk
|
32
35
|
licenses: []
|
33
36
|
post_install_message:
|
@@ -53,4 +56,6 @@ signing_key:
|
|
53
56
|
specification_version: 3
|
54
57
|
summary: Creates neat aligned ascii tables from a json input
|
55
58
|
test_files:
|
59
|
+
- test/test_all.rb
|
56
60
|
- test/test_tabelr.rb
|
61
|
+
- test/test_table_formater.rb
|
data/test/test.run
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
+---------+----------------------+---------+------------------+
|
2
|
-
| column1 | column2 | column3 | column4 |
|
3
|
-
+---------+----------------------+---------+------------------+
|
4
|
-
| This | is | quite | cool! |
|
5
|
-
| This | is the longest field | by far | 1241 |
|
6
|
-
| Short | fields | fit | in |
|
7
|
-
| other | eg | | 3322119999999999 |
|
8
|
-
+---------+----------------------+---------+------------------+
|
File without changes
|