This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/static/js/directives/ui/regex-match-view/regex-match-view.component.ts
2019-11-12 11:09:47 -05:00

34 lines
961 B
TypeScript

import { Input, Component } from 'ng-metadata/core';
/**
* A component that displays the matches and non-matches for a regular expression against a set of
* items.
*/
@Component({
selector: 'regex-match-view',
templateUrl: '/static/js/directives/ui/regex-match-view/regex-match-view.component.html'
})
export class RegexMatchViewComponent {
// FIXME: Use one-way data binding
@Input('=') private regex: string;
@Input('=') private items: any[];
public filterMatches(regexstr: string, items: ({value: string})[], shouldMatch: boolean): ({value: string})[] | null {
regexstr = regexstr || '.+';
try {
var regex = new RegExp(regexstr);
} catch (ex) {
return null;
}
return items.filter(function(item) {
var value: string = item.value;
var m: RegExpMatchArray = value.match(regex);
var matches: boolean = !!(m && m[0].length == value.length);
return matches == shouldMatch;
});
}
}