handle zero length result sets
This commit is contained in:
parent
fd7f930eeb
commit
8c618ada46
@ -30,6 +30,12 @@ class CommandLineInterface {
|
|||||||
parser.load_processors_from_resources();
|
parser.load_processors_from_resources();
|
||||||
|
|
||||||
var results = parser.parse(code);
|
var results = parser.parse(code);
|
||||||
|
|
||||||
|
if (results.length == 0) {
|
||||||
|
neko.Lib.print("Your code didn't have any tokens in it!");
|
||||||
|
neko.Sys.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
var ignored_modules = parser.ignored_modules;
|
var ignored_modules = parser.ignored_modules;
|
||||||
var ignored_tokens_in_modules = parser.ignored_tokens_in_modules;
|
var ignored_tokens_in_modules = parser.ignored_tokens_in_modules;
|
||||||
|
|
||||||
|
@ -94,177 +94,183 @@ class JavaScriptTarget {
|
|||||||
Display code version information.
|
Display code version information.
|
||||||
**/
|
**/
|
||||||
static public function display_version_information() {
|
static public function display_version_information() {
|
||||||
var version_info = new CodeVersionInformation(current_results, ignored_modules, ignored_tokens_in_modules);
|
var output : String;
|
||||||
|
|
||||||
var output = "<div id=\"code-announcement\">Your code requires the following minimum PHP & PECL module versions:</div>";
|
|
||||||
|
|
||||||
var minimum = version_info.final_versions.get("minimum");
|
|
||||||
|
|
||||||
output += "<form action=\"\" onsubmit=\"return false\">";
|
|
||||||
|
|
||||||
// module list
|
|
||||||
var all_modules_hash = new Hash<Bool>();
|
|
||||||
|
|
||||||
for (module in minimum.keys()) { all_modules_hash.set(module, true); }
|
|
||||||
for (module in ignored_modules.keys()) { all_modules_hash.set(module, true); }
|
|
||||||
for (module in manually_ignored_modules.keys()) { all_modules_hash.set(module, true); }
|
|
||||||
|
|
||||||
var all_modules = new Array<String>();
|
|
||||||
|
|
||||||
for (module in all_modules_hash.keys()) { all_modules.push(module); }
|
|
||||||
|
|
||||||
all_modules.sort(CodeVersionInformation.module_name_sorter);
|
|
||||||
|
|
||||||
var ignored_tokens = new Array<String>();
|
var ignored_tokens = new Array<String>();
|
||||||
var ignored_modules_array = new Array<String>();
|
var ignored_modules_array = new Array<String>();
|
||||||
for (module in manually_ignored_modules.keys()) {
|
|
||||||
if (manually_ignored_modules.get(module) == true) {
|
|
||||||
ignored_modules_array.push("@" + module);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output += "<table cellspacing=\"0\" id=\"modules\">";
|
if (current_results.length == 0) {
|
||||||
output += "<tr><th>Module</th><th>Ignore?</th><th>Version</th></tr>";
|
output = "<div id=\"code-announcement\">Your code doesn't have any tokens in it!</div>";
|
||||||
|
} else {
|
||||||
|
var version_info = new CodeVersionInformation(current_results, ignored_modules, ignored_tokens_in_modules);
|
||||||
|
|
||||||
for (module in all_modules) {
|
output = "<div id=\"code-announcement\">Your code requires the following minimum PHP & PECL module versions:</div>";
|
||||||
var is_ignored = false;
|
|
||||||
var is_ignored_in_source = false;
|
|
||||||
var show_checkbox = true;
|
|
||||||
var is_checked = false;
|
|
||||||
|
|
||||||
if (ignored_modules.exists(module) == true) {
|
var minimum = version_info.final_versions.get("minimum");
|
||||||
is_ignored = true;
|
|
||||||
is_ignored_in_source = true;
|
|
||||||
show_checkbox = false;
|
|
||||||
}
|
|
||||||
if (manually_ignored_modules.get(module) == true) {
|
|
||||||
is_ignored = true;
|
|
||||||
is_checked = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
output += "<tr class=\"" + (is_ignored ? "disabled" : "enabled") + "\"><td class=\"module\">" + module + "</td>";
|
output += "<form action=\"\" onsubmit=\"return false\">";
|
||||||
|
|
||||||
if (show_checkbox && (module.toLowerCase() != "php")) {
|
// module list
|
||||||
output += "<td align=\"center\"><input type=\"checkbox\" name=\"ignore-module-" + module + "\" id=\"ignore-module-" + module + "\" onclick=\"JavaScriptTarget.toggle_ignore_module_and_redraw('" + module + "')\" " + (is_checked ? " checked" : "") + "/></td>";
|
var all_modules_hash = new Hash<Bool>();
|
||||||
} else {
|
|
||||||
output += "<td> </td>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_ignored) {
|
for (module in minimum.keys()) { all_modules_hash.set(module, true); }
|
||||||
if (is_ignored_in_source) {
|
for (module in ignored_modules.keys()) { all_modules_hash.set(module, true); }
|
||||||
output += "<td>(ignored in source)</td>";
|
for (module in manually_ignored_modules.keys()) { all_modules_hash.set(module, true); }
|
||||||
} else {
|
|
||||||
output += "<td>(ignored)</td>";
|
var all_modules = new Array<String>();
|
||||||
|
|
||||||
|
for (module in all_modules_hash.keys()) { all_modules.push(module); }
|
||||||
|
|
||||||
|
all_modules.sort(CodeVersionInformation.module_name_sorter);
|
||||||
|
|
||||||
|
for (module in manually_ignored_modules.keys()) {
|
||||||
|
if (manually_ignored_modules.get(module) == true) {
|
||||||
|
ignored_modules_array.push("@" + module);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
if (minimum.exists(module)) {
|
|
||||||
output += "<td>" + minimum.get(module) + "</td>";
|
output += "<table cellspacing=\"0\" id=\"modules\">";
|
||||||
|
output += "<tr><th>Module</th><th>Ignore?</th><th>Version</th></tr>";
|
||||||
|
|
||||||
|
for (module in all_modules) {
|
||||||
|
var is_ignored = false;
|
||||||
|
var is_ignored_in_source = false;
|
||||||
|
var show_checkbox = true;
|
||||||
|
var is_checked = false;
|
||||||
|
|
||||||
|
if (ignored_modules.exists(module) == true) {
|
||||||
|
is_ignored = true;
|
||||||
|
is_ignored_in_source = true;
|
||||||
|
show_checkbox = false;
|
||||||
|
}
|
||||||
|
if (manually_ignored_modules.get(module) == true) {
|
||||||
|
is_ignored = true;
|
||||||
|
is_checked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
output += "<tr class=\"" + (is_ignored ? "disabled" : "enabled") + "\"><td class=\"module\">" + module + "</td>";
|
||||||
|
|
||||||
|
if (show_checkbox && (module.toLowerCase() != "php")) {
|
||||||
|
output += "<td align=\"center\"><input type=\"checkbox\" name=\"ignore-module-" + module + "\" id=\"ignore-module-" + module + "\" onclick=\"JavaScriptTarget.toggle_ignore_module_and_redraw('" + module + "')\" " + (is_checked ? " checked" : "") + "/></td>";
|
||||||
} else {
|
} else {
|
||||||
output += "<td> </td>";
|
output += "<td> </td>";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
output += "</tr>";
|
if (is_ignored) {
|
||||||
}
|
if (is_ignored_in_source) {
|
||||||
|
output += "<td>(ignored in source)</td>";
|
||||||
output += "</table>";
|
} else {
|
||||||
|
output += "<td>(ignored)</td>";
|
||||||
// maximum version info
|
}
|
||||||
var maximum = version_info.final_versions.get("maximum");
|
|
||||||
var printed_message = false;
|
|
||||||
|
|
||||||
for (module in maximum.keys()) {
|
|
||||||
if (!printed_message) {
|
|
||||||
output += "Your code also can't use PHP or PECL modules newer than:<ul>";
|
|
||||||
printed_message = true;
|
|
||||||
}
|
|
||||||
output += ("<li>" + module + ": " + maximum.get(module) + "</li>");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (printed_message) { output += "</ul>"; }
|
|
||||||
|
|
||||||
if (!version_info.is_valid()) {
|
|
||||||
output += "<p><strong>This code may not run!</strong></p>";
|
|
||||||
}
|
|
||||||
|
|
||||||
// tokens list
|
|
||||||
output += "<table cellspacing=\"0\" id=\"results-list\">";
|
|
||||||
|
|
||||||
output += "<tr><th>Token</th><th>Ignore?</th>";
|
|
||||||
|
|
||||||
for (module in version_info.all_modules) {
|
|
||||||
var classes = ["filter"];
|
|
||||||
if (show_only_modules.exists(module)) {
|
|
||||||
if (show_only_modules.get(module)) {
|
|
||||||
classes.push("is-filtering");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manually_ignored_modules.get(module) != true) {
|
|
||||||
output += "<th title=\"click to toggle filter\" class=\"" + classes.join(" ") + "\" onclick=\"JavaScriptTarget.toggle_module_and_redraw('" + module + "')\">" + module + "</th>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output += "</tr>";
|
|
||||||
|
|
||||||
var id_index = 0;
|
|
||||||
for (result in current_results) {
|
|
||||||
var ok_to_show = true;
|
|
||||||
var modules_check_out = true;
|
|
||||||
var any_visible_modules = false;
|
|
||||||
|
|
||||||
if (!result.is_enabled) { ignored_tokens.push(result.token); }
|
|
||||||
|
|
||||||
var max_versions = CodeVersionInformation.split_version_string(result.version);
|
|
||||||
|
|
||||||
for (module in show_only_modules.keys()) {
|
|
||||||
if (show_only_modules.get(module)) {
|
|
||||||
ok_to_show = false;
|
|
||||||
if (!max_versions.exists(module)) { modules_check_out = false; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (module in max_versions.keys()) {
|
|
||||||
if (ignored_modules.exists(module)) {
|
|
||||||
if (!ignored_modules.get(module)) { any_visible_modules = true; }
|
|
||||||
} else {
|
} else {
|
||||||
any_visible_modules = true;
|
if (minimum.exists(module)) {
|
||||||
}
|
output += "<td>" + minimum.get(module) + "</td>";
|
||||||
}
|
} else {
|
||||||
|
output += "<td> </td>";
|
||||||
if (modules_check_out) { ok_to_show = true; }
|
|
||||||
if (!any_visible_modules) { ok_to_show = false; }
|
|
||||||
|
|
||||||
if (ok_to_show) {
|
|
||||||
var result_class = (result.is_enabled ? "enabled" : "disabled");
|
|
||||||
var result_id = "result-" + id_index;
|
|
||||||
var enabled_id = "result-enabled-" + id_index;
|
|
||||||
output += "<tr id=\"" + result_id + "\" class=\"" + result_class + "\">";
|
|
||||||
|
|
||||||
output += "<td class=\"token\">" + result.token + "</td>";
|
|
||||||
|
|
||||||
output += "<td align=\"center\"><input onclick=\"JavaScriptTarget.change_result_and_redraw(this)\" type=\"checkbox\" name=\"" + enabled_id + "\" id=\"" + enabled_id + "\""
|
|
||||||
+ ((!result.is_enabled) ? " checked" : "") + " /></td>";
|
|
||||||
|
|
||||||
for (module in version_info.all_modules) {
|
|
||||||
if (manually_ignored_modules.get(module) != true) {
|
|
||||||
output += "<td>";
|
|
||||||
if (max_versions.exists(module)) {
|
|
||||||
output += max_versions.get(module);
|
|
||||||
} else {
|
|
||||||
output += " ";
|
|
||||||
}
|
|
||||||
output += "</td>";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output += "</tr>";
|
output += "</tr>";
|
||||||
}
|
}
|
||||||
id_index++;
|
|
||||||
}
|
|
||||||
output += "</table>";
|
|
||||||
|
|
||||||
output += "</form>";
|
output += "</table>";
|
||||||
|
|
||||||
|
// maximum version info
|
||||||
|
var maximum = version_info.final_versions.get("maximum");
|
||||||
|
var printed_message = false;
|
||||||
|
|
||||||
|
for (module in maximum.keys()) {
|
||||||
|
if (!printed_message) {
|
||||||
|
output += "Your code also can't use PHP or PECL modules newer than:<ul>";
|
||||||
|
printed_message = true;
|
||||||
|
}
|
||||||
|
output += ("<li>" + module + ": " + maximum.get(module) + "</li>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (printed_message) { output += "</ul>"; }
|
||||||
|
|
||||||
|
if (!version_info.is_valid()) {
|
||||||
|
output += "<p><strong>This code may not run!</strong></p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// tokens list
|
||||||
|
output += "<table cellspacing=\"0\" id=\"results-list\">";
|
||||||
|
|
||||||
|
output += "<tr><th>Token</th><th>Ignore?</th>";
|
||||||
|
|
||||||
|
for (module in version_info.all_modules) {
|
||||||
|
var classes = ["filter"];
|
||||||
|
if (show_only_modules.exists(module)) {
|
||||||
|
if (show_only_modules.get(module)) {
|
||||||
|
classes.push("is-filtering");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (manually_ignored_modules.get(module) != true) {
|
||||||
|
output += "<th title=\"click to toggle filter\" class=\"" + classes.join(" ") + "\" onclick=\"JavaScriptTarget.toggle_module_and_redraw('" + module + "')\">" + module + "</th>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output += "</tr>";
|
||||||
|
|
||||||
|
var id_index = 0;
|
||||||
|
for (result in current_results) {
|
||||||
|
var ok_to_show = true;
|
||||||
|
var modules_check_out = true;
|
||||||
|
var any_visible_modules = false;
|
||||||
|
|
||||||
|
if (!result.is_enabled) { ignored_tokens.push(result.token); }
|
||||||
|
|
||||||
|
var max_versions = CodeVersionInformation.split_version_string(result.version);
|
||||||
|
|
||||||
|
for (module in show_only_modules.keys()) {
|
||||||
|
if (show_only_modules.get(module)) {
|
||||||
|
ok_to_show = false;
|
||||||
|
if (!max_versions.exists(module)) { modules_check_out = false; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (module in max_versions.keys()) {
|
||||||
|
if (ignored_modules.exists(module)) {
|
||||||
|
if (!ignored_modules.get(module)) { any_visible_modules = true; }
|
||||||
|
} else {
|
||||||
|
any_visible_modules = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modules_check_out) { ok_to_show = true; }
|
||||||
|
if (!any_visible_modules) { ok_to_show = false; }
|
||||||
|
|
||||||
|
if (ok_to_show) {
|
||||||
|
var result_class = (result.is_enabled ? "enabled" : "disabled");
|
||||||
|
var result_id = "result-" + id_index;
|
||||||
|
var enabled_id = "result-enabled-" + id_index;
|
||||||
|
output += "<tr id=\"" + result_id + "\" class=\"" + result_class + "\">";
|
||||||
|
|
||||||
|
output += "<td class=\"token\">" + result.token + "</td>";
|
||||||
|
|
||||||
|
output += "<td align=\"center\"><input onclick=\"JavaScriptTarget.change_result_and_redraw(this)\" type=\"checkbox\" name=\"" + enabled_id + "\" id=\"" + enabled_id + "\""
|
||||||
|
+ ((!result.is_enabled) ? " checked" : "") + " /></td>";
|
||||||
|
|
||||||
|
for (module in version_info.all_modules) {
|
||||||
|
if (manually_ignored_modules.get(module) != true) {
|
||||||
|
output += "<td>";
|
||||||
|
if (max_versions.exists(module)) {
|
||||||
|
output += max_versions.get(module);
|
||||||
|
} else {
|
||||||
|
output += " ";
|
||||||
|
}
|
||||||
|
output += "</td>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output += "</tr>";
|
||||||
|
}
|
||||||
|
id_index++;
|
||||||
|
}
|
||||||
|
output += "</table>";
|
||||||
|
|
||||||
|
output += "</form>";
|
||||||
|
}
|
||||||
|
|
||||||
// update the how-to-ignore information
|
// update the how-to-ignore information
|
||||||
var permanent_ignore_div = js.Lib.document.getElementById("permanent-ignore");
|
var permanent_ignore_div = js.Lib.document.getElementById("permanent-ignore");
|
||||||
|
Loading…
Reference in New Issue
Block a user