Skip to content

Instantly share code, notes, and snippets.

@towerofnix
Last active August 7, 2016 01:24
Show Gist options
  • Save towerofnix/5553323b142292c35bd24713239f4cee to your computer and use it in GitHub Desktop.
Save towerofnix/5553323b142292c35bd24713239f4cee to your computer and use it in GitHub Desktop.
A handy function to convert your JS data to data tags.
const dataTagSerialize = function(data) {
if (typeof data === 'object') {
if (Array.isArray(data)) {
const elements = data.map(x => dataTagSerialize(x))
return `[${elements.join(',')}]`
} else {
const keyValues = []
for (let prop of Object.getOwnPropertyNames(data)) {
keyValues.push([prop, dataTagSerialize(data[prop])])
}
const keyToValues = keyValues.map(e => `${e[0]}:${e[1]}`)
return `{${keyToValues.join(',')}}`
}
} else if (typeof data === 'string') {
const specialCharacters = ['\\','\"']
let str = ''
for (let i = 0; i < data.length; i++) {
if (specialCharacters.includes(data[i])) {
str += '\\' + data[i]
} else {
str += data[i]
}
}
return `"${str}"`
} else if (typeof data === 'number') {
return parseFloat(data)
} else if (typeof data === 'boolean') {
return data
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment