JStree: создать jstree из структуры каталогов smbclient

Я использую самоцвет sambal для smbclient. Я хочу создать jstree из рекурсивного списка каталогов из smbclient.

require "sambal"
client = Sambal::Client.new(domain:domain-name, host: host, share: 'all' ,user: 'abc', password: 'pswd')
client.cd("abc")
client.ask("recurse")
all_files_hash = client.ask("ls")

Я изменил метод smbclient для parse_files, чтобы в пути к файлу хэширования отображался путь. Пример хэша списка директорий, который я хочу отобразить в JStree:

    all_files_hash = {"."=>{:type=>:directory}, ".."=>{:type=>:directory}, 
    "log"=>{:type=>:directory, :path=>"\\abc"},
     "softwares"=>{:type=>:directory, :path=>"\\abc"}, 
    "test.txt"=>{:type=>:file, :path=>""},
 "test_data"=>{:type=>:directory, :path=>"\\abc"},
 ".keep"=>{:type=>:file, :path=>"\\abc\\log"},
 "alert.log"=>{:type=>:file, :path=>"\\abc\\log"}, 
"development.log"=>{:type=>:file, :path=>"\\abc\\log"},
 "test.log"=>{:type=>:file, :path=>"\\abc\\test_data"},
 "robomongo-0.8.4-x86_64.deb"=>{:type=>:file, :path=>"\\abc\\softwares"}, 
"sublime-text_build-3065_amd64.deb"=>{:type=>:file, :path=>"\\abc\\softwares"},
 "ubuntu"=>{:type=>:directory, :path=>"\\abc\\softwares"},
 "ubuntu.css"=>{:type=>:file, :path=>"\\abc\\softwares\\ubuntu"}} 

Как я могу создать jstree из рекурсивного списка файлов, который я получил в all_files_hash?

Ожидаемый результат:

 jstree_hash = [{"text" => "abc","path" => "\\abc","children" => [{"text" => "log","path"=>"\\abc\\log","children" => [{"text" => "development.log","path"=>"\\abc\\log\\developemnt.log"},{"text" => "alert.log","path"=>"\\abc\\log\\alert.log"}]}]}}]

Я следовал по ссылкам ниже, но не повезло: вложенный хэш и перебрать глубокий

Заранее спасибо..

0 ответов

Другие вопросы по тегам