I have write a short script that display each article of a folder:
require ‘find’
result = [] @pattern = ‘*.html’
Find.find(‘public/2008/’) do |p|
next unless File.file?§
name = File.basename§
result << p if File.fnmatch(@pattern, name)
end
a = ‘’
result.length.times do |i|
content = File.read(result[i])
a += ‘
’
a += content
a += ‘’ + File.ctime(result[i]).to_s + ‘’
a += ‘
’
end
a
As you can see, it display some articles in a webpage. However, but I
would like to order them by time (with File.ctime(result[i]) for
instance) such as in blogs. If you see a sexy way to do so, that would
be very helpful for me.
require ‘find’
result = [] @pattern = ‘*.html’
Find.find(‘public/2008/’) do |p|
next unless File.file?§
name = File.basename§
result << p if File.fnmatch(@pattern, name)
end
a = ‘’
result.length.times do |i|
content = File.read(result[i])
a += ‘
’
a += content
a += ‘’ + File.ctime(result[i]).to_s + ‘’
a += ‘
’
end
a
Iterating over an array like this is kind of cumbersome. ‘each’ should
be your weapon of choice here. Furthermore using the << operator for
concatenation could yield in better performance as += constructs a new
String object whereas << doesn’t (AFAIK).
David B. wrote:
As you can see, it display some articles in a webpage. However, but I
would like to order them by time (with File.ctime(result[i]) for
instance) such as in blogs. If you see a sexy way to do so, that would
be very helpful for me.
Hope that’s sexy enough for you:
result = result.sort_by { |p| File.ctime§ }
To sum it all up here is how I would have done it: