AnidadoInicial$ = "Rosetta Code" + chr$(10) + "....rocks" + chr$(10) + "........code" + chr$(10) + "........comparison" + chr$(10) + "........wiki" + chr$(10) + "....mocks" + chr$(10) + "........trolling" + chr$(10) print AnidadoInicial$ sangrado$ = AnidadoConSangrado$(AnidadoInicial$) print sangrado$ anidado$ = SangradoAAnidado$(sangrado$) print anidado$ print "Initial = Restored: "; if AnidadoInicial$ = anidado$ then print "True" else print "False": fi end sub AnidadoConSangrado$ (anidado$) local salida$, linea$, i, ind salida$ = "" linea$ = "" i = 1 ind = 0 while i <= len(anidado$) if mid$(anidado$, i, 1) = chr$(10) or mid$(anidado$, i, 1) = chr$(13) then if linea$ <> "" then ind = 0 while ind < len(linea$) and mid$(linea$, ind + 1, 1) = "." ind = ind + 1 wend salida$ = salida$ + str$(ind / 4) + " " + mid$(linea$, ind + 1) + chr$(10) linea$ = "" fi else linea$ = linea$ + mid$(anidado$, i, 1) fi i = i + 1 wend if linea$ <> "" then ind = 0 while ind < len(linea$) and mid$(linea$, ind + 1, 1) = "." ind = ind + 1 wend salida$ = salida$ + str$(ind / 4) + " " + mid$(linea$, ind + 1) + chr$(10) fi return salida$ end sub sub SangradoAAnidado$ (sangrado$) local salida$, linea$, i, ind, tmp$ salida$ = "" linea$ = "" i = 1 while i <= len(sangrado$) if mid$(sangrado$, i, 1) = chr$(10) or mid$(sangrado$, i, 1) = chr$(13) then if linea$ <> "" then ind = instr(linea$, " ") nivel = val(mid$(linea$, 1, ind - 1)) tmp$ = "" for t = 1 to nivel * 4 tmp$ = tmp$ + "." next t //salida$ = salida$ + string$(nivel * 4, ".") + mid$(linea$, ind + 1) + chr$(10) salida$ = salida$ + tmp$ + mid$(linea$, ind + 1) + chr$(10) linea$ = "" fi else linea$ = linea$ + mid$(sangrado$, i, 1) fi i = i + 1 wend if linea$ <> "" then ind = instr(linea$, " ") nivel = val(mid$(linea$, 1, ind - 1)) salida$ = salida$ + string$(nivel * 4, ".") + mid$(linea$, ind + 1) + chr$(10) fi return salida$ end sub