re = /function (?<name>[a-zA-Z0-9]+)\s*(?<arguments>\([^()]*\)(?::\s*[^{}\s]*)?)\s*(?<body>\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\})(?:;)?/m
str = 'function setupForNoActionsAvailable() {
component.canDelete = jasmine.createSpy(\'canDelete\').and.returnValue(false);
component.canMarkAsBlocked = jasmine.createSpy(\'canMarkAsBlocked\').and.returnValue(false);
component.canMarkAsReBill = jasmine.createSpy(\'canMarkAsRebill\').and.returnValue(false);
component.canMoveToInProgress = jasmine.createSpy(\'canMoveToInProgress\').and.returnValue(false);
}
function setupValidConditions() {
component.invoice = {} as any;
component.isReadonly = jasmine.createSpy(\'isReadonly\').and.returnValue(false);
invoiceHelper.canMarkAsReBill = jasmine.createSpy(\'canMarkAsReBill\').and.returnValue(true);
};
export function ageInDays(date: Date, now: Date): number {
return Math.trunc(millisecondsToDays(now.getTime() - date.getTime()));
}
function millisecondsToDays(milliseconds: number): number {
return (((milliseconds / 1000) / 60) / 60) / 24;
}
// Prevent Karma from running prematurely.
__karma__.loaded = function () { };'
# 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