lib/milkode/cdweb/lib/database.rb in milkode-0.9.3.1 vs lib/milkode/cdweb/lib/database.rb in milkode-0.9.4

- old
+ new

@@ -137,17 +137,19 @@ # ファイルリストの生成 paths = records.map {|record| DocumentRecord.new(record).shortpath.split("/") }.find_all {|parts| - parts.length > base_depth and parts[0, base_depth] == base_parts + # 先頭フォルダ名が一致するものをピックアップ + parts.length > base_depth && parts[0, base_depth] == base_parts }.map {|parts| - is_file = parts.length == base_depth + 1 - path = parts[0, base_depth + 1].join("/") - [path, is_file] + # [path, is_file] + [parts[0, base_depth + 1].join("/"), parts.length == base_depth + 1] }.sort_by {|parts| - [if parts[1] then 1 else 0 end, parts[0].downcase] + # 配列の比較を利用したディレクトリ優先ソート + # aaa, bbb/, aaa/, bbb -> [aaa/, bbb/, aaa, bbb] + [parts[1] ? 1 : 0, parts[0].downcase] # [is_file(int), path(downcase)] }.uniq paths end @@ -157,10 +159,12 @@ if sort_kind == "favtime" sorted = @grndb.packages.favs elsif (sort_kind) sorted = @grndb.packages.sort(sort_kind) else - sorted = @grndb.packages.sort("name", "ascending") + # 大文字/小文字を無視してソートするため、速度を犠牲に + # sorted = @grndb.packages.sort("name", "ascending") + sorted = @grndb.packages.to_a.sort_by {|r| r.name.downcase} end sorted.map {|r| r.name} end