ni_nitdoc: fixed broken search with special caracters in JS
authorAlexandre Terrasa <alexandre@moz-code.org>
Sun, 21 Jul 2013 05:22:52 +0000 (01:22 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Sun, 21 Jul 2013 05:22:52 +0000 (01:22 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

share/nitdoc/scripts/js-facilities.js
src/ni_nitdoc.nit

index b0e928f..31553f5 100644 (file)
@@ -198,14 +198,17 @@ $(document).ready(function() {
 \r
                                                        // Escape regexp related characters in query\r
                                                        var query = $("#search").val();\r
+                                                       query = query.replace(/\\/gi, "\\\\");\r
                                                        query = query.replace(/\[/gi, "\\[");\r
                                                        query = query.replace(/\|/gi, "\\|");\r
                                                        query = query.replace(/\*/gi, "\\*");\r
                                                        query = query.replace(/\+/gi, "\\+");\r
-                                                       query = query.replace(/\\/gi, "\\\\");\r
                                                        query = query.replace(/\?/gi, "\\?");\r
                                                        query = query.replace(/\(/gi, "\\(");\r
                                                        query = query.replace(/\)/gi, "\\)");\r
+                                                       query = query.replace(/&/gi, "&&");\r
+                                                       query = query.replace(/>/gi, "&gt;");\r
+                                                       query = query.replace(/</gi, "&lt;");\r
 \r
                                                        var index = 0;\r
                                                        var regexp = new RegExp("^" + query, "i");\r
@@ -214,7 +217,7 @@ $(document).ready(function() {
                                                                        break;\r
                                                                }\r
                                                                var result = entry.match(regexp);\r
-                                                               if(result != null && result.toString().toUpperCase() == $("#search").val().toUpperCase()) {\r
+                                                               if(result != null) {\r
                                                                        for(var i = 0; i < entries[entry].length; i++) {\r
                                                                                if(index > 10) {\r
                                                                                        break;\r
index ee20484..f502981 100644 (file)
@@ -154,11 +154,16 @@ class Nitdoc
                        content.append("\{txt: \"{mclass.name}\", url:\"{mclass.url}\" \},")
                        content.append("],")
                end
+               var name2mprops = new HashMap[String, Set[MPropDef]]
                for mproperty in model.mproperties do
                        if mproperty.visibility <= none_visibility then continue
                        if mproperty isa MAttribute then continue
-                       content.append("\"{mproperty.name}\": [")
-                       for mpropdef in mproperty.mpropdefs do
+                       if not name2mprops.has_key(mproperty.name) then name2mprops[mproperty.name] = new HashSet[MPropDef]
+                       name2mprops[mproperty.name].add_all(mproperty.mpropdefs)
+               end
+               for mproperty, mpropdefs in name2mprops do
+                       content.append("\"{mproperty}\": [")
+                       for mpropdef in mpropdefs do
                                content.append("\{txt: \"{mpropdef.full_name}\", url:\"{mpropdef.url}\" \},")
                        end
                        content.append("],")