slither 0.99.4 → 0.99.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +22 -0
- data/CHANGELOG.md +26 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +63 -0
- data/LICENSE.txt +21 -0
- data/README.md +95 -0
- data/Rakefile +12 -37
- data/TODO +2 -1
- data/lib/slither/column.rb +96 -76
- data/lib/slither/definition.rb +28 -13
- data/lib/slither/generator.rb +46 -26
- data/lib/slither/parser.rb +118 -53
- data/lib/slither/section.rb +39 -21
- data/lib/slither/version.rb +5 -0
- data/lib/slither.rb +68 -7
- data/sig/slither.rbs +4 -0
- metadata +81 -82
- data/History.txt +0 -16
- data/README.rdoc +0 -100
- data/lib/slither/slither.rb +0 -49
- data/slither.gemspec +0 -0
- data/spec/column_spec.rb +0 -224
- data/spec/definition_spec.rb +0 -85
- data/spec/generator_spec.rb +0 -42
- data/spec/parser_spec.rb +0 -74
- data/spec/section_spec.rb +0 -146
- data/spec/slither_spec.rb +0 -84
- data/spec/spec_helper.rb +0 -4
data/spec/section_spec.rb
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
-
|
3
|
-
describe Slither::Section do
|
4
|
-
before(:each) do
|
5
|
-
@section = Slither::Section.new(:body)
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should have no columns after creation" do
|
9
|
-
@section.columns.should be_empty
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should know it's reserved names" do
|
13
|
-
Slither::Section::RESERVED_NAMES.should == [:spacer]
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "when adding columns" do
|
17
|
-
it "should build an ordered column list" do
|
18
|
-
@section.should have(0).columns
|
19
|
-
|
20
|
-
col1 = @section.column :id, 10
|
21
|
-
col2 = @section.column :name, 30
|
22
|
-
col3 = @section.column :state, 2
|
23
|
-
|
24
|
-
@section.should have(3).columns
|
25
|
-
@section.columns[0].should be(col1)
|
26
|
-
@section.columns[1].should be(col2)
|
27
|
-
@section.columns[2].should be(col3)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should create spacer columns" do
|
31
|
-
@section.should have(0).columns
|
32
|
-
@section.spacer(5)
|
33
|
-
@section.should have(1).columns
|
34
|
-
end
|
35
|
-
|
36
|
-
it "can should override the alignment of the definition" do
|
37
|
-
section = Slither::Section.new('name', :align => :left)
|
38
|
-
section.options[:align].should == :left
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should use a missing method to create a column" do
|
42
|
-
@section.should have(0).columns
|
43
|
-
@section.first_name 5
|
44
|
-
@section.should have(1).columns
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should prevent duplicate column names" do
|
48
|
-
@section.column :id, 10
|
49
|
-
lambda { @section.column(:id, 30) }.should raise_error(Slither::DuplicateColumnNameError, "You have already defined a column named 'id'.")
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should allow duplicate column names that are reserved (i.e. spacer)" do
|
53
|
-
@section.spacer 10
|
54
|
-
lambda { @section.spacer 10 }.should_not raise_error(Slither::DuplicateColumnNameError)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should accept and store the trap as a block" do
|
59
|
-
@section.trap { |v| v == 4 }
|
60
|
-
trap = @section.instance_variable_get(:@trap)
|
61
|
-
trap.should be_a(Proc)
|
62
|
-
trap.call(4).should == true
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "when adding a template" do
|
66
|
-
before(:each) do
|
67
|
-
@template = mock('templated section', :columns => [1,2,3], :options => {})
|
68
|
-
@definition = mock("definition", :templates => { :test => @template } )
|
69
|
-
@section.definition = @definition
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should ensure the template exists" do
|
73
|
-
@definition.stub! :templates => {}
|
74
|
-
lambda { @section.template(:none) }.should raise_error(ArgumentError)
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should add the template columns to the current column list" do
|
78
|
-
@section.template :test
|
79
|
-
@section.should have(3).columns
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should merge the template option" do
|
83
|
-
@section = Slither::Section.new(:body, :align => :left)
|
84
|
-
@section.definition = @definition
|
85
|
-
@template.stub! :options => {:align => :right}
|
86
|
-
@section.template :test
|
87
|
-
@section.options.should == {:align => :left}
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "when formatting a row" do
|
92
|
-
before(:each) do
|
93
|
-
@data = { :id => 3, :name => "Ryan" }
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should default to string data aligned right" do
|
97
|
-
@section.column(:id, 5)
|
98
|
-
@section.column(:name, 10)
|
99
|
-
@section.format( @data ).should == " 3 Ryan"
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should left align if asked" do
|
103
|
-
@section.column(:id, 5)
|
104
|
-
@section.column(:name, 10, :align => :left)
|
105
|
-
@section.format(@data).should == " 3Ryan "
|
106
|
-
end
|
107
|
-
|
108
|
-
# it "should raise an error if the data and column definitions aren't the same size" do
|
109
|
-
# @section.column(:id, 5)
|
110
|
-
# lambda { @section.format(@data) }.should raise_error(
|
111
|
-
# Slither::ColumnMismatchError,
|
112
|
-
# "The 'body' section has 1 column(s) defined, but there are 2 column(s) provided in the data."
|
113
|
-
# )
|
114
|
-
# end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe "when parsing a file" do
|
118
|
-
before(:each) do
|
119
|
-
@line = ' 45 Ryan WoodSC '
|
120
|
-
@section = Slither::Section.new(:body)
|
121
|
-
@column_content = { :id => 5, :first => 10, :last => 10, :state => 2 }
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should return a key for key column" do
|
125
|
-
@column_content.each { |k,v| @section.column(k, v) }
|
126
|
-
parsed = @section.parse(@line)
|
127
|
-
@column_content.each_key { |name| parsed.should have_key(name) }
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should not return a key for reserved names" do
|
131
|
-
@column_content.each { |k,v| @section.column(k, v) }
|
132
|
-
@section.spacer 5
|
133
|
-
@section.should have(5).columns
|
134
|
-
parsed = @section.parse(@line)
|
135
|
-
parsed.should have(4).keys
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should try to match a line using the trap" do
|
140
|
-
@section.trap do |line|
|
141
|
-
line == 'hello'
|
142
|
-
end
|
143
|
-
@section.match('hello').should be_true
|
144
|
-
@section.match('goodbye').should be_false
|
145
|
-
end
|
146
|
-
end
|
data/spec/slither_spec.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
-
|
3
|
-
describe Slither do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@name = :doc
|
7
|
-
@options = { :align => :left }
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "when defining a format" do
|
11
|
-
before(:each) do
|
12
|
-
@definition = mock('definition')
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should create a new definition using the specified name and options" do
|
16
|
-
Slither.should_receive(:define).with(@name, @options).and_return(@definition)
|
17
|
-
Slither.define(@name , @options)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should pass the definition to the block" do
|
21
|
-
yielded = nil
|
22
|
-
Slither.define(@name) do |y|
|
23
|
-
yielded = y
|
24
|
-
end
|
25
|
-
yielded.should be_a( Slither::Definition )
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should add to the internal definition count" do
|
29
|
-
Slither.definitions.clear
|
30
|
-
Slither.should have(0).definitions
|
31
|
-
Slither.define(@name , @options) {}
|
32
|
-
Slither.should have(1).definitions
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "when creating file from data" do
|
37
|
-
it "should raise an error if the definition name is not found" do
|
38
|
-
lambda { Slither.generate(:not_there, {}) }.should raise_error(ArgumentError)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should output a string" do
|
42
|
-
definition = mock('definition')
|
43
|
-
generator = mock('generator')
|
44
|
-
generator.should_receive(:generate).with({})
|
45
|
-
Slither.should_receive(:definition).with(:test).and_return(definition)
|
46
|
-
Slither::Generator.should_receive(:new).with(definition).and_return(generator)
|
47
|
-
Slither.generate(:test, {})
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should output a file" do
|
51
|
-
file = mock('file')
|
52
|
-
text = mock('string')
|
53
|
-
file.should_receive(:write).with(text)
|
54
|
-
File.should_receive(:open).with('file.txt', 'w').and_yield(file)
|
55
|
-
Slither.should_receive(:generate).with(:test, {}).and_return(text)
|
56
|
-
Slither.write('file.txt', :test, {})
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe "when parsing a file" do
|
61
|
-
before(:each) do
|
62
|
-
@file_name = 'file.txt'
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should check the file exists" do
|
66
|
-
lambda { Slither.parse(@file_name, :test, {}) }.should raise_error(ArgumentError)
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should raise an error if the definition name is not found" do
|
70
|
-
Slither.definitions.clear
|
71
|
-
File.stub!(:exists? => true)
|
72
|
-
lambda { Slither.parse(@file_name, :test, {}) }.should raise_error(ArgumentError)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should create a parser and call parse" do
|
76
|
-
File.stub!(:exists? => true)
|
77
|
-
parser = mock("parser", :null_object => true)
|
78
|
-
definition = mock('definition')
|
79
|
-
Slither.should_receive(:definition).with(:test).and_return(definition)
|
80
|
-
Slither::Parser.should_receive(:new).with(definition, @file_name).and_return(parser)
|
81
|
-
Slither.parse(@file_name, :test)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
data/spec/spec_helper.rb
DELETED