From 4a8cc106862bee79fb1533338bde16669d40f5f5 Mon Sep 17 00:00:00 2001 From: Gabriel-403 <50576424+Gabriel-403@users.noreply.github.com> Date: Tue, 31 Aug 2021 17:33:20 +0800 Subject: [PATCH 1/2] feat: Extend multiple sections type of escapeAssertion (#180) * feat: Extend multiple sections type of escapeAssertion Signed-off-by: Gabriel-403 <1499015923@qq.com> * feat: add r2.value == p4.value and r1.value == p1.value type Signed-off-by: Gabriel-403 <1499015923@qq.com> --- src/util/util.ts | 5 ++++- test/util.test.ts | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/util/util.ts b/src/util/util.ts index 94f681e9..266c46b3 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -18,7 +18,10 @@ import { RoleManager } from '../rbac'; function escapeAssertion(s: string): string { - return s.replace(/([rp])\.|[0-9]\./g, (match) => { + if (s.startsWith('r') || s.startsWith('p')) { + s = s.replace('.', '_'); + } + return s.replace(/([| =)(&<>,+\-!*\/])([rp][0-9]*)\./g, (match) => { return match.replace('.', '_'); }); } diff --git a/test/util.test.ts b/test/util.test.ts index 36185693..129e2f9f 100644 --- a/test/util.test.ts +++ b/test/util.test.ts @@ -190,3 +190,21 @@ test('test keyGet2Func', () => { expect(util.keyGet2Func('/baz', '/foo', 'bar')).toEqual(''); expect(util.keyGet2Func('/foo/baz', '/foo', 'bar')).toEqual(''); }); + +test('test escapeAssertion', () => { + expect(util.escapeAssertion('r.attr.value == p.attr')).toEqual('r_attr.value == p_attr'); + expect(util.escapeAssertion('r.attp.value || p.attr')).toEqual('r_attp.value || p_attr'); + expect(util.escapeAssertion('r.attp.value && p.attr')).toEqual('r_attp.value && p_attr'); + expect(util.escapeAssertion('r.attp.value >p.attr')).toEqual('r_attp.value >p_attr'); + expect(util.escapeAssertion('r.attp.value