polygon 0.0.3 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/CHANGELOG.md +0 -12
  2. data/Gemfile +5 -2
  3. data/Gemfile.lock +25 -10
  4. data/lib/polygon/base.rb +10 -8
  5. data/lib/polygon/core_ext/path.rb +24 -0
  6. data/lib/polygon/core_ext/rack/nocache.rb +27 -0
  7. data/lib/polygon/core_ext.rb +2 -0
  8. data/lib/polygon/database.rb +57 -0
  9. data/lib/polygon/dialect.rb +13 -0
  10. data/lib/polygon/entry.rb +101 -0
  11. data/lib/polygon/helpers.rb +43 -10
  12. data/lib/polygon/loader.rb +4 -2
  13. data/lib/polygon/script/gsub.rb +59 -0
  14. data/lib/polygon/script/launch.rb +75 -0
  15. data/lib/polygon/script.rb +38 -0
  16. data/lib/polygon/version.rb +2 -2
  17. data/lib/polygon.rb +4 -13
  18. data/polygon.gemspec +5 -3
  19. data/polygon.noespec +6 -4
  20. data/spec/core_ext/test_epath.rb +34 -0
  21. data/spec/database/test_entries.rb +30 -0
  22. data/spec/database/test_sitemap.rb +31 -0
  23. data/spec/entry/test_ancestors_or_self.rb +43 -0
  24. data/spec/entry/test_divide.rb +27 -0
  25. data/spec/entry/test_equality.rb +26 -0
  26. data/spec/entry/test_exist.rb +18 -0
  27. data/spec/entry/test_extensions.rb +29 -0
  28. data/spec/entry/test_hash.rb +14 -0
  29. data/spec/entry/test_index.rb +18 -0
  30. data/spec/entry/test_index_files.rb +29 -0
  31. data/spec/entry/test_parent.rb +40 -0
  32. data/spec/entry/test_path.rb +19 -0
  33. data/spec/entry/test_to_hash.rb +22 -0
  34. data/{test → spec}/fixtures/data/data.json +0 -0
  35. data/{test → spec}/fixtures/data/data.md +0 -0
  36. data/{test → spec}/fixtures/data/data.rb +0 -0
  37. data/{test → spec}/fixtures/data/data.ruby +0 -0
  38. data/{test → spec}/fixtures/data/data.yaml +0 -0
  39. data/{test → spec}/fixtures/data/data.yml +0 -0
  40. data/spec/fixtures/data/empty.md +3 -0
  41. data/{test → spec}/fixtures/data/text.md +0 -0
  42. data/{test → spec}/fixtures/index.yml +0 -0
  43. data/{test → spec}/fixtures/with_index_md/index.md +0 -0
  44. data/{test → spec}/fixtures/with_index_yml/index.yml +0 -0
  45. data/{test → spec}/fixtures/with_index_yml/say-hello.md +0 -0
  46. data/{test → spec}/fixtures/without_index/hello.md +0 -0
  47. data/spec/spec_helper.rb +16 -0
  48. data/spec/test_polygon.rb +10 -0
  49. data/tasks/yard.rake +51 -0
  50. metadata +161 -78
  51. checksums.yaml +0 -7
  52. data/lib/polygon/content.rb +0 -131
  53. data/lib/polygon/content_loader.rb +0 -78
  54. data/test/content/test_entry.rb +0 -99
  55. data/test/helper.rb +0 -5
  56. data/test/runall.rb +0 -1
  57. data/test/test_content.rb +0 -45
  58. data/test/test_content_loader.rb +0 -39
metadata CHANGED
@@ -1,142 +1,193 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polygon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.9.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Bernard Lambeau
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2018-03-21 00:00:00.000000000 Z
12
+ date: 2013-01-15 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rake
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: 0.9.2
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.9.2
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: bundler
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - "~>"
35
+ - - ~>
32
36
  - !ruby/object:Gem::Version
33
37
  version: '1.0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - "~>"
43
+ - - ~>
39
44
  - !ruby/object:Gem::Version
40
45
  version: '1.0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - "~>"
51
+ - - ~>
46
52
  - !ruby/object:Gem::Version
47
53
  version: '2.10'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - "~>"
59
+ - - ~>
53
60
  - !ruby/object:Gem::Version
54
61
  version: '2.10'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: yard
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - "~>"
67
+ - - ~>
60
68
  - !ruby/object:Gem::Version
61
69
  version: 0.7.2
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - "~>"
75
+ - - ~>
67
76
  - !ruby/object:Gem::Version
68
77
  version: 0.7.2
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: bluecloth
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - "~>"
83
+ - - ~>
74
84
  - !ruby/object:Gem::Version
75
85
  version: '2.2'
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - "~>"
91
+ - - ~>
81
92
  - !ruby/object:Gem::Version
82
93
  version: '2.2'
94
+ - !ruby/object:Gem::Dependency
95
+ name: json
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
83
110
  - !ruby/object:Gem::Dependency
84
111
  name: sinatra
85
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
86
114
  requirements:
87
- - - "~>"
115
+ - - ~>
88
116
  - !ruby/object:Gem::Version
89
117
  version: '1.3'
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
93
122
  requirements:
94
- - - "~>"
123
+ - - ~>
95
124
  - !ruby/object:Gem::Version
96
125
  version: '1.3'
97
126
  - !ruby/object:Gem::Dependency
98
- name: epath
127
+ name: wlang
99
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
100
130
  requirements:
101
- - - "~>"
131
+ - - ~>
102
132
  - !ruby/object:Gem::Version
103
- version: 0.2.0
133
+ version: 2.1.1
104
134
  type: :runtime
105
135
  prerelease: false
106
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
107
138
  requirements:
108
- - - "~>"
139
+ - - ~>
109
140
  - !ruby/object:Gem::Version
110
- version: 0.2.0
141
+ version: 2.1.1
111
142
  - !ruby/object:Gem::Dependency
112
- name: json
143
+ name: alf
113
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
114
146
  requirements:
115
- - - ">="
147
+ - - ~>
116
148
  - !ruby/object:Gem::Version
117
- version: '0'
149
+ version: 0.12.2
118
150
  type: :runtime
119
151
  prerelease: false
120
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
121
154
  requirements:
122
- - - ">="
155
+ - - ~>
123
156
  - !ruby/object:Gem::Version
124
- version: '0'
157
+ version: 0.12.2
125
158
  - !ruby/object:Gem::Dependency
126
- name: wlang
159
+ name: quickl
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 0.4.2
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 0.4.2
174
+ - !ruby/object:Gem::Dependency
175
+ name: path
127
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
128
178
  requirements:
129
- - - "~>"
179
+ - - ~>
130
180
  - !ruby/object:Gem::Version
131
- version: 0.10.2
181
+ version: 1.3.1
132
182
  type: :runtime
133
183
  prerelease: false
134
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
135
186
  requirements:
136
- - - "~>"
187
+ - - ~>
137
188
  - !ruby/object:Gem::Version
138
- version: 0.10.2
139
- description: "Polygon provides a framework with strong separation of concerns between
189
+ version: 1.3.1
190
+ description: ! "Polygon provides a framework with strong separation of concerns between
140
191
  \nclients, developers and web designers"
141
192
  email:
142
193
  - blambeau@gmail.com
@@ -147,22 +198,56 @@ extra_rdoc_files:
147
198
  - CHANGELOG.md
148
199
  - LICENCE.md
149
200
  files:
201
+ - polygon.gemspec
202
+ - polygon.noespec
150
203
  - CHANGELOG.md
151
204
  - Gemfile
152
205
  - Gemfile.lock
153
- - LICENCE.md
154
- - Manifest.txt
155
- - README.md
156
- - Rakefile
157
- - lib/polygon.rb
158
206
  - lib/polygon/base.rb
159
- - lib/polygon/content.rb
160
- - lib/polygon/content_loader.rb
207
+ - lib/polygon/core_ext/path.rb
208
+ - lib/polygon/core_ext/rack/nocache.rb
209
+ - lib/polygon/core_ext.rb
210
+ - lib/polygon/database.rb
211
+ - lib/polygon/dialect.rb
212
+ - lib/polygon/entry.rb
161
213
  - lib/polygon/helpers.rb
162
214
  - lib/polygon/loader.rb
215
+ - lib/polygon/script/gsub.rb
216
+ - lib/polygon/script/launch.rb
217
+ - lib/polygon/script.rb
163
218
  - lib/polygon/version.rb
164
- - polygon.gemspec
165
- - polygon.noespec
219
+ - lib/polygon.rb
220
+ - LICENCE.md
221
+ - Manifest.txt
222
+ - Rakefile
223
+ - README.md
224
+ - spec/core_ext/test_epath.rb
225
+ - spec/database/test_entries.rb
226
+ - spec/database/test_sitemap.rb
227
+ - spec/entry/test_ancestors_or_self.rb
228
+ - spec/entry/test_divide.rb
229
+ - spec/entry/test_equality.rb
230
+ - spec/entry/test_exist.rb
231
+ - spec/entry/test_extensions.rb
232
+ - spec/entry/test_hash.rb
233
+ - spec/entry/test_index.rb
234
+ - spec/entry/test_index_files.rb
235
+ - spec/entry/test_parent.rb
236
+ - spec/entry/test_path.rb
237
+ - spec/entry/test_to_hash.rb
238
+ - spec/fixtures/data/data.json
239
+ - spec/fixtures/data/data.md
240
+ - spec/fixtures/data/data.rb
241
+ - spec/fixtures/data/data.ruby
242
+ - spec/fixtures/data/data.yaml
243
+ - spec/fixtures/data/data.yml
244
+ - spec/fixtures/data/empty.md
245
+ - spec/fixtures/data/text.md
246
+ - spec/fixtures/index.yml
247
+ - spec/fixtures/with_index_md/index.md
248
+ - spec/fixtures/with_index_yml/index.yml
249
+ - spec/fixtures/with_index_yml/say-hello.md
250
+ - spec/fixtures/without_index/hello.md
166
251
  - spec/spec_helper.rb
167
252
  - spec/test_polygon.rb
168
253
  - tasks/debug_mail.rake
@@ -170,63 +255,61 @@ files:
170
255
  - tasks/gem.rake
171
256
  - tasks/spec_test.rake
172
257
  - tasks/unit_test.rake
173
- - test/content/test_entry.rb
174
- - test/fixtures/data/data.json
175
- - test/fixtures/data/data.md
176
- - test/fixtures/data/data.rb
177
- - test/fixtures/data/data.ruby
178
- - test/fixtures/data/data.yaml
179
- - test/fixtures/data/data.yml
180
- - test/fixtures/data/text.md
181
- - test/fixtures/index.yml
182
- - test/fixtures/with_index_md/index.md
183
- - test/fixtures/with_index_yml/index.yml
184
- - test/fixtures/with_index_yml/say-hello.md
185
- - test/fixtures/without_index/hello.md
186
- - test/helper.rb
187
- - test/runall.rb
188
- - test/test_content.rb
189
- - test/test_content_loader.rb
258
+ - tasks/yard.rake
190
259
  homepage: http://github.com/blambeau/polygon
191
260
  licenses: []
192
- metadata: {}
193
261
  post_install_message:
194
262
  rdoc_options: []
195
263
  require_paths:
196
264
  - lib
197
265
  required_ruby_version: !ruby/object:Gem::Requirement
266
+ none: false
198
267
  requirements:
199
- - - ">="
268
+ - - ! '>='
200
269
  - !ruby/object:Gem::Version
201
270
  version: '0'
271
+ segments:
272
+ - 0
273
+ hash: -65657202996910521
202
274
  required_rubygems_version: !ruby/object:Gem::Requirement
275
+ none: false
203
276
  requirements:
204
- - - ">="
277
+ - - ! '>='
205
278
  - !ruby/object:Gem::Version
206
279
  version: '0'
207
280
  requirements: []
208
281
  rubyforge_project:
209
- rubygems_version: 2.5.2
282
+ rubygems_version: 1.8.24
210
283
  signing_key:
211
- specification_version: 4
284
+ specification_version: 3
212
285
  summary: A web framework powered by sinatra for mostly static websites
213
286
  test_files:
214
- - test/runall.rb
215
- - test/helper.rb
216
- - test/test_content.rb
217
- - test/content/test_entry.rb
218
- - test/test_content_loader.rb
219
- - test/fixtures/with_index_md/index.md
220
- - test/fixtures/with_index_yml/say-hello.md
221
- - test/fixtures/with_index_yml/index.yml
222
- - test/fixtures/data/text.md
223
- - test/fixtures/data/data.rb
224
- - test/fixtures/data/data.md
225
- - test/fixtures/data/data.yml
226
- - test/fixtures/data/data.json
227
- - test/fixtures/data/data.yaml
228
- - test/fixtures/data/data.ruby
229
- - test/fixtures/without_index/hello.md
230
- - test/fixtures/index.yml
287
+ - spec/core_ext/test_epath.rb
288
+ - spec/database/test_entries.rb
289
+ - spec/database/test_sitemap.rb
290
+ - spec/entry/test_ancestors_or_self.rb
291
+ - spec/entry/test_divide.rb
292
+ - spec/entry/test_equality.rb
293
+ - spec/entry/test_exist.rb
294
+ - spec/entry/test_extensions.rb
295
+ - spec/entry/test_hash.rb
296
+ - spec/entry/test_index.rb
297
+ - spec/entry/test_index_files.rb
298
+ - spec/entry/test_parent.rb
299
+ - spec/entry/test_path.rb
300
+ - spec/entry/test_to_hash.rb
301
+ - spec/fixtures/data/data.json
302
+ - spec/fixtures/data/data.md
303
+ - spec/fixtures/data/data.rb
304
+ - spec/fixtures/data/data.ruby
305
+ - spec/fixtures/data/data.yaml
306
+ - spec/fixtures/data/data.yml
307
+ - spec/fixtures/data/empty.md
308
+ - spec/fixtures/data/text.md
309
+ - spec/fixtures/index.yml
310
+ - spec/fixtures/with_index_md/index.md
311
+ - spec/fixtures/with_index_yml/index.yml
312
+ - spec/fixtures/with_index_yml/say-hello.md
313
+ - spec/fixtures/without_index/hello.md
231
314
  - spec/spec_helper.rb
232
315
  - spec/test_polygon.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 10b50251c456b33dedefcc28abab51d15ea95f0f
4
- data.tar.gz: ed5b89c01e74aad21ed241d9e633b1d210eb2386
5
- SHA512:
6
- metadata.gz: 52e9e703e16fa95c9e7ea5c1b5deb606a6d48117be81347863bbd323efab663c9bc10fddd49ba3d00db49c87a807c73716c1638b2bc137bb88a0227be68041b0
7
- data.tar.gz: 90afbc164ff42e7d1020c442f362d7f63135d2796f115c97d9961b1588968f9dcaa66304e63651efe2d4fdd750557dd9a4b45b0aef4e3fabb7247bd6d34a1b84
@@ -1,131 +0,0 @@
1
- require 'yaml'
2
- require 'epath'
3
- module Polygon
4
- class Content
5
-
6
- # Root of the content folders
7
- attr_reader :path
8
-
9
- # Underlying content loader
10
- attr_reader :loader
11
-
12
- # Creates a Content instance
13
- def initialize(path, loader = Polygon.default_loader)
14
- @path = path
15
- @loader = loader
16
- end
17
-
18
- def entry(path)
19
- if path.relative?
20
- path = @path/path
21
- elsif path.outside?(@path)
22
- return nil
23
- end
24
- Entry.new(self, path)
25
- end
26
-
27
- class Entry
28
-
29
- # The parent content
30
- attr_reader :content
31
-
32
- # Path to the file containing this content
33
- attr_reader :path
34
-
35
- def initialize(content, path)
36
- @content, @path = content, path
37
- end
38
-
39
- def exist?
40
- path.exist?
41
- end
42
-
43
- def /(arg)
44
- content.entry(path/arg)
45
- end
46
-
47
- def ==(other)
48
- other.is_a?(Entry) and
49
- other.content == content and
50
- other.path == path
51
- end
52
-
53
- def to_s
54
- path.to_s
55
- end
56
-
57
- def to_hash(with_ancestors = true)
58
- if with_ancestors
59
- ancestors_or_self(true).inject({}) do |h,content|
60
- merge(h, content.data)
61
- end
62
- else
63
- data
64
- end
65
- end
66
-
67
- protected
68
-
69
- def loader
70
- content.loader
71
- end
72
-
73
- def extensions
74
- loader.extensions
75
- end
76
-
77
- def index_files
78
- extensions.map{|ext| "index#{ext}"}
79
- end
80
-
81
- def parent
82
- @parent ||= begin
83
- return nil unless base = self/".."
84
- idx = -1
85
- if index?
86
- idx = index_files.index(path.basename.to_s) - 1
87
- base = base/".." if idx == -1
88
- end
89
- base ? base/index_files[idx] : nil
90
- end
91
- end
92
-
93
- def ancestors_or_self(filter = false)
94
- res = _ancestors_or_self
95
- filter ? res.select{|f| f.path.exist?} : res
96
- end
97
-
98
- def _ancestors_or_self
99
- return [ self ] unless parent
100
- parent.ancestors_or_self + [ self ]
101
- end
102
-
103
- def index?
104
- index_files.include?(path.basename.to_s)
105
- end
106
-
107
- def merge(left, right)
108
- raise "Unexpected #{left.class} vs. #{right.class}" \
109
- unless left.class == right.class
110
- case left
111
- when Array
112
- (right | left).uniq
113
- when Hash
114
- left.merge(right){|k,l,r|
115
- merge(l,r)
116
- }
117
- else
118
- right
119
- end
120
- end
121
-
122
- def data
123
- loader.load(path).merge({
124
- "__path__" => path,
125
- "__url__" => path.relative_to(content.path).to_s[0..-(path.extname.length+1)]
126
- })
127
- end
128
-
129
- end # class Entry
130
- end # class Content
131
- end # module Polygon
@@ -1,78 +0,0 @@
1
- module Polygon
2
- class ContentLoader
3
-
4
- def register(*extensions, &loader)
5
- raise ArgumentError, "Extensions expected" if extensions.empty?
6
- loaders << [extensions, loader]
7
- self
8
- end
9
-
10
- def extensions
11
- loaders.map(&:first).flatten
12
- end
13
-
14
- def load(file)
15
- file = Path(file)
16
- unless l = loader(file)
17
- raise "Unable to load #{file.basename} (unrecognized extension)"
18
- end
19
- l.call(file)
20
- end
21
-
22
- ################################################################### Loaders
23
-
24
- def enable_yaml!(*ext)
25
- require 'yaml'
26
- ext = [".yml", ".yaml"] if ext.empty?
27
- register(*ext) do |f|
28
- YAML.load(f.read)
29
- end
30
- end
31
-
32
- def enable_json!(*ext)
33
- require 'json'
34
- ext = [".json"] if ext.empty?
35
- register(*ext) do |f|
36
- JSON.load(f.read)
37
- end
38
- end
39
-
40
- def enable_ruby!(*ext)
41
- ext = [".rb", ".ruby"] if ext.empty?
42
- register(*ext) do |f|
43
- ::Kernel.eval(f.read, TOPLEVEL_BINDING, f.to_s)
44
- end
45
- end
46
-
47
- def enable_yaml_front_matter!(*ext)
48
- ext = [".md"] if ext.empty?
49
- register(*ext) do |f|
50
- content = f.read.force_encoding(Encoding::UTF_8)
51
- if content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
52
- YAML::load($1).merge("content" => $')
53
- else
54
- {"content" => content}
55
- end
56
- end
57
- end
58
-
59
- def enable_all!
60
- enable_yaml!
61
- enable_json!
62
- enable_ruby!
63
- enable_yaml_front_matter!
64
- end
65
-
66
- private
67
-
68
- def loaders
69
- @loaders ||= []
70
- end
71
-
72
- def loader(file, extname = Path(file).extname)
73
- loader = loaders.find{|ext,_| ext.include?(extname)}
74
- loader && loader.last
75
- end
76
-
77
- end # class ContentLoader
78
- end # module Polygon