Commit 9c316b55 by David Kaltschmidt

Logging: fix query parsing for selectors with multiple labels

- simplify selector parsing
- added tests
parent 32511533
......@@ -35,4 +35,11 @@ describe('parseQuery', () => {
regexp: 'x|y',
});
});
it('returns query for selector with two labels', () => {
expect(parseQuery('{foo="bar", baz="42"}')).toEqual({
query: '{foo="bar", baz="42"}',
regexp: '',
});
});
});
......@@ -16,26 +16,15 @@ const DEFAULT_QUERY_PARAMS = {
query: '',
};
const QUERY_REGEXP = /({\w+="[^"]+"})?\s*(\w[^{]+)?\s*({\w+="[^"]+"})?/;
const selectorRegexp = /{[^{]*}/g;
export function parseQuery(input: string) {
const match = input.match(QUERY_REGEXP);
const match = input.match(selectorRegexp);
let query = '';
let regexp = '';
let regexp = input;
if (match) {
if (match[1]) {
query = match[1];
}
if (match[2]) {
regexp = match[2].trim();
}
if (match[3]) {
if (match[1]) {
query = `${match[1].slice(0, -1)},${match[3].slice(1)}`;
} else {
query = match[3];
}
}
query = match[0];
regexp = input.replace(selectorRegexp, '').trim();
}
return { query, regexp };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment