\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, ">");\r
+ query = query.replace(/</gi, "<");\r
\r
var index = 0;\r
var regexp = new RegExp("^" + query, "i");\r
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
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("],")