dynport_tools 0.2.9 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/dynport_tools.gemspec +3 -1
- data/lib/dynport_tools.rb +1 -1
- data/lib/dynport_tools/ascii_table.rb +44 -0
- data/spec/dynport_tools/ascii_table_spec.rb +72 -0
- data/spec/dynport_tools/jenkins_spec.rb +0 -2
- metadata +5 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.10
|
data/dynport_tools.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dynport_tools}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tobias Schwab"]
|
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
"bin/xmldiff",
|
34
34
|
"dynport_tools.gemspec",
|
35
35
|
"lib/dynport_tools.rb",
|
36
|
+
"lib/dynport_tools/ascii_table.rb",
|
36
37
|
"lib/dynport_tools/deep_merger.rb",
|
37
38
|
"lib/dynport_tools/differ.rb",
|
38
39
|
"lib/dynport_tools/eta.rb",
|
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
|
|
41
42
|
"lib/dynport_tools/redis_dumper.rb",
|
42
43
|
"lib/dynport_tools/redis_q.rb",
|
43
44
|
"lib/dynport_tools/xml_file.rb",
|
45
|
+
"spec/dynport_tools/ascii_table_spec.rb",
|
44
46
|
"spec/dynport_tools/deep_merger_spec.rb",
|
45
47
|
"spec/dynport_tools/differ_spec.rb",
|
46
48
|
"spec/dynport_tools/eta_spec.rb",
|
data/lib/dynport_tools.rb
CHANGED
@@ -6,4 +6,4 @@ require "typhoeus"
|
|
6
6
|
require "nokogiri"
|
7
7
|
require "cgi"
|
8
8
|
|
9
|
-
%w(deep_merger differ jenkins redis_dumper xml_file have_attributes redis_q eta).map { |m| require "dynport_tools/#{m}" }
|
9
|
+
%w(deep_merger differ jenkins redis_dumper xml_file have_attributes redis_q eta ascii_table).map { |m| require "dynport_tools/#{m}" }
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "tempfile"
|
2
|
+
|
3
|
+
class DynportTools::AsciiTable
|
4
|
+
attr_accessor :headers
|
5
|
+
attr_accessor :rows
|
6
|
+
|
7
|
+
def initialize(attributes = {})
|
8
|
+
self.headers = attributes[:headers] || []
|
9
|
+
self.rows = attributes[:rows] || []
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_tsv
|
13
|
+
([headers] + rows).map { |line| line.join("\t") }.join("\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_html
|
17
|
+
html = "<table border=1 align=center>"
|
18
|
+
html << "<tr>" + headers.map { |header| html_table_cell(header, "th") }.join("") if headers.any?
|
19
|
+
html << rows.map { |row| "<tr>" + row.map { |r| html_table_cell(r, "td") }.join("") }.join("")
|
20
|
+
html + "</table>"
|
21
|
+
end
|
22
|
+
|
23
|
+
def html_table_cell(text_or_array, node = "td")
|
24
|
+
text, options = text_or_array
|
25
|
+
"<#{node}#{options ? options.map { |key, value| " #{key}=#{value}" }.join("") : ""}>#{text}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_ascii
|
29
|
+
html2ascii(to_html)
|
30
|
+
end
|
31
|
+
|
32
|
+
def to(format)
|
33
|
+
send(:"to_#{format}")
|
34
|
+
end
|
35
|
+
|
36
|
+
def html2ascii(html)
|
37
|
+
tempfile = Tempfile.new("html2ascii")
|
38
|
+
tempfile.print(html)
|
39
|
+
tempfile.close
|
40
|
+
ascii = Kernel.send(:`, "links -dump #{tempfile.path}")
|
41
|
+
tempfile.delete
|
42
|
+
ascii
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DynportTools::AsciiTable do
|
4
|
+
let(:tempfile) { double("tmpfile").as_null_object }
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
Tempfile.stub(:new).and_return tempfile
|
8
|
+
Kernel.stub!(:`).and_return ""
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#to_tsv" do
|
12
|
+
it "returns the correct tsv" do
|
13
|
+
DynportTools::AsciiTable.new(:headers => %w(A B), :rows => [%w(1 2), %w(3 4)]).to_tsv.should == "A\tB\n1\t2\n3\t4"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#to_html" do
|
18
|
+
it "returns the correct html" do
|
19
|
+
result = "<table border=1 align=center><tr><th>A<th>B<tr><td>1<td>2<tr><td>3<td>4</table>"
|
20
|
+
DynportTools::AsciiTable.new(:headers => %w(A B), :rows => [%w(1 2), %w(3 4)]).to_html.should == result
|
21
|
+
end
|
22
|
+
|
23
|
+
it "does not include a header when not set" do
|
24
|
+
DynportTools::AsciiTable.new(:rows => [%w(1 2), %w(3 4)]).to_html.should_not include("th")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "uses options for headers" do
|
28
|
+
DynportTools::AsciiTable.new(:headers => [["A", {:colspan => 1}], "B"]).to_html.should include("<tr><th colspan=1>A<th>B")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "uses options for rows" do
|
32
|
+
DynportTools::AsciiTable.new(:rows => [[["A", {:colspan => 1}], "B"]]).to_html.should include("<tr><td colspan=1>A<td>B")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#to_ascii" do
|
37
|
+
it "calls html2ascii with response of to_html" do
|
38
|
+
table = DynportTools::AsciiTable.new
|
39
|
+
html = double("html")
|
40
|
+
table.should_receive(:to_html).and_return html
|
41
|
+
ascii = double("ascii")
|
42
|
+
table.should_receive(:html2ascii).with(html).and_return ascii
|
43
|
+
table.to_ascii.should == ascii
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#html2ascii" do
|
48
|
+
it "writes the html to a tempfile, closes and deletes it" do
|
49
|
+
Tempfile.should_receive(:new).with("html2ascii").and_return tempfile
|
50
|
+
tempfile.should_receive(:print).with("text")
|
51
|
+
tempfile.should_receive(:close)
|
52
|
+
tempfile.should_receive(:delete)
|
53
|
+
DynportTools::AsciiTable.new.html2ascii("text")
|
54
|
+
end
|
55
|
+
|
56
|
+
it "calls links with correct params" do
|
57
|
+
tempfile.should_receive(:path).and_return "/some/path"
|
58
|
+
Kernel.should_receive(:`).with("links -dump /some/path").and_return "result"
|
59
|
+
DynportTools::AsciiTable.new.html2ascii("test")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#to" do
|
64
|
+
{ "html" => :to_html, :html => :to_html, "ascii" => :to_ascii }.each do |from, to|
|
65
|
+
it "calls #{to} for #{from}" do
|
66
|
+
table = DynportTools::AsciiTable.new
|
67
|
+
table.should_receive(to).and_return ""
|
68
|
+
table.to(from)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynport_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 10
|
10
|
+
version: 0.2.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- bin/xmldiff
|
221
221
|
- dynport_tools.gemspec
|
222
222
|
- lib/dynport_tools.rb
|
223
|
+
- lib/dynport_tools/ascii_table.rb
|
223
224
|
- lib/dynport_tools/deep_merger.rb
|
224
225
|
- lib/dynport_tools/differ.rb
|
225
226
|
- lib/dynport_tools/eta.rb
|
@@ -228,6 +229,7 @@ files:
|
|
228
229
|
- lib/dynport_tools/redis_dumper.rb
|
229
230
|
- lib/dynport_tools/redis_q.rb
|
230
231
|
- lib/dynport_tools/xml_file.rb
|
232
|
+
- spec/dynport_tools/ascii_table_spec.rb
|
231
233
|
- spec/dynport_tools/deep_merger_spec.rb
|
232
234
|
- spec/dynport_tools/differ_spec.rb
|
233
235
|
- spec/dynport_tools/eta_spec.rb
|