JSFiddle - React, Tailwind, and code Playground

by hyperthalamus

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
<textarea id="help">
app_token		string	The api token for the given account. You can find the api token when navigating through account->api accounts
apiv		integer	The api version; only version 5 supported.
p		string	projectUuid of the project to retrieve programs for
start		int	Will return a subset of available programs. Used primarily for pagination. Default is set to 0
end		integer	Will return a subset of available programs. Used primarily for pagination. Default is set to start+20. Max length cannot exceed 100
categoryid		int	The id of the category to search for, if working with a category project.
v		string	program uuid of the program
refid		string	project reference id
prefid		string	program reference id
sortby		string	sort params . Possible values (sortnum, dateStart, dateEnd, viewcount)
include_viewcount		boolean	Will return the total view count of the program.
</textarea>
<input type="text" id="url" value='/ws/ws_program/api/{app_token}/mode/json/apiv/5?p={project_uuid}&refid={project_refrenceId}&v={program_uuid}&prefid={program_refrenceId}&date_start={date_start}&date_end={date_end}&start={start}&end={end}&category_id={categoryID}&sortby={sortby}&sortdir={sortdir}&include_viewcount={true|false}'/>
<pre id="json"></pre>
<button id="process">process</button>

CSS

#help {
  width: 100%;
  height: 40px;
}
#url {
  width: 100%;
}

JavaScript

function process(url) {
    url = url.split("/");
    var i;
    var obj = {
        ws: url[2]
    };
    return obj;
}
function addTableData(json, rows) {
    var ignore = ['app_token', 'apiv', 'mode'];
    _.each(rows, function (row) {
        if (!row.length) {  return; }
        var elements = row.split(/\t/);
        if (ignore.indexOf(elements[0]) !== -1) {
            return;
        }
        json[elements[0]] = {
            required: false,
            type: elements[2],
            description: elements[3]
        }
    });
    var serviceName = json.ws;
    var data = {};
    delete json.ws;
    data[serviceName] = json;
    return data;
}
function createJSON() {
    var json = process($("#url").val());
    json = addTableData(json, $("#help").val().split("\n"));
    $("#json").html(JSON.stringify(json, false, 1));
}

$(function() {
    $("#process").click(createJSON);
});