ananke 0.0.3 → 0.0.4
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/README.rdoc +1 -1
- data/lib/ananke/helpers.rb +46 -0
- data/lib/ananke/linking.rb +37 -0
- data/lib/ananke/routing.rb +117 -0
- data/lib/ananke/settings.rb +28 -0
- data/lib/ananke/validation.rb +37 -0
- data/lib/ananke.rb +6 -245
- data/lib/version.rb +1 -1
- data/spec/lib/ananke_spec.rb +1 -1
- metadata +21 -16
- /data/spec/lib/{ananke_link_to_spec.rb → link_to_spec.rb} +0 -0
- /data/spec/lib/{ananke_linked_spec.rb → linked_spec.rb} +0 -0
- /data/spec/lib/{ananke_out_spec.rb → out_spec.rb} +0 -0
- /data/spec/lib/{ananke_route_for_spec.rb → route_for_spec.rb} +0 -0
data/README.rdoc
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Ananke
|
2
|
+
|
3
|
+
extend Colored
|
4
|
+
|
5
|
+
public
|
6
|
+
|
7
|
+
def get_mod(path)
|
8
|
+
mod = nil
|
9
|
+
rep = Module.const_get(Ananke.repository) if Module.const_defined?(Ananke.repository)
|
10
|
+
mod = rep.const_get("#{path.capitalize}".to_sym) if !rep.nil? && rep.const_defined?("#{path.capitalize}".to_sym)
|
11
|
+
mod
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_json(path, obj, links)
|
15
|
+
if obj.nil?
|
16
|
+
out :error, "#{path} - No return object"
|
17
|
+
''
|
18
|
+
elsif !obj.respond_to?(:to_json)
|
19
|
+
out :error, "#{path} - Return object cannot be converted to JSON"
|
20
|
+
''
|
21
|
+
else
|
22
|
+
root_path = path.to_s.split('/')[0]
|
23
|
+
dic = {root_path.to_sym => obj}
|
24
|
+
dic[:links] = links unless links.nil?
|
25
|
+
dic.to_json
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_id(obj, key)
|
30
|
+
obj.respond_to?(key) ? obj.instance_variable_get(key) : obj.class == Hash && obj.has_key?(key) ? obj[key] : nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def out(type, message)
|
34
|
+
return if !Ananke.settings[:output]
|
35
|
+
message = case
|
36
|
+
when type == :info && Ananke.settings[:info]
|
37
|
+
message.blue
|
38
|
+
when type == :warning && Ananke.settings[:warning]
|
39
|
+
message.yellow
|
40
|
+
when type == :error && Ananke.settings[:error]
|
41
|
+
message.red
|
42
|
+
end
|
43
|
+
puts message unless message.nil?
|
44
|
+
message
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Ananke
|
2
|
+
def build_links(link_list, link_to_list, path, id, mod)
|
3
|
+
return if !Ananke.settings[:links]
|
4
|
+
|
5
|
+
links = build_link_self(path, id)
|
6
|
+
links += build_link_list(path, id, mod, link_list)
|
7
|
+
links += build_link_to_list(path, id, link_to_list)
|
8
|
+
|
9
|
+
links
|
10
|
+
end
|
11
|
+
#===========================SELF===============================
|
12
|
+
def build_link_self(path, id)
|
13
|
+
[{:rel => 'self', :uri => "/#{path}/#{id}"}]
|
14
|
+
end
|
15
|
+
#===========================LINKED=============================
|
16
|
+
def build_link_list(path, id, mod, link_list)
|
17
|
+
links = []
|
18
|
+
link_list.each do |l|
|
19
|
+
mod_method = "#{l[:rel]}_id_list"
|
20
|
+
if mod.respond_to?(mod_method)
|
21
|
+
id_list = mod.send(mod_method, id)
|
22
|
+
id_list.each{|i| links << {:rel => "#{l[:rel]}", :uri => "/#{l[:rel]}/#{i}"}}
|
23
|
+
else
|
24
|
+
out :error, "#{path} - #{mod} does not respond to '#{mod_method.to_s}'"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
links
|
28
|
+
end
|
29
|
+
#===========================LINK_TO============================
|
30
|
+
def build_link_to_list(path, id, link_to_list)
|
31
|
+
links = []
|
32
|
+
link_to_list.each do |l|
|
33
|
+
links << {:rel => "#{l[:rel]}", :uri => "/#{l[:rel]}/#{path}/#{id}"}
|
34
|
+
end
|
35
|
+
links
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module Ananke
|
2
|
+
def build_route(mod, mod_method, verb, route, &block)
|
3
|
+
if mod.respond_to? mod_method
|
4
|
+
Sinatra::Base.send verb, "#{route}", do
|
5
|
+
instance_eval(&block)
|
6
|
+
end
|
7
|
+
else
|
8
|
+
out(:warning, "#{mod} does not respond to '#{mod_method.to_s}'")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def build(path)
|
13
|
+
mod = get_mod(path)
|
14
|
+
if mod.nil?
|
15
|
+
out(:error, "Repository for #{path} not found")
|
16
|
+
return
|
17
|
+
end
|
18
|
+
key = @id[:key]
|
19
|
+
fields = @fields
|
20
|
+
link_list = @link_list
|
21
|
+
link_to_list = @link_to_list
|
22
|
+
route_for_list = @route_for_list
|
23
|
+
|
24
|
+
#===========================GET/ID=============================
|
25
|
+
build_route mod, :one, :get, "/#{path}/:#{key}" do
|
26
|
+
param_missing!(key) if params[key].nil?
|
27
|
+
obj = mod.one(params[key])
|
28
|
+
|
29
|
+
links = build_links(link_list, link_to_list, path, params[key], mod)
|
30
|
+
json = get_json(path, obj, links)
|
31
|
+
|
32
|
+
status 200
|
33
|
+
json
|
34
|
+
end
|
35
|
+
|
36
|
+
#===========================GET================================
|
37
|
+
build_route mod, :all, :get, "/#{path}/?" do
|
38
|
+
obj_list = mod.all
|
39
|
+
|
40
|
+
status 200
|
41
|
+
#json_list = []
|
42
|
+
result_list = []
|
43
|
+
obj_list.each do |obj|
|
44
|
+
id = get_id(obj, key)
|
45
|
+
if !id.nil?
|
46
|
+
dic = {path.to_sym => obj}
|
47
|
+
links = build_links(link_list, link_to_list, path, id, mod) if Ananke.settings[:links]
|
48
|
+
dic[:links] = links unless links.nil?
|
49
|
+
result_list << dic
|
50
|
+
else
|
51
|
+
out :error, "#{path} - Cannot find key(#{key}) on object #{obj}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
dic = {"#{path}_list".to_sym => result_list}
|
55
|
+
link_self = build_link_self(path, '') if Ananke.settings[:links]
|
56
|
+
dic[:links] = link_self unless link_self.nil?
|
57
|
+
|
58
|
+
dic.to_json
|
59
|
+
end
|
60
|
+
|
61
|
+
#===========================POST===============================
|
62
|
+
build_route mod, :add, :post, "/#{path}/?" do
|
63
|
+
status, message = validate(fields, params)
|
64
|
+
error status, message unless status.nil?
|
65
|
+
obj = mod.add(params)
|
66
|
+
|
67
|
+
links = build_links(link_list, link_to_list, path, params[key], mod)
|
68
|
+
json = get_json(path, obj, links)
|
69
|
+
|
70
|
+
status 201
|
71
|
+
json
|
72
|
+
end
|
73
|
+
|
74
|
+
#===========================PUT================================
|
75
|
+
build_route mod, :edit, :put, "/#{path}/:#{key}" do
|
76
|
+
param_missing!(key) if params[key].nil?
|
77
|
+
status, message = validate(fields, params)
|
78
|
+
error status, message unless status.nil?
|
79
|
+
obj = mod.edit(params[key], params)
|
80
|
+
|
81
|
+
links = build_links(link_list, link_to_list, path, params[key], mod)
|
82
|
+
json = get_json(path, obj, links)
|
83
|
+
|
84
|
+
status 200
|
85
|
+
json
|
86
|
+
end
|
87
|
+
|
88
|
+
build_route mod, :edit, :put, "/#{path}/?" do
|
89
|
+
param_missing!(key)
|
90
|
+
end
|
91
|
+
|
92
|
+
#===========================DELETE=============================
|
93
|
+
build_route mod, :delete, :delete, "/#{path}/:#{key}" do
|
94
|
+
param_missing!(key) if params[key].nil?
|
95
|
+
mod.delete(params[key]) if !params[key].nil?
|
96
|
+
status 200
|
97
|
+
end
|
98
|
+
|
99
|
+
build_route mod, :delete, :delete, "/#{path}/?" do
|
100
|
+
param_missing!(key)
|
101
|
+
end
|
102
|
+
|
103
|
+
#===========================ROUTE_FOR==========================
|
104
|
+
route_for_list.each do |r|
|
105
|
+
build_route mod, r[:name], :get, "/#{path}/#{r[:name]}/:key" do
|
106
|
+
param_missing!(:key) if params[:key].nil?
|
107
|
+
obj = mod.send(r[:name], params[:key])
|
108
|
+
|
109
|
+
links = build_links(link_list, link_to_list, "#{path}/#{r[:name]}", params[:key], mod)
|
110
|
+
json = get_json("#{path}/#{r[:name]}", obj, links)
|
111
|
+
|
112
|
+
status 200
|
113
|
+
json
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Ananke
|
2
|
+
class << self
|
3
|
+
attr_accessor :settings
|
4
|
+
end
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
@settings = {
|
9
|
+
:output => true,
|
10
|
+
:info => true,
|
11
|
+
:warning => true,
|
12
|
+
:error => true,
|
13
|
+
|
14
|
+
:links => true,
|
15
|
+
|
16
|
+
:repository => 'Repository'
|
17
|
+
}
|
18
|
+
|
19
|
+
public
|
20
|
+
|
21
|
+
def repository
|
22
|
+
@settings[:repository].to_sym
|
23
|
+
end
|
24
|
+
|
25
|
+
def set(name, val)
|
26
|
+
@settings[name] = val
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Ananke
|
2
|
+
class << self
|
3
|
+
attr_accessor :rules
|
4
|
+
end
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
@rules = [:length]
|
9
|
+
|
10
|
+
def validate(fields, params)
|
11
|
+
errors = []
|
12
|
+
fields.each do |field|
|
13
|
+
value = params[field[:key].to_s]
|
14
|
+
errors << "Missing Required Parameter: #{field[:key]}" if field[:type] == :required && value.nil?
|
15
|
+
Ananke::Rules.value = value
|
16
|
+
field[:rules].each do |r|
|
17
|
+
res = r.class == Hash ? Ananke::Rules.send("validate_#{r.first[0]}", r.first[1]) : Ananke::Rules.send("validate_#{r}")
|
18
|
+
errors << "#{field[:key]}: #{res}" unless res.nil?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
return 400, errors unless errors.empty?
|
22
|
+
end
|
23
|
+
def param_missing!(key)
|
24
|
+
error 400, "Missing Parameter: #{key.to_s}"
|
25
|
+
end
|
26
|
+
|
27
|
+
#===========================Rules==============================
|
28
|
+
|
29
|
+
module Rules
|
30
|
+
class << self
|
31
|
+
attr_accessor :value
|
32
|
+
end
|
33
|
+
def self.validate_length(min)
|
34
|
+
value.length >= min ? nil : "Value must be at least #{min} characters long"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/ananke.rb
CHANGED
@@ -2,238 +2,14 @@ require 'colored'
|
|
2
2
|
require 'json'
|
3
3
|
require 'sinatra/base'
|
4
4
|
|
5
|
+
require './lib/ananke/helpers'
|
6
|
+
require './lib/ananke/linking'
|
7
|
+
require './lib/ananke/routing'
|
8
|
+
require './lib/ananke/settings'
|
9
|
+
require './lib/ananke/validation'
|
10
|
+
|
5
11
|
module Ananke
|
6
|
-
class << self
|
7
|
-
attr_accessor :default_repository, :rules, :settings
|
8
|
-
end
|
9
|
-
|
10
12
|
private
|
11
|
-
extend Colored
|
12
|
-
|
13
|
-
@default_repository = 'Repository'
|
14
|
-
@rules = [:length]
|
15
|
-
@settings = {
|
16
|
-
:output => true,
|
17
|
-
:info => true,
|
18
|
-
:warning => true,
|
19
|
-
:error => true,
|
20
|
-
|
21
|
-
:links => true
|
22
|
-
}
|
23
|
-
|
24
|
-
#===========================OUTPUT=============================
|
25
|
-
def out(type, message)
|
26
|
-
return if !Ananke.settings[:output]
|
27
|
-
message = case
|
28
|
-
when type == :info && Ananke.settings[:info]
|
29
|
-
message.blue
|
30
|
-
when type == :warning && Ananke.settings[:warning]
|
31
|
-
message.yellow
|
32
|
-
when type == :error && Ananke.settings[:error]
|
33
|
-
message.red
|
34
|
-
end
|
35
|
-
puts message unless message.nil?
|
36
|
-
message
|
37
|
-
end
|
38
|
-
|
39
|
-
#===========================HELPERS============================
|
40
|
-
def get_mod(path)
|
41
|
-
mod = nil
|
42
|
-
rep = Module.const_get(Ananke.default_repository.to_sym) if Module.const_defined?(Ananke.default_repository.to_sym)
|
43
|
-
mod = rep.const_get("#{path.capitalize}".to_sym) if !rep.nil? && rep.const_defined?("#{path.capitalize}".to_sym)
|
44
|
-
mod
|
45
|
-
end
|
46
|
-
|
47
|
-
def get_json(path, obj, links)
|
48
|
-
if obj.nil?
|
49
|
-
out :error, "#{path} - No return object"
|
50
|
-
''
|
51
|
-
elsif !obj.respond_to?(:to_json)
|
52
|
-
out :error, "#{path} - Return object cannot be converted to JSON"
|
53
|
-
''
|
54
|
-
else
|
55
|
-
root_path = path.to_s.split('/')[0]
|
56
|
-
dic = {root_path.to_sym => obj}
|
57
|
-
dic[:links] = links unless links.nil?
|
58
|
-
dic.to_json
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def get_id(obj, key)
|
63
|
-
obj.respond_to?(key) ? obj.instance_variable_get(key) : obj.class == Hash && obj.has_key?(key) ? obj[key] : nil
|
64
|
-
end
|
65
|
-
|
66
|
-
#===========================BUILDUP============================
|
67
|
-
def build_route(mod, mod_method, verb, route, &block)
|
68
|
-
if mod.respond_to? mod_method
|
69
|
-
Sinatra::Base.send verb, "#{route}", do
|
70
|
-
instance_eval(&block)
|
71
|
-
end
|
72
|
-
else
|
73
|
-
out(:warning, "#{mod} does not respond to '#{mod_method.to_s}'")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def build(path)
|
78
|
-
mod = get_mod(path)
|
79
|
-
if mod.nil?
|
80
|
-
out(:error, "Repository for #{path} not found")
|
81
|
-
return
|
82
|
-
end
|
83
|
-
key = @id[:key]
|
84
|
-
fields = @fields
|
85
|
-
link_list = @link_list
|
86
|
-
link_to_list = @link_to_list
|
87
|
-
route_for_list = @route_for_list
|
88
|
-
|
89
|
-
#===========================GET/ID=============================
|
90
|
-
build_route mod, :one, :get, "/#{path}/:#{key}" do
|
91
|
-
param_missing!(key) if params[key].nil?
|
92
|
-
obj = mod.one(params[key])
|
93
|
-
|
94
|
-
links = build_links(link_list, link_to_list, path, params[key], mod)
|
95
|
-
json = get_json(path, obj, links)
|
96
|
-
|
97
|
-
status 200
|
98
|
-
json
|
99
|
-
end
|
100
|
-
|
101
|
-
#===========================GET================================
|
102
|
-
build_route mod, :all, :get, "/#{path}/?" do
|
103
|
-
obj_list = mod.all
|
104
|
-
|
105
|
-
status 200
|
106
|
-
#json_list = []
|
107
|
-
result_list = []
|
108
|
-
obj_list.each do |obj|
|
109
|
-
id = get_id(obj, key)
|
110
|
-
if !id.nil?
|
111
|
-
dic = {path.to_sym => obj}
|
112
|
-
links = build_links(link_list, link_to_list, path, id, mod) if Ananke.settings[:links]
|
113
|
-
dic[:links] = links unless links.nil?
|
114
|
-
result_list << dic
|
115
|
-
else
|
116
|
-
out :error, "#{path} - Cannot find key(#{key}) on object #{obj}"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
dic = {"#{path}_list".to_sym => result_list}
|
120
|
-
link_self = build_link_self(path, '') if Ananke.settings[:links]
|
121
|
-
dic[:links] = link_self unless link_self.nil?
|
122
|
-
|
123
|
-
dic.to_json
|
124
|
-
end
|
125
|
-
|
126
|
-
#===========================POST===============================
|
127
|
-
build_route mod, :add, :post, "/#{path}/?" do
|
128
|
-
status, message = validate(fields, params)
|
129
|
-
error status, message unless status.nil?
|
130
|
-
obj = mod.add(params)
|
131
|
-
|
132
|
-
links = build_links(link_list, link_to_list, path, params[key], mod)
|
133
|
-
json = get_json(path, obj, links)
|
134
|
-
|
135
|
-
status 201
|
136
|
-
json
|
137
|
-
end
|
138
|
-
|
139
|
-
#===========================PUT================================
|
140
|
-
build_route mod, :edit, :put, "/#{path}/:#{key}" do
|
141
|
-
param_missing!(key) if params[key].nil?
|
142
|
-
status, message = validate(fields, params)
|
143
|
-
error status, message unless status.nil?
|
144
|
-
obj = mod.edit(params[key], params)
|
145
|
-
|
146
|
-
links = build_links(link_list, link_to_list, path, params[key], mod)
|
147
|
-
json = get_json(path, obj, links)
|
148
|
-
|
149
|
-
status 200
|
150
|
-
json
|
151
|
-
end
|
152
|
-
|
153
|
-
build_route mod, :edit, :put, "/#{path}/?" do
|
154
|
-
param_missing!(key)
|
155
|
-
end
|
156
|
-
|
157
|
-
#===========================DELETE=============================
|
158
|
-
build_route mod, :delete, :delete, "/#{path}/:#{key}" do
|
159
|
-
param_missing!(key) if params[key].nil?
|
160
|
-
mod.delete(params[key]) if !params[key].nil?
|
161
|
-
status 200
|
162
|
-
end
|
163
|
-
|
164
|
-
build_route mod, :delete, :delete, "/#{path}/?" do
|
165
|
-
param_missing!(key)
|
166
|
-
end
|
167
|
-
|
168
|
-
#===========================ROUTE_FOR==========================
|
169
|
-
route_for_list.each do |r|
|
170
|
-
build_route mod, r[:name], :get, "/#{path}/#{r[:name]}/:key" do
|
171
|
-
param_missing!(:key) if params[:key].nil?
|
172
|
-
obj = mod.send(r[:name], params[:key])
|
173
|
-
|
174
|
-
links = build_links(link_list, link_to_list, "#{path}/#{r[:name]}", params[:key], mod)
|
175
|
-
json = get_json("#{path}/#{r[:name]}", obj, links)
|
176
|
-
|
177
|
-
status 200
|
178
|
-
json
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
#===========================Validation=========================
|
184
|
-
def validate(fields, params)
|
185
|
-
errors = []
|
186
|
-
fields.each do |field|
|
187
|
-
value = params[field[:key].to_s]
|
188
|
-
errors << "Missing Required Parameter: #{field[:key]}" if field[:type] == :required && value.nil?
|
189
|
-
Ananke::Rules.value = value
|
190
|
-
field[:rules].each do |r|
|
191
|
-
res = r.class == Hash ? Ananke::Rules.send("validate_#{r.first[0]}", r.first[1]) : Ananke::Rules.send("validate_#{r}")
|
192
|
-
errors << "#{field[:key]}: #{res}" unless res.nil?
|
193
|
-
end
|
194
|
-
end
|
195
|
-
return 400, errors unless errors.empty?
|
196
|
-
end
|
197
|
-
def param_missing!(key)
|
198
|
-
error 400, "Missing Parameter: #{key.to_s}"
|
199
|
-
end
|
200
|
-
|
201
|
-
#===========================LINKS==============================
|
202
|
-
def build_links(link_list, link_to_list, path, id, mod)
|
203
|
-
return if !Ananke.settings[:links]
|
204
|
-
|
205
|
-
links = build_link_self(path, id)
|
206
|
-
links += build_link_list(path, id, mod, link_list)
|
207
|
-
links += build_link_to_list(path, id, link_to_list)
|
208
|
-
|
209
|
-
links
|
210
|
-
end
|
211
|
-
#===========================SELF===============================
|
212
|
-
def build_link_self(path, id)
|
213
|
-
[{:rel => 'self', :uri => "/#{path}/#{id}"}]
|
214
|
-
end
|
215
|
-
#===========================LINKED=============================
|
216
|
-
def build_link_list(path, id, mod, link_list)
|
217
|
-
links = []
|
218
|
-
link_list.each do |l|
|
219
|
-
mod_method = "#{l[:rel]}_id_list"
|
220
|
-
if mod.respond_to?(mod_method)
|
221
|
-
id_list = mod.send(mod_method, id)
|
222
|
-
id_list.each{|i| links << {:rel => "#{l[:rel]}", :uri => "/#{l[:rel]}/#{i}"}}
|
223
|
-
else
|
224
|
-
out :error, "#{path} - #{mod} does not respond to '#{mod_method.to_s}'"
|
225
|
-
end
|
226
|
-
end
|
227
|
-
links
|
228
|
-
end
|
229
|
-
#===========================LINK_TO============================
|
230
|
-
def build_link_to_list(path, id, link_to_list)
|
231
|
-
links = []
|
232
|
-
link_to_list.each do |l|
|
233
|
-
links << {:rel => "#{l[:rel]}", :uri => "/#{l[:rel]}/#{path}/#{id}"}
|
234
|
-
end
|
235
|
-
links
|
236
|
-
end
|
237
13
|
|
238
14
|
public
|
239
15
|
#===========================DSL================================
|
@@ -268,21 +44,6 @@ module Ananke
|
|
268
44
|
def rule(name, &block)
|
269
45
|
Ananke::Rules.send(:define_singleton_method, "validate_#{name}", block)
|
270
46
|
end
|
271
|
-
|
272
|
-
#===========================Rules==============================
|
273
|
-
module Rules
|
274
|
-
class << self
|
275
|
-
attr_accessor :value
|
276
|
-
end
|
277
|
-
def self.validate_length(min)
|
278
|
-
value.length >= min ? nil : "Value must be at least #{min} characters long"
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
|
-
#===========================Settings===========================
|
283
|
-
def set(name, val)
|
284
|
-
@settings[name] = val
|
285
|
-
end
|
286
47
|
end
|
287
48
|
|
288
49
|
include Ananke
|
data/lib/version.rb
CHANGED
data/spec/lib/ananke_spec.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: ananke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andries Coetzee
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-12 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -100,18 +100,23 @@ extra_rdoc_files:
|
|
100
100
|
- README.rdoc
|
101
101
|
files:
|
102
102
|
- lib/ananke.rb
|
103
|
+
- lib/ananke/settings.rb
|
104
|
+
- lib/ananke/helpers.rb
|
105
|
+
- lib/ananke/linking.rb
|
106
|
+
- lib/ananke/validation.rb
|
107
|
+
- lib/ananke/routing.rb
|
103
108
|
- lib/version.rb
|
109
|
+
- spec/nice_formatter.rb
|
110
|
+
- spec/call_chain.rb
|
104
111
|
- spec/dumping.rb
|
105
112
|
- spec/cov_adapter.rb
|
106
113
|
- spec/lib/ananke_spec.rb
|
107
|
-
- spec/lib/
|
108
|
-
- spec/lib/
|
114
|
+
- spec/lib/route_for_spec.rb
|
115
|
+
- spec/lib/out_spec.rb
|
109
116
|
- spec/lib/validation_spec.rb
|
110
|
-
- spec/lib/
|
111
|
-
- spec/lib/
|
117
|
+
- spec/lib/linked_spec.rb
|
118
|
+
- spec/lib/link_to_spec.rb
|
112
119
|
- spec/spec_helper.rb
|
113
|
-
- spec/call_chain.rb
|
114
|
-
- spec/nice_formatter.rb
|
115
120
|
- Gemfile
|
116
121
|
- Rakefile
|
117
122
|
- README.rdoc
|
@@ -122,7 +127,7 @@ licenses: []
|
|
122
127
|
post_install_message: |
|
123
128
|
**************************************************
|
124
129
|
|
125
|
-
Thank you for installing ananke-0.0.
|
130
|
+
Thank you for installing ananke-0.0.4
|
126
131
|
|
127
132
|
Please be sure to look at README.rdoc to see what might have changed
|
128
133
|
since the last release and how to use this GEM.
|
@@ -151,16 +156,16 @@ rubyforge_project:
|
|
151
156
|
rubygems_version: 1.5.0
|
152
157
|
signing_key:
|
153
158
|
specification_version: 3
|
154
|
-
summary: ananke-0.0.
|
159
|
+
summary: ananke-0.0.4
|
155
160
|
test_files:
|
161
|
+
- spec/nice_formatter.rb
|
162
|
+
- spec/call_chain.rb
|
156
163
|
- spec/dumping.rb
|
157
164
|
- spec/cov_adapter.rb
|
158
165
|
- spec/lib/ananke_spec.rb
|
159
|
-
- spec/lib/
|
160
|
-
- spec/lib/
|
166
|
+
- spec/lib/route_for_spec.rb
|
167
|
+
- spec/lib/out_spec.rb
|
161
168
|
- spec/lib/validation_spec.rb
|
162
|
-
- spec/lib/
|
163
|
-
- spec/lib/
|
169
|
+
- spec/lib/linked_spec.rb
|
170
|
+
- spec/lib/link_to_spec.rb
|
164
171
|
- spec/spec_helper.rb
|
165
|
-
- spec/call_chain.rb
|
166
|
-
- spec/nice_formatter.rb
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|