hx 0.26.0 → 0.26.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.
- data/VERSION +1 -1
- data/lib/hx.rb +4 -0
- data/lib/hx/backend/rawfiles.rb +4 -8
- data/lib/hx/listing/recursiveindex.rb +18 -24
- data/spec/rawfiles_spec.rb +1 -1
- metadata +6 -16
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.26.
|
1
|
+
0.26.1
|
data/lib/hx.rb
CHANGED
@@ -632,6 +632,10 @@ def self.write_file(pathname, content, executable=false)
|
|
632
632
|
nil
|
633
633
|
end
|
634
634
|
|
635
|
+
def self.last_update_time(*entries)
|
636
|
+
entries.map { |e| e['updated'] || e['created'] }.compact.max
|
637
|
+
end
|
638
|
+
|
635
639
|
class LazyContent
|
636
640
|
def initialize(&block)
|
637
641
|
raise ArgumentError, "No block given" unless block
|
data/lib/hx/backend/rawfiles.rb
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
|
24
24
|
require 'pathname'
|
25
25
|
require 'hx'
|
26
|
+
require 'find'
|
26
27
|
|
27
28
|
module Hx
|
28
29
|
module Backend
|
@@ -41,11 +42,6 @@ class RawFiles
|
|
41
42
|
def path_to_pathname(path) ; @entry_dir + path ; end
|
42
43
|
private :path_to_pathname
|
43
44
|
|
44
|
-
def pathname_to_path(pathname)
|
45
|
-
pathname.relative_path_from(@entry_dir).to_s
|
46
|
-
end
|
47
|
-
private :pathname_to_path
|
48
|
-
|
49
45
|
def edit_entry(path, prototype=nil)
|
50
46
|
pathname = path_to_pathname(path)
|
51
47
|
begin
|
@@ -69,9 +65,9 @@ class RawFiles
|
|
69
65
|
end
|
70
66
|
|
71
67
|
def each_entry_path(selector)
|
72
|
-
|
73
|
-
next unless
|
74
|
-
path =
|
68
|
+
Find.find @entry_dir.to_s do |fs_path|
|
69
|
+
next unless FileTest.file? fs_path
|
70
|
+
path = Pathname.new(fs_path).relative_path_from(@entry_dir).to_s
|
75
71
|
yield path if selector.accept_path? path
|
76
72
|
end
|
77
73
|
self
|
@@ -39,39 +39,33 @@ class RecursiveIndex
|
|
39
39
|
def initialize(input, options)
|
40
40
|
@input = input
|
41
41
|
@index_name = options[:index_name] || "index"
|
42
|
-
@index_re = %r!^((?:.*/)?)#{Regexp.quote(@index_name)}$!
|
43
42
|
end
|
44
43
|
|
45
|
-
def
|
46
|
-
|
47
|
-
@input.
|
44
|
+
def each_entry(selector)
|
45
|
+
indices = {}
|
46
|
+
@input.each_entry(Path::ALL) do |path, entry|
|
48
47
|
components = path.split("/")
|
49
48
|
until components.empty?
|
50
49
|
components.pop
|
51
50
|
index_path = (components + [@index_name]).join("/")
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
next unless selector.accept_path? index_path
|
52
|
+
index_entry = indices[index_path]
|
53
|
+
unless index_entry
|
54
|
+
index_entry = {'items' => []}
|
55
|
+
indices[index_path] = index_entry
|
56
|
+
end
|
57
|
+
if path == index_path
|
58
|
+
index_entry = entry.merge(index_entry)
|
59
|
+
indices[index_path] = index_entry
|
60
|
+
end
|
61
|
+
index_entry['items'] << {'path' => path, 'entry' => entry}
|
62
|
+
index_entry['updated'] = Hx.last_update_time(index_entry, entry)
|
55
63
|
end
|
56
64
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
def get_entry(path)
|
61
|
-
raise NoSuchEntryError, path unless path =~ @index_re
|
62
|
-
selector = Path.parse_pattern("#{$1}**")
|
63
|
-
index = {'items' => []}
|
64
|
-
@input.each_entry(selector) do |child_path, entry|
|
65
|
-
if child_path == path
|
66
|
-
index = entry.merge(index)
|
67
|
-
else
|
68
|
-
index['items'] << {'path' => child_path, 'entry' => entry}
|
69
|
-
end
|
70
|
-
updated = [entry['updated'], index['updated']].compact.max
|
71
|
-
index['updated'] = updated if updated
|
65
|
+
indices.each do |path, entry|
|
66
|
+
yield path, entry
|
72
67
|
end
|
73
|
-
|
74
|
-
index
|
68
|
+
self
|
75
69
|
end
|
76
70
|
end
|
77
71
|
|
data/spec/rawfiles_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 117
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 26
|
9
|
-
-
|
10
|
-
version: 0.26.
|
9
|
+
- 1
|
10
|
+
version: 0.26.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- MenTaLguY
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-22 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -164,15 +164,5 @@ rubygems_version: 1.6.2
|
|
164
164
|
signing_key:
|
165
165
|
specification_version: 3
|
166
166
|
summary: A miniature static site generator.
|
167
|
-
test_files:
|
168
|
-
|
169
|
-
- spec/hx_dummy.rb
|
170
|
-
- spec/hx_dummy2.rb
|
171
|
-
- spec/nullinput_spec.rb
|
172
|
-
- spec/overlay_spec.rb
|
173
|
-
- spec/pathops_spec.rb
|
174
|
-
- spec/rack_spec.rb
|
175
|
-
- spec/rawfiles_spec.rb
|
176
|
-
- spec/selector_spec.rb
|
177
|
-
- spec/site_spec.rb
|
178
|
-
- spec/spec_helper.rb
|
167
|
+
test_files: []
|
168
|
+
|