polygon 0.0.3 → 0.9.1

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.
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