Skip to content

Instantly share code, notes, and snippets.

@tuliocll
Created February 10, 2021 17:30
Show Gist options
  • Save tuliocll/c55a30b530814b51bb562b24c00fba15 to your computer and use it in GitHub Desktop.
Save tuliocll/c55a30b530814b51bb562b24c00fba15 to your computer and use it in GitHub Desktop.
convert(`name,
subname,
users{
name,
id,
casas{
id,
}
},
address{
name,
id,
ip
}`)
function convert(txt = "") {
// só limpando espaços e quebras de linha
let parsed = txt.replace(/ /g, "")
parsed = parsed.replace(/\n/g, "")
console.log("entrada:", "\n\n" + parsed, "\n")
console.log("saida:\n")
const size = parsed.split(/[a-zA-Z]+[{]/) // split pra separar as props de cada obj
// remover primeiro elemento, pq n serve
size.shift()
// toda essa parte deveria ficar em um laço
// para poder pegar todas as chaves
// aqui eu busco o nome de cada objeto (users, casas, addres..)
const start = parsed.search(/[a-zA-Z]+[{]/gm)
const end = parsed.search("{")
let name = parsed.slice(start, end)
// aqui eu pego as propriedades de cada objeto (users, casas...)
// estou pegando fixo o 0(zero) por que to com preguiça
const props = size[0].split(",")
// removo a ultima posição por que a virgula no final de toda
// prop vai me gerar uma posição vazia no array
props.pop()
// aqui eu printo minha saida
props.map((prop) => {
console.log(`${name}.${prop}`)
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment