Skip to content

Instantly share code, notes, and snippets.

@rjoydip-zz
Created April 3, 2017 02:36
Show Gist options
  • Select an option

  • Save rjoydip-zz/b3e8f9953db742c6e2ab95a37680d601 to your computer and use it in GitHub Desktop.

Select an option

Save rjoydip-zz/b3e8f9953db742c6e2ab95a37680d601 to your computer and use it in GitHub Desktop.
This is for converting graphql like schema to json format
/*
Input
========
{
empireHero:{
name
}
jediHero:{
name
}
}
Output
=======
{
"data": {
"empireHero": {
"name": "Luke Skywalker"
},
"jediHero": {
"name": "R2-D2"
}
}
}
*/
/**
* Prototype 1
*/
(function() {
"use strict";
const dataSchema = `{
superHero : {
name
},
superAvenger : {
details : {
name,
age
}
}
}`;
const parse = {
init: function(schemaParam){
return this.token(schemaParam);
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString()
.split(' ')
.filter(function(n) { return n != '' })
.map(function(n,i) { return (i > 0) ? n : ''})
.filter(function(n) { return n != '' })
.slice(0,-1);
}
};
console.clear();
console.log(parse.init(dataSchema));
})();
/**
* Prototype 2
*/
(function() {
"use strict";
const dataSchema = `{
superHero : {
name
},
superAvenger : {
details : {
name,
age
}
}
}`;
const sliced = function(array,min,max){
return array.slice(array.indexOf(min)+1,array.indexOf(max));
};
const parse = {
init: function(schemaParam){
return this.sub(this.token(schemaParam));
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString()
.split(' ')
.filter(function(n) { return n != '' })
.map(function(n,i) { return (i > 0) ? n : ''})
.filter(function(n) { return n != '' })
.slice(0,-1);
},
sub : function(dataParam){
return dataParam.map(function(n){ return ((n.indexOf('{') > -1 || n.indexOf('}') > -1) ? '::' : n) });
}
};
console.log(parse.init(dataSchema));
})();
/**
* Prototype 3
*/
(function() {
"use strict";
const dataSchema = `{
superHero : {
name,place
},
superAvenger : {
details : {
name,age,rank
}
}
}`;
const parse = {
init: function(schemaParam){
return this.sub(this.token(schemaParam)).join('');
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString()
.split(' ')
.filter(function(n) { return n != '' })
.map(function(n,i) { return (i > 0) ? n : ''})
.filter(function(n) { return n != '' })
.slice(0,-1);
},
sub : function(dataParam){
return dataParam.map(function(n){ return ((n.indexOf('{') > -1 || n.indexOf('}') > -1) ? '::' : n) });
}
};
console.log(parse.init(dataSchema));
})();
/**
* Prototype 4
*/
(function() {
"use strict";
const dataSchema = `{
superHero : {
name,place
},
superAvenger : {
details : {
name,age,rank
}
}
}`;
const helper = {
};
const parse = {
init: function(schemaParam){
return (
this.token(schemaParam)
.map(function(n,i){
return (
(n.indexOf('{') > -1 || n.indexOf('}') > -1 ) ? n.charCodeAt(n.indexOf('{')) || n.charCodeAt(n.indexOf('}')) :
(
(n.indexOf(':') > -1) ? n.charCodeAt(n.indexOf(':')) :
(
(i >= 0 && typeof n === String && i-1 === 123 && i+1 === 125) ? n :
(
(
n.indexOf(',') > -1) ?
(
n.split(',').map(function(n){
return n
})
) : n
)
)
)
)
})
);
//return this.token(schemaParam);
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString()
.split(' ')
.filter(function(n) { return n !== '' })
.map(function(n,i) { return (i > 0) ? n : ''})
.filter(function(n) { return n !== '' })
.slice(0,-1);
}
};
// parse.init(dataSchema);
console.log(parse.init(dataSchema));
})();
/**
* Prototype 5
*/
(function() {
"use strict";
const dataSchema =
`
{
superHero : {
name,place
},
superAvenger : {
details : {
name,age,rank
}
}
}
`;
const parse = {
init: function(schemaParam){
return JSON.parse(
JSON.stringify(
this.token(schemaParam)
.map(function(n,i){
return (
(n.indexOf('{') > -1 || n.indexOf('}') > -1 ) ? n :
(
(n.indexOf(':') > -1) ? n :
(
(i >= 0 && typeof n === String && i-1 == n.indexOf('}') && i+1 == n.indexOf('{')) ? n :
(
(n.indexOf(',') > -1) ? n.split(',').map(function(n){return (`${n} : ''`)}).join(',') : n
)
)
)
)
}).join('')
)
);
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString()
.split(' ')
.filter(function(n) { return n !== '' })
.filter(function(n) { return n !== '' });
}
};
console.log(parse.init(dataSchema));
})();
/**
* Prototype 6
*/
(function() {
"use strict";
const dataSchema =
` {
superHero : {
name,place
},
superAvenger : {
details : {
name,age,rank
}
}
}
`;
const parse = {
init: function(schemaParam){
return this.token(schemaParam)
.map(function(n,i){
return (
(n.indexOf('{') > -1 || n.indexOf('}') > -1 ) ? n :
(
(n.indexOf(':') > -1) ? n :
(
(i >= 0 && typeof n === String && i-1 == n.indexOf('}') && i+1 == n.indexOf('{')) ? n :
(
(n.indexOf(',') > -1) ? n.split(',').map(function(n){return (`${n} : ''`)}).join(', ') : n
)
)
)
)
}).join(' ');
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString().split(' ')
.filter(function(n) { return n !== '' });
}
};
console.log(parse.init(dataSchema));
})();
/**
* Prototype 7
*/
(function() {
"use strict";
const dataSchema =
` {
superHero : {
name,place
},
superAvenger : {
details : {
name,age,rank
}
}
}
`;
/*
(
(n.indexOf('{') > -1 || n.indexOf('}') > -1 ) ? n : // n is for '{' '}'
(
(n.indexOf(':') > -1) ? n : // n is for colon
(
(i >= 0 && typeof n === String && i-1 == n.indexOf('}') && i+1 == n.indexOf('{')) ? null :
(
(n.indexOf(',') > -1) ? n.split(',').map(function(n){return (`"${n}" : ""`)}).join(', ') : '"'+ n + '"' // n is for key
)
)
)
)
(n.indexOf(':') > -1) ? null : (n.indexOf('{') > -1 ? stack.push(n) : (n.indexOf('}') > -1 ) ? stack.pop() : obj[n] = null);
*/
const parse = {
init: function(schemaParam){
var stack = [];
var obj = {};
this.token(schemaParam)
.map(function(n,i){
(n.indexOf(':') > -1) ? null : (n.indexOf('{') > -1 ? stack.push(n) : (n.indexOf('}') > -1 ) ? stack.pop() : obj[n] = null);
})
console.log(obj);
return null;
},
token : function(schemaParam){
return schemaParam
.replace(/(\r\n|\n|\r)|\t/gm," ")
.toString().split(' ')
.filter(function(n) { return n !== '' });
}
};
parse.init(dataSchema);
//console.log(parse.init(dataSchema));
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment