I have been asked to figure out what i think this JavaScript function does, but I’m not too sure. I have a general gist of it, I think it is splitting up some input and putting them into an array and returning them in a certain format. But I cannot describe exactly what it does. Can anybody help?
get_facet_query = function(facets) { var filter_query = ""; var requestedFacets = []; if (facets instanceof Array) { facets.forEach(function (f) { var facetStringArray = f.split(","); facetStringArray.forEach(function (fsa) { var fsa_pair = fsa.split(":"); var fsa_name = fsa_pair[0].trim().toLowerCase(); var fsa_values = []; var facetValueStringArray = fsa_pair[1].split("|"); facetValueStringArray.forEach(function (fv) { if (fv !== "") fv = fv.toLowerCase(); fsa_values.push(fv); }); var x = { "name": fsa_name, "values": fsa_values }; requestedFacets.push(x); }); }); } else { var facetStringArray = facets.split(","); facetStringArray.forEach(function (fsa) { var fsa_pair = fsa.split(":"); if (fsa_pair.length == 2) { var fsa_name = fsa_pair[0].trim().toLowerCase(); var fsa_values = []; var facetValueStringArray = fsa_pair[1].split("|"); facetValueStringArray.forEach(function (fv) { if (fv !== "") fv = fv.toLowerCase(); fsa_values.push(fv); }); var x = { "name": fsa_name, "values": fsa_values }; requestedFacets.push(x); } }); } var sqlstring = require('sqlstring'); requestedFacets.forEach(function (f) { safefname = sqlstring.escape(f.name); f.values.forEach(function (fv) { safefv = sqlstring.escape(fv); filter_query += ' AND LOWER(t.metadata) REGEXP \'"' + safefname.slice(1, safefname.length - 1) + '"(\ )?:(\ )?"[^"]*' + safefv.slice(1,safefv.length - 1) + '[^"]*"\' '; }); }); return filter_query;
};