vitreous_share 0.0.21 → 0.0.23
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/lib/vitreous/share/index_searcher.rb +4 -0
- data/lib/vitreous/share/indexer.rb +19 -4
- data/lib/vitreous/share/indexer_utils.rb +0 -4
- data/lib/vitreous/share/render.rb +33 -0
- data/lib/vitreous/share/version.rb +1 -1
- data/lib/vitreous_share.rb +3 -0
- data/test/fixtures/folder_structure/_not_found.jpg +0 -0
- data/test/fixtures/folder_structure/_not_found.txt +1 -0
- data/test/fixtures/index.json +23 -0
- data/test/fixtures/render_collection.txt +13 -0
- data/test/fixtures/render_item.txt +13 -0
- data/test/fixtures/render_not_found.txt +13 -0
- data/test/fixtures/render_root.txt +13 -0
- data/test/fixtures/structure.json +20 -0
- data/test/fixtures/template/collection.html +5 -0
- data/test/fixtures/template/item.html +5 -0
- data/test/fixtures/template/layout.html +19 -0
- data/test/indexer_utils_test.rb +1 -1
- data/test/render_test.rb +83 -0
- metadata +24 -3
@@ -9,10 +9,11 @@ module Vitreous
|
|
9
9
|
structure = @structure
|
10
10
|
|
11
11
|
{
|
12
|
-
'
|
13
|
-
'
|
14
|
-
'
|
15
|
-
'
|
12
|
+
'not_found' => generate_not_found( structure ),
|
13
|
+
'title' => Vitreous::Share::IndexerUtils.to_title( structure['name'] ),
|
14
|
+
'link' => Vitreous::Share::IndexerUtils.to_link( structure['path'] ),
|
15
|
+
'type' => 'collection',
|
16
|
+
'elements' => tree( structure['elements'].select { |e| !(e['name'] =~ /^_/) }.sort { |x, y| x['name'] <=> y['name'] } )
|
16
17
|
}.merge(
|
17
18
|
Vitreous::Share::IndexerUtils.meta_properties(
|
18
19
|
structure['elements'].select { |e| e['name'] =~ /^_root\./ }
|
@@ -31,6 +32,20 @@ module Vitreous
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
35
|
+
def generate_not_found( structure )
|
36
|
+
{
|
37
|
+
'title' => 'Not found',
|
38
|
+
'type' => 'item',
|
39
|
+
'elements' => [],
|
40
|
+
'txt' => 'Not found',
|
41
|
+
'description' => 'Not found'
|
42
|
+
}.merge(
|
43
|
+
Vitreous::Share::IndexerUtils.meta_properties(
|
44
|
+
structure['elements'].select { |e| e['name'] =~ /^_not_found\./ }
|
45
|
+
)
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
34
49
|
def json
|
35
50
|
JSON.pretty_generate( generate )
|
36
51
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Vitreous
|
2
|
+
module Share
|
3
|
+
module Render
|
4
|
+
def self.render( opts )
|
5
|
+
index = Vitreous::Share::Element.new( opts[:index] )
|
6
|
+
element = Vitreous::Share::IndexSearcher.search( index, opts[:resource] )
|
7
|
+
status = 200
|
8
|
+
|
9
|
+
if element.nil?
|
10
|
+
element = Vitreous::Share::IndexSearcher.not_found( index )
|
11
|
+
status = 404
|
12
|
+
end
|
13
|
+
|
14
|
+
Mustache.template_path = opts[:templates]
|
15
|
+
|
16
|
+
body =
|
17
|
+
Mustache.render(
|
18
|
+
File.read( "#{opts[:templates]}/layout.html" ),
|
19
|
+
{
|
20
|
+
:index => index,
|
21
|
+
:element => element,
|
22
|
+
:assets => opts[:assets]
|
23
|
+
}
|
24
|
+
)
|
25
|
+
|
26
|
+
OpenStruct.new(
|
27
|
+
:status => status,
|
28
|
+
:body => body
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/vitreous_share.rb
CHANGED
@@ -4,6 +4,8 @@ require 'mustache'
|
|
4
4
|
require 'rdiscount'
|
5
5
|
require 'ostruct'
|
6
6
|
|
7
|
+
Mustache.template_extension = 'html'
|
8
|
+
|
7
9
|
require "#{File.dirname(__FILE__)}/vitreous/vitreous"
|
8
10
|
require "#{File.dirname(__FILE__)}/vitreous/share/indexer_utils"
|
9
11
|
require "#{File.dirname(__FILE__)}/vitreous/share/version"
|
@@ -13,3 +15,4 @@ require "#{File.dirname(__FILE__)}/vitreous/share/dropbox_structure"
|
|
13
15
|
require "#{File.dirname(__FILE__)}/vitreous/share/indexer"
|
14
16
|
require "#{File.dirname(__FILE__)}/vitreous/share/index_searcher"
|
15
17
|
require "#{File.dirname(__FILE__)}/vitreous/share/element"
|
18
|
+
require "#{File.dirname(__FILE__)}/vitreous/share/render"
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
This is the not found item
|
data/test/fixtures/index.json
CHANGED
@@ -1,4 +1,27 @@
|
|
1
1
|
{
|
2
|
+
"not_found": {
|
3
|
+
"title": "Not found",
|
4
|
+
"type": "item",
|
5
|
+
"elements": [
|
6
|
+
|
7
|
+
],
|
8
|
+
"txt": "This is the not found item",
|
9
|
+
"description": "This is the not found item",
|
10
|
+
"file": "wadus uri",
|
11
|
+
"files": [
|
12
|
+
"wadus uri"
|
13
|
+
],
|
14
|
+
"jpg": "wadus uri",
|
15
|
+
"descriptions": [
|
16
|
+
"This is the not found item"
|
17
|
+
],
|
18
|
+
"jpgs": [
|
19
|
+
"wadus uri"
|
20
|
+
],
|
21
|
+
"txts": [
|
22
|
+
"This is the not found item"
|
23
|
+
]
|
24
|
+
},
|
2
25
|
"title": "fixtures",
|
3
26
|
"link": "/",
|
4
27
|
"type": "collection",
|
@@ -0,0 +1,13 @@
|
|
1
|
+
assets: /assets_path
|
2
|
+
|
3
|
+
collection: subfolder 1
|
4
|
+
item: bbb
|
5
|
+
item: aaa
|
6
|
+
collection: subfolder 2
|
7
|
+
item: file 1
|
8
|
+
|
9
|
+
collection title: subfolder 1
|
10
|
+
collection jpg: wadus uri
|
11
|
+
collection txt: file content
|
12
|
+
collection description: file content
|
13
|
+
collection file: wadus uri
|
@@ -0,0 +1,13 @@
|
|
1
|
+
assets: /assets_path
|
2
|
+
|
3
|
+
collection: subfolder 1
|
4
|
+
item: bbb
|
5
|
+
item: aaa
|
6
|
+
collection: subfolder 2
|
7
|
+
item: file 1
|
8
|
+
|
9
|
+
item title: Not found
|
10
|
+
item jpg: wadus uri
|
11
|
+
item txt: This is the not found item
|
12
|
+
item description: This is the not found item
|
13
|
+
item file: wadus uri
|
@@ -0,0 +1,13 @@
|
|
1
|
+
assets: /assets_path
|
2
|
+
|
3
|
+
collection: subfolder 1
|
4
|
+
item: bbb
|
5
|
+
item: aaa
|
6
|
+
collection: subfolder 2
|
7
|
+
item: file 1
|
8
|
+
|
9
|
+
collection title: fixtures
|
10
|
+
collection jpg: wadus uri
|
11
|
+
collection txt: root content
|
12
|
+
collection description: root content
|
13
|
+
collection file: wadus uri
|
@@ -111,6 +111,26 @@
|
|
111
111
|
],
|
112
112
|
"content": null
|
113
113
|
},
|
114
|
+
{
|
115
|
+
"name": "_not_found.jpg",
|
116
|
+
"path": "/_not_found.jpg",
|
117
|
+
"uri": "wadus uri",
|
118
|
+
"type": "file",
|
119
|
+
"elements": [
|
120
|
+
|
121
|
+
],
|
122
|
+
"content": null
|
123
|
+
},
|
124
|
+
{
|
125
|
+
"name": "_not_found.txt",
|
126
|
+
"path": "/_not_found.txt",
|
127
|
+
"uri": "wadus uri",
|
128
|
+
"type": "file",
|
129
|
+
"elements": [
|
130
|
+
|
131
|
+
],
|
132
|
+
"content": "This is the not found item"
|
133
|
+
},
|
114
134
|
{
|
115
135
|
"name": "_root.jpg",
|
116
136
|
"path": "/_root.jpg",
|
@@ -0,0 +1,19 @@
|
|
1
|
+
assets: {{assets}}
|
2
|
+
|
3
|
+
{{#index}}
|
4
|
+
{{#collections}}
|
5
|
+
collection: {{title}}
|
6
|
+
{{#items}}
|
7
|
+
item: {{title}}
|
8
|
+
{{/items}}
|
9
|
+
{{/collections}}
|
10
|
+
{{/index}}
|
11
|
+
|
12
|
+
{{#element}}
|
13
|
+
{{#collection?}}
|
14
|
+
{{>collection}}
|
15
|
+
{{/collection?}}
|
16
|
+
{{#item?}}
|
17
|
+
{{>item}}
|
18
|
+
{{/item?}}
|
19
|
+
{{/element}}
|
data/test/indexer_utils_test.rb
CHANGED
@@ -51,7 +51,7 @@ class IndexerUtilsTest < Test::Unit::TestCase
|
|
51
51
|
structure = JSON.load( File.read( "#{FIXTURES_PATH}/structure.json" ) )
|
52
52
|
|
53
53
|
groups = Vitreous::Share::IndexerUtils.grouping( structure['elements'] )
|
54
|
-
assert_equal(
|
54
|
+
assert_equal( 5, groups.size )
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_meta_properties
|
data/test/render_test.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require File.expand_path( "#{File.dirname(__FILE__)}/test_helper" )
|
2
|
+
|
3
|
+
class IndexerTest < Test::Unit::TestCase
|
4
|
+
def test_render_collection
|
5
|
+
index = JSON.load( File.read( "#{FIXTURES_PATH}/index.json" ) )
|
6
|
+
result =
|
7
|
+
Vitreous::Share::Render.render(
|
8
|
+
:resource => '/subfolder-1',
|
9
|
+
:index => index,
|
10
|
+
:assets => '/assets_path',
|
11
|
+
:templates => "#{FIXTURES_PATH}/template"
|
12
|
+
)
|
13
|
+
|
14
|
+
# # write fixture
|
15
|
+
# puts "This should be commented out!"
|
16
|
+
# File.open( "#{FIXTURES_PATH}/render_collection.txt", 'w' ) do |f|
|
17
|
+
# f.write result.body
|
18
|
+
# end
|
19
|
+
|
20
|
+
assert_equal( 200, result.status )
|
21
|
+
assert_equal( File.read( "#{FIXTURES_PATH}/render_collection.txt" ), result.body )
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_render_item
|
25
|
+
index = JSON.load( File.read( "#{FIXTURES_PATH}/index.json" ) )
|
26
|
+
result =
|
27
|
+
Vitreous::Share::Render.render(
|
28
|
+
:resource => '/subfolder-1/subsubfolder-1/file-1',
|
29
|
+
:index => index,
|
30
|
+
:assets => '/assets_path',
|
31
|
+
:templates => "#{FIXTURES_PATH}/template"
|
32
|
+
)
|
33
|
+
|
34
|
+
# # write fixture
|
35
|
+
# puts "This should be commented out!"
|
36
|
+
# File.open( "#{FIXTURES_PATH}/render_item.txt", 'w' ) do |f|
|
37
|
+
# f.write result.body
|
38
|
+
# end
|
39
|
+
|
40
|
+
assert_equal( 200, result.status )
|
41
|
+
assert_equal( File.read( "#{FIXTURES_PATH}/render_item.txt" ), result.body )
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_render_root
|
45
|
+
index = JSON.load( File.read( "#{FIXTURES_PATH}/index.json" ) )
|
46
|
+
result =
|
47
|
+
Vitreous::Share::Render.render(
|
48
|
+
:resource => '/',
|
49
|
+
:index => index,
|
50
|
+
:assets => '/assets_path',
|
51
|
+
:templates => "#{FIXTURES_PATH}/template"
|
52
|
+
)
|
53
|
+
|
54
|
+
# # write fixture
|
55
|
+
# puts "This should be commented out!"
|
56
|
+
# File.open( "#{FIXTURES_PATH}/render_root.txt", 'w' ) do |f|
|
57
|
+
# f.write result.body
|
58
|
+
# end
|
59
|
+
|
60
|
+
assert_equal( 200, result.status )
|
61
|
+
assert_equal( File.read( "#{FIXTURES_PATH}/render_root.txt" ), result.body )
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_render_not_found
|
65
|
+
index = JSON.load( File.read( "#{FIXTURES_PATH}/index.json" ) )
|
66
|
+
result =
|
67
|
+
Vitreous::Share::Render.render(
|
68
|
+
:resource => '/wadus/not/found',
|
69
|
+
:index => index,
|
70
|
+
:assets => '/assets_path',
|
71
|
+
:templates => "#{FIXTURES_PATH}/template"
|
72
|
+
)
|
73
|
+
|
74
|
+
# # write fixture
|
75
|
+
# puts "This should be commented out!"
|
76
|
+
# File.open( "#{FIXTURES_PATH}/render_not_found.txt", 'w' ) do |f|
|
77
|
+
# f.write result.body
|
78
|
+
# end
|
79
|
+
|
80
|
+
assert_equal( 404, result.status )
|
81
|
+
assert_equal( File.read( "#{FIXTURES_PATH}/render_not_found.txt" ), result.body )
|
82
|
+
end
|
83
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 23
|
9
|
+
version: 0.0.23
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Fernando Guillen
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08-
|
17
|
+
date: 2011-08-13 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- lib/vitreous/share/indexer.rb
|
149
149
|
- lib/vitreous/share/indexer_utils.rb
|
150
150
|
- lib/vitreous/share/local_structure.rb
|
151
|
+
- lib/vitreous/share/render.rb
|
151
152
|
- lib/vitreous/share/version.rb
|
152
153
|
- lib/vitreous/vitreous.rb
|
153
154
|
- lib/vitreous_share.rb
|
@@ -162,6 +163,8 @@ files:
|
|
162
163
|
- test/fixtures/folder_structure/01 subfolder 1/002 aaa.txt
|
163
164
|
- test/fixtures/folder_structure/01 subfolder 1/subsubfolder 1/file 1.txt
|
164
165
|
- test/fixtures/folder_structure/02 subfolder 2/file 1.txt
|
166
|
+
- test/fixtures/folder_structure/_not_found.jpg
|
167
|
+
- test/fixtures/folder_structure/_not_found.txt
|
165
168
|
- test/fixtures/folder_structure/_root.jpg
|
166
169
|
- test/fixtures/folder_structure/_root.txt
|
167
170
|
- test/fixtures/folder_structure/file 1.jpg
|
@@ -169,11 +172,19 @@ files:
|
|
169
172
|
- test/fixtures/folder_structure/file 1.thumb.txt
|
170
173
|
- test/fixtures/folder_structure/file 1.txt
|
171
174
|
- test/fixtures/index.json
|
175
|
+
- test/fixtures/render_collection.txt
|
176
|
+
- test/fixtures/render_item.txt
|
177
|
+
- test/fixtures/render_not_found.txt
|
178
|
+
- test/fixtures/render_root.txt
|
172
179
|
- test/fixtures/structure.json
|
180
|
+
- test/fixtures/template/collection.html
|
181
|
+
- test/fixtures/template/item.html
|
182
|
+
- test/fixtures/template/layout.html
|
173
183
|
- test/index_searcher_test.rb
|
174
184
|
- test/indexer_test.rb
|
175
185
|
- test/indexer_utils_test.rb
|
176
186
|
- test/local_structure_test.rb
|
187
|
+
- test/render_test.rb
|
177
188
|
- test/test_helper.rb
|
178
189
|
- vitreous_share.gemspec
|
179
190
|
has_rdoc: true
|
@@ -220,6 +231,8 @@ test_files:
|
|
220
231
|
- test/fixtures/folder_structure/01 subfolder 1/002 aaa.txt
|
221
232
|
- test/fixtures/folder_structure/01 subfolder 1/subsubfolder 1/file 1.txt
|
222
233
|
- test/fixtures/folder_structure/02 subfolder 2/file 1.txt
|
234
|
+
- test/fixtures/folder_structure/_not_found.jpg
|
235
|
+
- test/fixtures/folder_structure/_not_found.txt
|
223
236
|
- test/fixtures/folder_structure/_root.jpg
|
224
237
|
- test/fixtures/folder_structure/_root.txt
|
225
238
|
- test/fixtures/folder_structure/file 1.jpg
|
@@ -227,9 +240,17 @@ test_files:
|
|
227
240
|
- test/fixtures/folder_structure/file 1.thumb.txt
|
228
241
|
- test/fixtures/folder_structure/file 1.txt
|
229
242
|
- test/fixtures/index.json
|
243
|
+
- test/fixtures/render_collection.txt
|
244
|
+
- test/fixtures/render_item.txt
|
245
|
+
- test/fixtures/render_not_found.txt
|
246
|
+
- test/fixtures/render_root.txt
|
230
247
|
- test/fixtures/structure.json
|
248
|
+
- test/fixtures/template/collection.html
|
249
|
+
- test/fixtures/template/item.html
|
250
|
+
- test/fixtures/template/layout.html
|
231
251
|
- test/index_searcher_test.rb
|
232
252
|
- test/indexer_test.rb
|
233
253
|
- test/indexer_utils_test.rb
|
234
254
|
- test/local_structure_test.rb
|
255
|
+
- test/render_test.rb
|
235
256
|
- test/test_helper.rb
|