-2
我的S3文件的路徑列表的形式像紅寶石動態哈希鍵
a/b/c
a/b/c/d.txt
a/d/e.txt
一個桶是有辦法,我可以創建上述信息的JSON表示,我正在尋找類似
{:a=>{:b=>{:c=>[d.txt]},:d=>[e.txt]}}
我已生成使用eval的動態密鑰的名字,但我不能做
eval(a[:b]X) where X is something like [:c]
在此先感謝
我的S3文件的路徑列表的形式像紅寶石動態哈希鍵
a/b/c
a/b/c/d.txt
a/d/e.txt
一個桶是有辦法,我可以創建上述信息的JSON表示,我正在尋找類似
{:a=>{:b=>{:c=>[d.txt]},:d=>[e.txt]}}
我已生成使用eval的動態密鑰的名字,但我不能做
eval(a[:b]X) where X is something like [:c]
在此先感謝
files = %w(a/b/c.txt a/b/c/d.txt a/d/e.txt)
files.reject do |f| # first of all, remove redundant dirs
files.any? { |ff| ff != f && ff.start_with?(f) }
end.each_with_object({}) do |f, memo|
*path, file = f.split('/')
bucket = path.inject(memo) { |acc, k| acc[k] ||= {} }
(bucket[:files] ||= []) << file
end
#⇒ {
# "a" => {
# "b" => {
# "c" => {
# :files => [
# [0] "d.txt"
# ]
# },
# :files => [
# [0] "c.txt"
# ]
# },
# "d" => {
# :files => [
# [0] "e.txt"
# ]
# }
# }
# }
你有一個字符串數組,每個字符串的意思是文件路徑? –
它可能指向一個文件夾或一個文件 – Subash
我有點不清楚你要求什麼。將字符串列表轉換爲此哈希對象的方法?給定一個S3桶來生成這個哈希對象的方法?定義顯示/添加/從文件名列表中刪除的方法的類?而且,爲什麼你要將文件夾轉換爲符號;我認爲他們會更好地留下來作爲字符串。 –