Created
April 3, 2017 02:36
-
-
Save rjoydip-zz/b3e8f9953db742c6e2ab95a37680d601 to your computer and use it in GitHub Desktop.
This is for converting graphql like schema to json format
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| 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