more cleanup

This commit is contained in:
John Bintz 2008-10-16 14:14:28 -04:00
parent 1bb79c7974
commit e004cdef0b
4 changed files with 58 additions and 32 deletions

View File

@ -1,13 +1,12 @@
/**
Process version information for a set of Results.
**/
class CodeVersionInformation { class CodeVersionInformation {
public var final_versions : Hash<Hash<String>>; public var final_versions : Hash<Hash<String>>;
public var minimum_versions : Hash<String>; public var minimum_versions : Hash<String>;
public var maximum_versions : Hash<String>; public var maximum_versions : Hash<String>;
public var all_modules : Array<String>; public var all_modules : Array<String>;
public static function breakdown_version_number(version : String) {
return version.split(".");
}
public static function get_version_lower_than(s : String) : String { public static function get_version_lower_than(s : String) : String {
var greater_than = ~/\&lt;= (.*)$/; var greater_than = ~/\&lt;= (.*)$/;
@ -20,7 +19,7 @@ class CodeVersionInformation {
public static function breakdown_php_version_string(s : String) { public static function breakdown_php_version_string(s : String) {
var parts = new Array<String>(); var parts = new Array<String>();
for (regexp in [ ~/^([^\ ]*) (.*)$/ ]) { var regexp = ~/\W*(\w*) (.*)$/;
if (regexp.match(s)) { if (regexp.match(s)) {
var version = regexp.matched(2).split("-").shift(); var version = regexp.matched(2).split("-").shift();
@ -31,8 +30,6 @@ class CodeVersionInformation {
parts.push(regexp.matched(1)); parts.push(regexp.matched(1));
parts.push(version); parts.push(version);
break;
}
} }
return parts; return parts;
@ -123,6 +120,10 @@ class CodeVersionInformation {
return final_versions; return final_versions;
} }
/**
Create a new CodeVersionInformation object based on the provided
Result set and, optionally, while ignoring the provided modules.
**/
public function new(results : Array<Result>, ?ignored_modules : Hash<Bool>) { public function new(results : Array<Result>, ?ignored_modules : Hash<Bool>) {
var start_minimum_versions = new Hash<Array<String>>(); var start_minimum_versions = new Hash<Array<String>>();
var start_maximum_versions = new Hash<Array<String>>(); var start_maximum_versions = new Hash<Array<String>>();
@ -132,7 +133,7 @@ class CodeVersionInformation {
var internal_minimum_version = new Hash<Array<String>>(); var internal_minimum_version = new Hash<Array<String>>();
var internal_maximum_version = new Hash<Array<String>>(); var internal_maximum_version = new Hash<Array<String>>();
for (part in result.version.split(", ")) { for (part in result.version.split(",")) {
var version_string_info = breakdown_php_version_string(part); var version_string_info = breakdown_php_version_string(part);
if (version_string_info.length > 0) { if (version_string_info.length > 0) {
var source = version_string_info[0]; var source = version_string_info[0];

View File

@ -12,8 +12,8 @@ class FunctionTokenProcessor extends TokenProcessor {
var tokens_parsed = 0; var tokens_parsed = 0;
// //
// haXe XML parsing is slow, as it uses a custom XML parser. // haXe XML parsing is slow, as it uses a custom XML parser...
// so I'll use a custom XML parser for this data. // ..so I'll my own custom XML parser for this particular data.
// //
/*var start = Date.now(); /*var start = Date.now();
var first_element = Xml.parse(s).firstElement(); var first_element = Xml.parse(s).firstElement();
@ -38,6 +38,12 @@ class FunctionTokenProcessor extends TokenProcessor {
var version_regexp = ~/from=\'([^\']*)\'/i; var version_regexp = ~/from=\'([^\']*)\'/i;
var token_regexp = ~/name=\'([^\']*)\'/i; var token_regexp = ~/name=\'([^\']*)\'/i;
var version_clean_regexps = [
function(s) { return ~/PECL /.replace(s, ""); },
function(s) { return ~/\:/.replace(s, " "); },
function(s) { return ~/\, /.replace(s, ","); }
];
while (i < s_length) { while (i < s_length) {
var new_i = s.indexOf("<function", i); var new_i = s.indexOf("<function", i);
if (new_i != -1) { if (new_i != -1) {
@ -48,8 +54,7 @@ class FunctionTokenProcessor extends TokenProcessor {
if (version_regexp.match(tag) && token_regexp.match(tag)) { if (version_regexp.match(tag) && token_regexp.match(tag)) {
var version = version_regexp.matched(1); var version = version_regexp.matched(1);
var token = token_regexp.matched(1); var token = token_regexp.matched(1);
version = ~/PECL /.replace(version, ""); for (rf in version_clean_regexps) { version = rf(version); }
version = ~/\:/.replace(version, " ");
this.token_hash.set(token, new FunctionToken(token, version)); this.token_hash.set(token, new FunctionToken(token, version));
tokens_parsed++; tokens_parsed++;

View File

@ -78,16 +78,9 @@ class JavaScriptTarget {
} }
#if js #if js
static public function change_result_and_redraw(result_checkbox : Dynamic) { /**
var index_id_search = ~/^result-enabled-([0-9]+)$/; Display code version information.
if (index_id_search.match(result_checkbox.id)) { **/
var index_id = Std.parseInt(index_id_search.matched(1));
if (change_result(index_id, !result_checkbox.checked)) {
display_version_information();
}
}
}
static public function display_version_information() { static public function display_version_information() {
var version_info = new CodeVersionInformation(current_results, ignored_modules); var version_info = new CodeVersionInformation(current_results, ignored_modules);
@ -97,6 +90,7 @@ class JavaScriptTarget {
output += "<form action=\"\" onsubmit=\"return false\">"; output += "<form action=\"\" onsubmit=\"return false\">";
// module list
var all_modules_hash = new Hash<Bool>(); var all_modules_hash = new Hash<Bool>();
for (module in minimum.keys()) { all_modules_hash.set(module, true); } for (module in minimum.keys()) { all_modules_hash.set(module, true); }
@ -163,6 +157,7 @@ class JavaScriptTarget {
output += "</table>"; output += "</table>";
// maximum version info
var maximum = version_info.final_versions.get("maximum"); var maximum = version_info.final_versions.get("maximum");
var printed_message = false; var printed_message = false;
@ -180,6 +175,7 @@ class JavaScriptTarget {
output += "<p><strong>This code may not run!</strong></p>"; output += "<p><strong>This code may not run!</strong></p>";
} }
// tokens list
output += "<table cellspacing=\"0\" id=\"results-list\">"; output += "<table cellspacing=\"0\" id=\"results-list\">";
output += "<tr><th>Token</th><th>Ignore?</th>"; output += "<tr><th>Token</th><th>Ignore?</th>";
@ -258,6 +254,7 @@ class JavaScriptTarget {
output += "</form>"; output += "</form>";
// 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");
if ((ignored_modules_array.length > 0) || (ignored_tokens.length > 0)) { if ((ignored_modules_array.length > 0) || (ignored_tokens.length > 0)) {
@ -286,6 +283,9 @@ class JavaScriptTarget {
js.Lib.document.getElementById('output').innerHTML = output; js.Lib.document.getElementById('output').innerHTML = output;
} }
/**
Analyze the provided code and display the results.
**/
static public function do_analysis(textarea) { static public function do_analysis(textarea) {
show_only_modules = new Hash<Bool>(); show_only_modules = new Hash<Bool>();
@ -305,11 +305,30 @@ class JavaScriptTarget {
}, 100); }, 100);
} }
/**
Toggle a token's visibility and redraw the page.
**/
static public function change_result_and_redraw(result_checkbox : Dynamic) {
var index_id_search = ~/^result-enabled-([0-9]+)$/;
if (index_id_search.match(result_checkbox.id)) {
var index_id = Std.parseInt(index_id_search.matched(1));
if (change_result(index_id, !result_checkbox.checked)) {
display_version_information();
}
}
}
/**
Toggle a module's visibiity and redraw the page.
**/
static public function toggle_module_and_redraw(module : String) { static public function toggle_module_and_redraw(module : String) {
JavaScriptTarget.toggle_module(module); JavaScriptTarget.toggle_module(module);
JavaScriptTarget.display_version_information(); JavaScriptTarget.display_version_information();
} }
/**
Toggle a module's enabled/disabed status and redraw the page.
**/
static public function toggle_ignore_module_and_redraw(module : String) { static public function toggle_ignore_module_and_redraw(module : String) {
JavaScriptTarget.toggle_ignore_module(module); JavaScriptTarget.toggle_ignore_module(module);
JavaScriptTarget.display_version_information(); JavaScriptTarget.display_version_information();

View File

@ -28,6 +28,7 @@ class TestCodeVersionInformation extends haxe.unit.TestCase {
**/ **/
function test_breakdown_version_string() { function test_breakdown_version_string() {
assertEquals("[PHP, 4]", CodeVersionInformation.breakdown_php_version_string("PHP 4").toString()); assertEquals("[PHP, 4]", CodeVersionInformation.breakdown_php_version_string("PHP 4").toString());
assertEquals("[PHP, 4]", CodeVersionInformation.breakdown_php_version_string(" PHP 4").toString());
assertEquals("[PHP, 5.2.0]", CodeVersionInformation.breakdown_php_version_string("PHP 5 &gt;= 5.2.0").toString()); assertEquals("[PHP, 5.2.0]", CodeVersionInformation.breakdown_php_version_string("PHP 5 &gt;= 5.2.0").toString());
assertEquals("[xmlwriter, 2.0.4]", CodeVersionInformation.breakdown_php_version_string("xmlwriter 2.0.4").toString()); assertEquals("[xmlwriter, 2.0.4]", CodeVersionInformation.breakdown_php_version_string("xmlwriter 2.0.4").toString());