@@ -6,132 +6,92 @@ import (
66)
77
88type LanguageRegex struct {
9- ExtensionRegex string `json:"extension_regex"`
10- FlagRegexes []FlagRegex `json:"flag_regexes"`
11- }
12-
13- type FlagRegex struct {
14- FieldRegex string `json:"field_regex"`
9+ FileExtension string `json:"file_extension"`
10+ Regexes []string `json:"regexes"`
1511}
1612
1713var LanguageRegexes = []LanguageRegex {
1814 {
19- ExtensionRegex : `\.[jt]sx?$` ,
20- FlagRegexes : []FlagRegex {
21- {
22- FieldRegex : `useFsFlag[(](?:\s*['"](.*)['"]\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK React V3
23- },
24- {
25- FieldRegex : `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*(['"].*['"]|[^\r\n\t\f\v,}]+).*[},]?` , // SDK JS V2 && SDK React V2
26- },
27- {
28- FieldRegex : `getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JS V3
29- },
15+ FileExtension : `\.[jt]sx?$` ,
16+ Regexes : []string {
17+ `useFsFlag[(](?:\s*['"](.*)['"]\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK React V3
18+ `['"]?key['"]?\s*\:\s*['"](.+?)['"](?:.*\s*)['"]?defaultValue['"]?\s*\:\s*(['"].*['"]|[^\r\n\t\f\v,}]+).*[},]?` , // SDK JS V2 && SDK React V2
19+ `getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JS V3
3020 },
3121 },
22+
3223 {
33- ExtensionRegex : `\.go$` ,
34- FlagRegexes : []FlagRegex {
35- {
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
37- },
24+ FileExtension : `\.go$` ,
25+ Regexes : []string {
26+ `\.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
3827 },
3928 },
4029 {
41- ExtensionRegex : `\.py$` ,
42- FlagRegexes : []FlagRegex {
43- {
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
45- },
30+ FileExtension : `\.py$` ,
31+ Regexes : []string {
32+ `\.get_modification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|True|False|\d+|"[^"]*"))?\s*\)` , // SDK PYTHON V2
4633 },
4734 },
4835 {
49- ExtensionRegex : `\.java$` ,
50- FlagRegexes : []FlagRegex {
51- {
52- FieldRegex : `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK JAVA V2
53- },
54- {
55- FieldRegex : `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JAVA V3
56- },
36+ FileExtension : `\.java$` ,
37+ Regexes : []string {
38+ `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK JAVA V2
39+ `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK JAVA V3
5740 },
5841 },
5942 {
60- ExtensionRegex : `\.php$` ,
61- FlagRegexes : []FlagRegex {
62- {
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
64- },
65- {
66- FieldRegex : `\-\>getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK PHP V3
67- },
43+ FileExtension : `\.php$` ,
44+ Regexes : []string {
45+ `\-\>getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK PHP V1 && SDK PHP V2
46+ `\-\>getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK PHP V3
6847 },
6948 },
7049 {
71- ExtensionRegex : `\.kt$` ,
72- FlagRegexes : []FlagRegex {
73- {
74- FieldRegex : `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK ANDROID V2
75- },
76- {
77- FieldRegex : `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK ANDROID V3
78- },
50+ FileExtension : `\.kt$` ,
51+ Regexes : []string {
52+ `\.getModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK ANDROID V2
53+ `\.getFlag[(](?:\s*["'](.*)["']\s*,\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK ANDROID V3
54+
7955 },
8056 },
8157 {
82- ExtensionRegex : `\.swift$` ,
83- FlagRegexes : []FlagRegex {
84- {
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
86- },
87- {
88- FieldRegex : `\.getFlag[(]\s*key\s*:\s*(?:\s*["'](.*)["']\s*,\s*defaultValue\s*:\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK iOS V3
89- },
58+ FileExtension : `\.swift$` ,
59+ Regexes : []string {
60+ `\.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
61+ `\.getFlag[(]\s*key\s*:\s*(?:\s*["'](.*)["']\s*,\s*defaultValue\s*:\s*(["'].*\s*[^"]*["']|[^)]*))\s*[)]` , // SDK iOS V3
9062 },
9163 },
9264 {
93- ExtensionRegex : `\.m$` ,
94- FlagRegexes : []FlagRegex {
95- {
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
97- },
98- {
99- FieldRegex : `getFlagWithKey\s*:\s*\@['"](.+?)['"](?:\s*)['"]?defaultValue['"]?\s*\:\s*\@?\s*(.+?)\s*[\]]` , // SDK iOS V3
100- },
65+ FileExtension : `\.m$` ,
66+ Regexes : []string {
67+ `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
68+ `getFlagWithKey\s*:\s*\@['"](.+?)['"](?:\s*)['"]?defaultValue['"]?\s*\:\s*\@?\s*(.+?)\s*[\]]` , // SDK iOS V3
10169 },
10270 },
10371 {
104- ExtensionRegex : `\.[fc]s$` ,
105- FlagRegexes : []FlagRegex {
106- {
107- FieldRegex : `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
108- },
109- {
110- FieldRegex : `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
111- },
72+ FileExtension : `\.[fc]s$` ,
73+ Regexes : []string {
74+ `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
75+ `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
11276 },
11377 },
11478 {
115- ExtensionRegex : `\.vb$` ,
116- FlagRegexes : []FlagRegex {
117- {
118- FieldRegex : `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|True|false|False|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
119- },
120- {
121- FieldRegex : `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
122- },
79+ FileExtension : `\.vb$` ,
80+ Regexes : []string {
81+ `\.GetModification\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|True|false|False|\d+|"[^"]*"))?\s*\)` , // SDK .NET V1
82+ `\.GetFlag\(\s*["']([\w\-]+)['"]\s*,\s*(["'][^"]*['"]|[+-]?(?:\d*[.])?\d+|true|false|False|True)(?:\s*,\s*(?:true|false|\d+|"[^"]*"))?\s*\)` , // SDK .NET V3
12383 },
12484 },
12585}
12686
12787func AddCustomRegexes (customRegexJSON string ) {
128- customRegexes := []LanguageRegex {}
129- err := json .Unmarshal ([]byte (customRegexJSON ), & customRegexes )
88+ regexes := []LanguageRegex {}
89+ err := json .Unmarshal ([]byte (customRegexJSON ), & regexes )
13090
13191 if err != nil {
13292 log .Printf ("Error when parsing custom regexes : %v" , err )
13393 return
13494 }
13595
136- LanguageRegexes = append (LanguageRegexes , customRegexes ... )
96+ LanguageRegexes = append (LanguageRegexes , regexes ... )
13797}
0 commit comments