re = /(?:doFilter\s*[:=]\s*function|function\s*doFilter)\([^)]*\)\s*{((?:[^{}]+|{[^}]+})*)}/
str = 'doFilter : function(){
var filters = $$(\'#\'+this.containerId+\' .filter input\', \'#\'+this.containerId+\' .filter select\');
var elements = [];
for(var i in filters){
if(filters[i].value && filters[i].value.length) elements.push(filters[i]);
}
if (!this.doFilterCallback || (this.doFilterCallback && this.doFilterCallback())) {
this.reload(this.addVarToUrl(this.filterVar, encode_base64(Form.serializeElements(elements))));
}
},
resetFilter = function(){
this.reload(this.addVarToUrl(this.filterVar, \'\'));
},
checkCheckboxes : function(element){
elements = Element.select($(this.containerId), \'input[name="\'+element.name+\'"]\');
for(var i=0; i<elements.length;i++){
this.setCheckboxChecked(elements[i], element.checked);
}
},
function doFilter(grid, event){
var element = Event.findElement(event, \'tr\');
if([\'a\', \'input\', \'select\', \'option\'].indexOf(Event.element(event).tagName.toLowerCase())!=-1) {
return;
}
if(element.title){
setLocation(element.title);
}
},
function openGridRow(grid, event){
var element = Event.findElement(event, \'tr\');
if([\'a\', \'input\', \'select\', \'option\'].indexOf(Event.element(event).tagName.toLowerCase())!=-1) {
return;
}
if(element.title){
setLocation(element.title);
}
}
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html