é o seguinte, o código serve para uma integração com google drive, a api me retorna um json com uma lista de arquivos.
Preciso organiza-los em array, tipo assim:
Código: Selecionar todos
Pasta
Sub-Pasta
Item da Sub Pasta
Item da Pasta
Montei um exemplo para ver se podem me ajudar, no meu código não está bem assim, mas a é a idéia:
O Array estaria assim:
Código: Selecionar todos
{
{
"id" => "2"
"Titulo" => "Fotos"
"parente" => "1"
},
{
"id" => "1"
"Titulo" => "Teste"
"parente" => "" //ou seja, esta na pasta raiz
},
{
"id" => "3"
"Titulo" => "teste.jpg"
"parente" => "2" //dentro de fotos
},
{
"id" => "4"
"Titulo" => "doc.pdf"
"parente" => "1" //dentro de Teste
},
{
"id" => "5"
"Titulo" => "documento.docx"
"parente" => "" //raiz
},
{
"id" => "6"
"Titulo" => "desktop.rar"
"parente" => "" //raiz
}
}
Código: Selecionar todos
FOR EACH h IN _aFiles
hFile := hb_Hash()
hFile["file" ] := h
hFile["items"] := {}
AAdd( aFiles, hFile )
NEXT
FOR i := Len( aFiles ) TO 1 STEP -1
hFile := aFiles[i]
IF !Empty( hFile["file"]["parente"] )
nPos := AScan( aFiles, { |h| Alltrim( h["file"]["id"] ) == Alltrim( hFile["file"]["parente"] ) } )
IF !Empty( nPos )
AAdd( aFiles[ nPos, "items" ], hFile )
HB_Adel( aFiles, i, .T. )
ENDIF
ENDIF
NEXT
Alguém tem uma idéia para melhorar meu método de ordenação?


