[NUI] Change the Regex member variables of InputFitler to string
authorBowon Ryu <bowon.ryu@samsung.com>
Wed, 11 Aug 2021 07:08:08 +0000 (16:08 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Wed, 18 Aug 2021 03:10:44 +0000 (12:10 +0900)
The properties of the NUI InputFilter require a regular expression.
But internally DALi uses std::regex.
When passing a regex from NUI to DALi, it is passed as a string.
So the platform can not guarantee all the features of C# Regex (RegexOptions etc).

Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs
src/Tizen.NUI/src/public/BaseComponents/TextField.cs
src/Tizen.NUI/src/public/BaseComponents/TextUtils.cs
src/Tizen.NUI/src/public/Common/NUIConstants.cs

index 1ff6b6c..6319123 100755 (executable)
@@ -1424,15 +1424,20 @@ namespace Tizen.NUI.BaseComponents
         /// <see cref="Tizen.NUI.Text.InputFilter"/> filters input based on regular expressions. <br />
         /// Users can set the Accepted or Rejected regular expression set, or both. <br />
         /// If both are used, Rejected has higher priority. <br />
+        /// The character set must follow the regular expression rules. <br />
+        /// Behaviour can not be guaranteed for incorrect grammars. <br />
+        /// Refer the link below for detailed rules. <br />
+        /// The functions in std::regex library use the ECMAScript grammar: <br />
+        /// http://cplusplus.com/reference/regex/ECMAScript/ <br />
         /// InputFiltered signal is emitted when the input is filtered by InputFilter <br />
         /// See <see cref="InputFiltered"/>, <see cref="InputFilterType"/> and <see cref="InputFilteredEventArgs"/> for a detailed description. <br />
         /// </remarks>
         /// <example>
         /// The following example demonstrates how to use the SetInputFilter method.
         /// <code>
-        /// Tizen.NUI.Text.InputFilter inputFilter;
-        /// inputFilter.Accepted = new Regex(@"[\d]"); // accept whole digits
-        /// inputFilter.Rejected = new Regex("[0-3]"); // reject 0, 1, 2, 3
+        /// var inputFilter = new Tizen.NUI.Text.InputFilter();
+        /// inputFilter.Accepted = @"[\d]"; // accept whole digits
+        /// inputFilter.Rejected = "[0-3]"; // reject 0, 1, 2, 3
         /// editor.SetInputFilter(inputFilter); // acceptable inputs are 4, 5, 6, 7, 8, 9
         /// </code>
         /// </example>
index b26fbce..65b24b5 100755 (executable)
@@ -1571,15 +1571,20 @@ namespace Tizen.NUI.BaseComponents
         /// <see cref="Tizen.NUI.Text.InputFilter"/> filters input based on regular expressions. <br />
         /// Users can set the Accepted or Rejected regular expression set, or both. <br />
         /// If both are used, Rejected has higher priority. <br />
+        /// The character set must follow the regular expression rules. <br />
+        /// Behaviour can not be guaranteed for incorrect grammars. <br />
+        /// Refer the link below for detailed rules. <br />
+        /// The functions in std::regex library use the ECMAScript grammar: <br />
+        /// http://cplusplus.com/reference/regex/ECMAScript/ <br />
         /// InputFiltered signal is emitted when the input is filtered by InputFilter <br />
         /// See <see cref="InputFiltered"/>, <see cref="InputFilterType"/> and <see cref="InputFilteredEventArgs"/> for a detailed description. <br />
         /// </remarks>
         /// <example>
         /// The following example demonstrates how to use the SetInputFilter method.
         /// <code>
-        /// Tizen.NUI.Text.InputFilter inputFilter;
-        /// inputFilter.Accepted = new Regex(@"[\d]"); // accept whole digits
-        /// inputFilter.Rejected = new Regex("[0-3]"); // reject 0, 1, 2, 3
+        /// var inputFilter = new Tizen.NUI.Text.InputFilter();
+        /// inputFilter.Accepted = @"[\d]"; // accept whole digits
+        /// inputFilter.Rejected = "[0-3]"; // reject 0, 1, 2, 3
         /// field.SetInputFilter(inputFilter); // acceptable inputs are 4, 5, 6, 7, 8, 9
         /// </code>
         /// </example>
index 507e6ce..c5d3582 100755 (executable)
@@ -19,7 +19,6 @@ extern alias TizenSystemSettings;
 using TizenSystemSettings.Tizen.System;
 using System;
 using System.ComponentModel;
-using System.Text.RegularExpressions;
 using Tizen.NUI.Text;
 
 namespace Tizen.NUI.BaseComponents
@@ -1330,8 +1329,8 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// This method converts a InputFilter struct to a PropertyMap and returns it.
-        /// The returned map can be used for set InputFilter PropertyMap in the SetInputFilter method.
+        /// This method converts a InputFilter struct to a PropertyMap and returns it. <br />
+        /// The returned map can be used for set InputFilter PropertyMap in the SetInputFilter method. <br />
         /// <param name="inputFilter">The InputFilter struct value.</param>
         /// <returns> A PropertyMap for InputFilter property. </returns>
         /// </summary>
@@ -1339,8 +1338,8 @@ namespace Tizen.NUI.BaseComponents
         public static PropertyMap GetInputFilterMap(InputFilter inputFilter)
         {
             var map = new PropertyMap();
-            var accepted = inputFilter.Accepted != null ? new PropertyValue(inputFilter.Accepted.ToString()) : new PropertyValue("");
-            var rejected = inputFilter.Rejected != null ? new PropertyValue(inputFilter.Rejected.ToString()) : new PropertyValue("");
+            var accepted = inputFilter.Accepted != null ? new PropertyValue(inputFilter.Accepted) : new PropertyValue("");
+            var rejected = inputFilter.Rejected != null ? new PropertyValue(inputFilter.Rejected) : new PropertyValue("");
             map.Add(0, accepted);
             map.Add(1, rejected);
 
@@ -1348,8 +1347,8 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// This method converts a InputFilter map to a struct and returns it.
-        /// The returned struct can be returned to the user as a InputFilter in the GetInputFilter method.
+        /// This method converts a InputFilter map to a struct and returns it. <br />
+        /// The returned struct can be returned to the user as a InputFilter in the GetInputFilter method. <br />
         /// <param name="map">The InputFilter PropertyMap.</param>
         /// <returns> A InputFilter struct. </returns>
         /// </summary>
@@ -1362,8 +1361,8 @@ namespace Tizen.NUI.BaseComponents
             map.Find(1)?.Get(out rejected);
 
             var inputFilter = new InputFilter();
-            inputFilter.Accepted = new Regex(accepted);
-            inputFilter.Rejected = new Regex(rejected);
+            inputFilter.Accepted = accepted;
+            inputFilter.Rejected = rejected;
 
             return inputFilter;
 
index 58dc9b4..c463bfa 100755 (executable)
@@ -15,7 +15,6 @@
 using System;
 using System.ComponentModel;
 using System.Diagnostics.CodeAnalysis;
-using System.Text.RegularExpressions;
 
 namespace Tizen.NUI
 {
@@ -2039,6 +2038,11 @@ namespace Tizen.NUI
         /// InputFilter filters input based on regular expressions. <br />
         /// Users can set the Accepted or Rejected regular expression set, or both. <br />
         /// If both are used, Rejected has higher priority. <br />
+        /// The character set must follow the regular expression rules. <br />
+        /// Behaviour can not be guaranteed for incorrect grammars. <br />
+        /// Refer the link below for detailed rules. <br />
+        /// The functions in std::regex library use the ECMAScript grammar: <br />
+        /// http://cplusplus.com/reference/regex/ECMAScript/ <br />
         /// The InputFilter struct is used as an argument to SetInputFilter and GetInputFilter methods. <br />
         /// See <see cref="Tizen.NUI.BaseComponents.TextField.SetInputFilter"/>, <see cref="Tizen.NUI.BaseComponents.TextField.GetInputFilter"/>, <see cref="Tizen.NUI.BaseComponents.TextEditor.SetInputFilter"/> and <see cref="Tizen.NUI.BaseComponents.TextEditor.GetInputFilter"/>. <br />
         /// </remarks>
@@ -2049,13 +2053,13 @@ namespace Tizen.NUI
             /// A regular expression in the set of characters to be accepted by the inputFilter.
             /// </summary>
             [EditorBrowsable(EditorBrowsableState.Never)]
-            public Regex Accepted { get; set; }
+            public string Accepted { get; set; }
 
             /// <summary>
             /// A regular expression in the set of characters to be rejected by the inputFilter.
             /// </summary>
             [EditorBrowsable(EditorBrowsableState.Never)]
-            public Regex Rejected { get; set; }
+            public string Rejected { get; set; }
         }
 
         /// <summary>