gotime-slither 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/History.txt +16 -0
- data/README.rdoc +109 -0
- data/Rakefile +37 -0
- data/TODO +14 -0
- data/gotime-slither.gemspec +0 -0
- data/lib/gotime-slither.rb +7 -0
- data/lib/slither/column.rb +146 -0
- data/lib/slither/definition.rb +35 -0
- data/lib/slither/generator.rb +37 -0
- data/lib/slither/parser.rb +109 -0
- data/lib/slither/section.rb +109 -0
- data/lib/slither/slither.rb +57 -0
- data/spec/column_spec.rb +229 -0
- data/spec/definition_spec.rb +86 -0
- data/spec/generator_spec.rb +48 -0
- data/spec/parser_spec.rb +297 -0
- data/spec/section_spec.rb +156 -0
- data/spec/slither_spec.rb +89 -0
- data/spec/spec_helper.rb +3 -0
- metadata +82 -0
@@ -0,0 +1,89 @@
|
|
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
|
+
file_io = mock("IO")
|
78
|
+
parser = mock("parser")
|
79
|
+
definition = Slither::Definition.new :by_bytes => false
|
80
|
+
|
81
|
+
File.should_receive(:open).and_return(file_io)
|
82
|
+
Slither.should_receive(:definition).with(:test).and_return(definition)
|
83
|
+
Slither::Parser.should_receive(:new).with(definition, file_io).and_return(parser)
|
84
|
+
parser.should_receive(:parse).and_return("parse result")
|
85
|
+
|
86
|
+
Slither.parse(@file_name, :test).should eq("parse result")
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gotime-slither
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Wood
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2010-10-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bones
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.5.1
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.5.1
|
27
|
+
description: A simple, clean DSL for describing, writing, and parsing fixed-width
|
28
|
+
text files.
|
29
|
+
email: ryan.wood@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files:
|
33
|
+
- History.txt
|
34
|
+
- README.rdoc
|
35
|
+
files:
|
36
|
+
- History.txt
|
37
|
+
- README.rdoc
|
38
|
+
- Rakefile
|
39
|
+
- TODO
|
40
|
+
- gotime-slither.gemspec
|
41
|
+
- lib/gotime-slither.rb
|
42
|
+
- lib/slither/column.rb
|
43
|
+
- lib/slither/definition.rb
|
44
|
+
- lib/slither/generator.rb
|
45
|
+
- lib/slither/parser.rb
|
46
|
+
- lib/slither/section.rb
|
47
|
+
- lib/slither/slither.rb
|
48
|
+
- spec/column_spec.rb
|
49
|
+
- spec/definition_spec.rb
|
50
|
+
- spec/generator_spec.rb
|
51
|
+
- spec/parser_spec.rb
|
52
|
+
- spec/section_spec.rb
|
53
|
+
- spec/slither_spec.rb
|
54
|
+
- spec/spec_helper.rb
|
55
|
+
homepage: http://github.com/ryanwood/slither
|
56
|
+
licenses: []
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options:
|
60
|
+
- "--main"
|
61
|
+
- README.rdoc
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubyforge_project: !binary |-
|
76
|
+
AA==
|
77
|
+
rubygems_version: 2.2.2
|
78
|
+
signing_key:
|
79
|
+
specification_version: 2
|
80
|
+
summary: A simple, clean DSL for describing, writing, and parsing fixed-width text
|
81
|
+
files
|
82
|
+
test_files: []
|