@@ -11,143 +11,114 @@ type LanguageRegex struct {
11
11
}
12
12
13
13
type FlagRegex struct {
14
- FunctionRegex string `json:"function_regex"`
15
- FieldRegex string `json:"field_regex"`
16
- HasMultipleKeys bool `json:"has_multiple_keys"`
14
+ FieldRegex string `json:"field_regex"`
17
15
}
18
16
19
17
var LanguageRegexes = []LanguageRegex {
20
18
{
21
19
ExtensionRegex : `\.[jt]sx?$` ,
22
20
FlagRegexes : []FlagRegex {
23
21
{
24
- FunctionRegex : `(?s)useFsModifications\(.+?\)` , // SDK React V2
25
- FieldRegex : `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*['"]?(.+?)['"]?\s*[\"\,]` ,
26
- HasMultipleKeys : true ,
22
+ FieldRegex : `useFsFlag[(](?:\s*['"](.*)['"]\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK React V3
27
23
},
28
24
{
29
- FunctionRegex : `(?s)useFsFlag\(.+?\)` , // SDK React V3
30
- FieldRegex : `useFsFlag\(['"]?\s*(.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)]` ,
31
- HasMultipleKeys : true ,
25
+ FieldRegex : `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*(['"].*['"]|[^\r\n\t\f\v,}]+).*[},]?` , // SDK JS V2 && SDK React V2
32
26
},
33
27
{
34
- FunctionRegex : `(?s)\.getModifications\(.+?\].+?\)` , // SDK JS V2
35
- FieldRegex : `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*['"]?(.+?)['"]?\s*[\"\,]` ,
36
- HasMultipleKeys : true ,
37
- },
38
- {
39
- FunctionRegex : `(?s)getFlag\(.+?\)` , // SDK JS V3
40
- FieldRegex : `getFlag\(['"]?\s*(.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)\,]` ,
41
- HasMultipleKeys : true ,
28
+ FieldRegex : `getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JS V3
42
29
},
43
30
},
44
31
},
45
32
{
46
33
ExtensionRegex : `\.go$` ,
47
34
FlagRegexes : []FlagRegex {
48
35
{
49
- FunctionRegex : `(?s)\.GetModification(String|Number|Bool|Object|Array)\(.+?\)` , // SDK GO V2
50
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\,]` ,
36
+ FieldRegex : `\.GetModification(?:String|Number|Bool|Object|Array)\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK GO V2
51
37
},
52
38
},
53
39
},
54
40
{
55
41
ExtensionRegex : `\.py$` ,
56
42
FlagRegexes : []FlagRegex {
57
43
{
58
- FunctionRegex : `(?s)\.get_modification\(.+?\)` , // SDK PYTHON V2
59
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
44
+ FieldRegex : `\.get_modification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|True|False|\d+|"[^"]*"))?\s*\)` , // SDK PYTHON V2
60
45
},
61
46
},
62
47
},
63
48
{
64
49
ExtensionRegex : `\.java$` ,
65
50
FlagRegexes : []FlagRegex {
66
51
{
67
- FunctionRegex : `(?s)\.getModification\(.+?\)` , // SDK JAVA V2
68
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
52
+ FieldRegex : `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK JAVA V2
69
53
},
70
54
{
71
- FunctionRegex : `(?s)\.getFlag\(.+?\)` , // SDK JAVA V3
72
- FieldRegex : `(?s)\.getFlag\(['"](.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)\,]` ,
55
+ FieldRegex : `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JAVA V3
73
56
},
74
57
},
75
58
},
76
59
{
77
60
ExtensionRegex : `\.php$` ,
78
61
FlagRegexes : []FlagRegex {
79
62
{
80
- FunctionRegex : `(?s)\-\>getModification\(.+?\)` , // SDK PHP V2
81
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
63
+ FieldRegex : `\-\>getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK PHP V1 && SDK PHP V2
82
64
},
83
65
{
84
- FunctionRegex : `(?s)\-\>getFlag\(.+?\)` , // SDK PHP V3
85
- FieldRegex : `(?s)\-\>getFlag\(['"](.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)\,]` ,
66
+ FieldRegex : `\-\>getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK PHP V3
86
67
},
87
68
},
88
69
},
89
70
{
90
71
ExtensionRegex : `\.kt$` ,
91
72
FlagRegexes : []FlagRegex {
92
73
{
93
- FunctionRegex : `(?s)\.getModification\(.+?\)` , // SDK ANDROID V2
94
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
74
+ FieldRegex : `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK ANDROID V2
95
75
},
96
76
{
97
- FunctionRegex : `(?s)\.getFlag\(.+?\)` , // SDK ANDROID V3
98
- FieldRegex : `(?s)\.getFlag\(['"](.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)\,]` ,
77
+ FieldRegex : `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK ANDROID V3
99
78
},
100
79
},
101
80
},
102
81
{
103
82
ExtensionRegex : `\.swift$` ,
104
83
FlagRegexes : []FlagRegex {
105
84
{
106
- FunctionRegex : `(?s)\.getModification\(.+?\)` , // SDK iOS V2
107
- FieldRegex : `\s*['"](.+?)['"](?:,\s*)['"]?default(?:String|Double|Bool|Float|Int|Json|Array)['"]?\s*\:\s*['"]?(.+?)['"]?\s*[\"\,]` ,
85
+ FieldRegex : `\.getModification\(\s*["'](\w+)['"]\s*,\s*default(?:String|Double|Float|Int|Bool|Json|Array)\s*:\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)\s*(?:,\s*activate\s*:\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK iOS V2
108
86
},
109
87
{
110
- FunctionRegex : `(?s)\.getFlag\(key: ['"](.+?)['"]` , // SDK iOS V3
111
- FieldRegex : `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*['"]?(.+?)['"]?\s*[\)]` ,
88
+ FieldRegex : `\.getFlag[(]\s*key\s*:\s*(?:\s*["'](.*)["']\s*,\s*defaultValue\s*:\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK iOS V3
112
89
},
113
90
},
114
91
},
115
92
{
116
93
ExtensionRegex : `\.m$` ,
117
94
FlagRegexes : []FlagRegex {
118
95
{
119
- FunctionRegex : `(?s)\]\s*getModification:@.+?\]` , // SDK iOS V2
120
- FieldRegex : `\s*['"](.+?)['"](?:\s*)default(?:String|Double|Bool|Float|Int|Json|Array):\@?\s*(['"](.+?)['"]|YES|NO|TRUE|FALSE|true|false|\d*\.?\d+)?` ,
96
+ FieldRegex : `getModification\s*:\s*@\s*['"](.+?)['"](?:\s*)default(?:String|Double|Bool|Float|Int|Json|Array):\@?\s*(['"].+?['"]|YES|NO|TRUE|FALSE|true|false|[+-]?(?:\d*[.])?\d+)?` , // SDK iOS V2
121
97
},
122
98
{
123
- FunctionRegex : `(?s)\s*getFlagWithKey:@.+?\]` , // SDK iOS V3
124
- FieldRegex : `\s*getFlagWithKey:@['"](.+?)['"](?:\s*)['"]?defaultValue['"]?\s*\:\@?\s*['"]?(.+?)['"]?\s*[\]]` ,
99
+ FieldRegex : `getFlagWithKey\s*:\s*\@['"](.+?)['"](?:\s*)['"]?defaultValue['"]?\s*\:\s*\@?\s*(.+?)\s*[\]]` , // SDK iOS V3
125
100
},
126
101
},
127
102
},
128
103
{
129
104
ExtensionRegex : `\.[fc]s$` ,
130
105
FlagRegexes : []FlagRegex {
131
106
{
132
- FunctionRegex : `(?s)\.GetModification\(.+?\)` , // SDK .NET V1
133
- FieldRegex : `(?s)\.GetModification\(['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
107
+ FieldRegex : `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
134
108
},
135
109
{
136
- FunctionRegex : `(?s)\.GetFlag\(.+?\)` , // SDK .NET V3
137
- FieldRegex : `(?s)\.GetFlag\(['"](.+?)['"](?:.\s*)['"]?(.+?)['"]?\s*[\"\)\,]` ,
110
+ FieldRegex : `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
138
111
},
139
112
},
140
113
},
141
114
{
142
115
ExtensionRegex : `\.vb$` ,
143
116
FlagRegexes : []FlagRegex {
144
117
{
145
- FunctionRegex : `(?s)\.GetModification\(.+?\)` , // SDK .NET V1
146
- FieldRegex : `(?s)\.GetModification\(['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
118
+ FieldRegex : `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|True|false|False|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
147
119
},
148
120
{
149
- FunctionRegex : `(?s)\.GetFlag\(.+?\)` , // SDK .NET V3
150
- FieldRegex : `(?s)\.GetFlag\(['"](.+?)['"](?:,\s*)['"]?(.+?)['"]?\s*[\)\,]` ,
121
+ FieldRegex : `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
151
122
},
152
123
},
153
124
},
0 commit comments