-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桶来生成这个哈希对象的方法?定义显示/添加/从文件名列表中删除的方法的类?而且,为什么你要将文件夹转换为符号;我认为他们会更好地留下来作为字符串。 –