colszowka-cucumber_table_formatter 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +39 -2
- data/Rakefile +2 -2
- data/VERSION.yml +4 -0
- data/bin/format_cucumber_table +13 -1
- data/cucumber_table_formatter.gemspec +56 -0
- data/lib/cucumber_table_formatter.rb +61 -0
- metadata +6 -3
data/README.rdoc
CHANGED
@@ -1,6 +1,43 @@
|
|
1
|
-
= cucumber_table_formatter
|
1
|
+
= cucumber_table_formatter - A formatter for Cucumber tables...
|
2
2
|
|
3
|
-
|
3
|
+
=== Simple command line utility for formatting Cucumber tables properly, either from file or piped input
|
4
|
+
|
5
|
+
== Install with:
|
6
|
+
$ sudo gem install colszowka-cucumber_table_formatter --source http://gems.github.com
|
7
|
+
|
8
|
+
== Example from file
|
9
|
+
Assuming you have a file called 'some_file_containing_the_table.txt' that looks something like this:
|
10
|
+
|
11
|
+
| user | email | url |
|
12
|
+
| colszowka | colszowka@example.com | http://blog.olszowka.de |
|
13
|
+
| ruby-toolbox | rubytoolbox@example.com | http://ruby-toolbox.com |
|
14
|
+
|
15
|
+
$ format_cucumber_table some_file_containing_the_table.txt
|
16
|
+
|
17
|
+
Will print:
|
18
|
+
|
19
|
+
| user | email | url |
|
20
|
+
| colszowka | colszowka@example.com | http://blog.olszowka.de |
|
21
|
+
| ruby-toolbox | rubytoolbox@example.com | http://ruby-toolbox.com |
|
22
|
+
|
23
|
+
== Example from pipe
|
24
|
+
|
25
|
+
$ echo "| a | b |
|
26
|
+
| cd | ef |" | format_cucumber_table
|
27
|
+
|
28
|
+
Will print:
|
29
|
+
|
30
|
+
| a | b |
|
31
|
+
| cd | ef |
|
32
|
+
|
33
|
+
Piping is particularily useful when set up in your favorite editor as an external command (i.e. in gedit)
|
34
|
+
and you use the selected text as input and let the script output replace it - instant table formatting
|
35
|
+
inside your feature files!
|
36
|
+
|
37
|
+
TODO: More description goes here....
|
38
|
+
|
39
|
+
Note: No tests or documentation yet.. Don't be too picky about the implementation, too - it's just
|
40
|
+
hacked together so does what it's supposed to...
|
4
41
|
|
5
42
|
== Note on Patches/Pull Requests
|
6
43
|
|
data/Rakefile
CHANGED
@@ -5,8 +5,8 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "cucumber_table_formatter"
|
8
|
-
gem.summary = %Q{
|
9
|
-
gem.description = %Q{
|
8
|
+
gem.summary = %Q{Formatter for Cucumber tables}
|
9
|
+
gem.description = %Q{Simple command line utility for formatting Cucumber tables properly, either from file or piped input}
|
10
10
|
gem.email = "christoph@olszowka.de"
|
11
11
|
gem.homepage = "http://github.com/colszowka/cucumber_table_formatter"
|
12
12
|
gem.authors = ["Christoph Olszowka"]
|
data/VERSION.yml
ADDED
data/bin/format_cucumber_table
CHANGED
@@ -1 +1,13 @@
|
|
1
|
-
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# Load table formatter class
|
4
|
+
require File.join(File.dirname(__FILE__), '../lib/cucumber_table_formatter')
|
5
|
+
|
6
|
+
# Check for input
|
7
|
+
unless input = readlines or (ARGV[0] and input = File.read(ARGV[0]).split("\n"))
|
8
|
+
puts "Please specify filename!"
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
# Process input and print it
|
13
|
+
print CucumberTableFormatter.new(input).formatted
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{cucumber_table_formatter}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Christoph Olszowka"]
|
12
|
+
s.date = %q{2009-09-18}
|
13
|
+
s.default_executable = %q{format_cucumber_table}
|
14
|
+
s.description = %q{Simple command line utility for formatting Cucumber tables properly, either from file or piped input}
|
15
|
+
s.email = %q{christoph@olszowka.de}
|
16
|
+
s.executables = ["format_cucumber_table"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE",
|
19
|
+
"README.rdoc"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
".gitignore",
|
24
|
+
"LICENSE",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION.yml",
|
28
|
+
"bin/format_cucumber_table",
|
29
|
+
"cucumber_table_formatter.gemspec",
|
30
|
+
"lib/cucumber_table_formatter.rb",
|
31
|
+
"test/cucumber_table_formatter_test.rb",
|
32
|
+
"test/test_helper.rb"
|
33
|
+
]
|
34
|
+
s.homepage = %q{http://github.com/colszowka/cucumber_table_formatter}
|
35
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
36
|
+
s.require_paths = ["lib"]
|
37
|
+
s.rubygems_version = %q{1.3.5}
|
38
|
+
s.summary = %q{Formatter for Cucumber tables}
|
39
|
+
s.test_files = [
|
40
|
+
"test/cucumber_table_formatter_test.rb",
|
41
|
+
"test/test_helper.rb"
|
42
|
+
]
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
|
+
s.specification_version = 3
|
47
|
+
|
48
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
49
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
52
|
+
end
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
$KCODE = 'u'
|
2
|
+
require 'jcode'
|
3
|
+
|
4
|
+
class CucumberTableFormatter
|
5
|
+
attr_accessor :lines
|
6
|
+
attr_reader :whitespace
|
7
|
+
attr_reader :columns
|
8
|
+
|
9
|
+
class Column
|
10
|
+
attr_accessor :values
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@values = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def formatted_values
|
17
|
+
@formatted_values ||= values.map do |value|
|
18
|
+
value_length = value.jlength # Required for ruby 1.8 utf-8 issues
|
19
|
+
" " + " " * (longest_value - value_length) + value + " "
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def longest_value
|
26
|
+
@longest_value ||= values.sort_by {|v| v.length }.reverse.first.length
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(table_string)
|
31
|
+
self.lines = table_string.reject { |l| l.strip.chomp.length == 0 }.map(&:chomp)
|
32
|
+
@whitespace = self.lines.first.split("|")[0].length
|
33
|
+
read_columns!
|
34
|
+
end
|
35
|
+
|
36
|
+
def formatted
|
37
|
+
(0...lines.length).to_a.map { |i| " "*whitespace + "|" + formatted_line(i) + "|" }.join("\n")
|
38
|
+
end
|
39
|
+
|
40
|
+
def formatted_line(index)
|
41
|
+
columns.map do |c|
|
42
|
+
c.formatted_values[index]
|
43
|
+
end.join("|")
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
#
|
49
|
+
# Process the lines
|
50
|
+
#
|
51
|
+
def read_columns!
|
52
|
+
@columns ||= []
|
53
|
+
lines.each do |line|
|
54
|
+
line.strip.chomp.split("|").reject {|l| l.length == 0}.each_with_index do |value, column_index|
|
55
|
+
# Initialize column when needed
|
56
|
+
@columns[column_index] ||= Column.new
|
57
|
+
@columns[column_index].values << value.strip.chomp
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: colszowka-cucumber_table_formatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Olszowka
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
-
description:
|
25
|
+
description: Simple command line utility for formatting Cucumber tables properly, either from file or piped input
|
26
26
|
email: christoph@olszowka.de
|
27
27
|
executables:
|
28
28
|
- format_cucumber_table
|
@@ -37,6 +37,9 @@ files:
|
|
37
37
|
- LICENSE
|
38
38
|
- README.rdoc
|
39
39
|
- Rakefile
|
40
|
+
- VERSION.yml
|
41
|
+
- bin/format_cucumber_table
|
42
|
+
- cucumber_table_formatter.gemspec
|
40
43
|
- lib/cucumber_table_formatter.rb
|
41
44
|
- test/cucumber_table_formatter_test.rb
|
42
45
|
- test/test_helper.rb
|
@@ -66,7 +69,7 @@ rubyforge_project:
|
|
66
69
|
rubygems_version: 1.3.5
|
67
70
|
signing_key:
|
68
71
|
specification_version: 3
|
69
|
-
summary:
|
72
|
+
summary: Formatter for Cucumber tables
|
70
73
|
test_files:
|
71
74
|
- test/cucumber_table_formatter_test.rb
|
72
75
|
- test/test_helper.rb
|