[corlib] Update ValueTuple implementation
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Presentation / System / Activities / Presentation / Base / Core / Internal / PropertyEditing / State / PersistedStateUtilities.cs
1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //----------------------------------------------------------------
4 namespace System.Activities.Presentation.Internal.PropertyEditing.State 
5 {
6
7     // <summary>
8     // A set of utility methods we use to persist state
9     // </summary>
10     internal static class PersistedStateUtilities 
11     {
12
13         // <summary>
14         // Escapes '&,;.' characters
15         // </summary>
16         // <param name="s">String to escape</param>
17         // <returns>Escaped string</returns>
18         public static string Escape(string s) 
19         {
20             if (string.IsNullOrEmpty(s))
21             {
22                 return null;
23             }
24
25             s = s.Replace("&", "&&");
26             s = s.Replace(",", "&comma&");
27             s = s.Replace(";", "&semicolon&");
28             s = s.Replace(".", "&dot&");
29             return s;
30         }
31
32         // <summary>
33         // Unescapes '&;,.' characters
34         // </summary>
35         // <param name="s">Escaped string</param>
36         // <returns>Unescaped string</returns>
37         public static string Unescape(string s) 
38         {
39             if (string.IsNullOrEmpty(s))
40             {
41                 return null;
42             }
43
44             s = s.Replace("&comma&", ",");
45             s = s.Replace("&semicolon&", ";");
46             s = s.Replace("&dot&", ".");
47             s = s.Replace("&&", "&");
48             return s;
49         }
50
51         // <summary>
52         // Converts 0 -> false, 1 -> true, anything else -> null
53         // </summary>
54         // <param name="digit">digit to convert</param>
55         // <returns>True/False/Null</returns>
56         public static bool? DigitToBool(string digit) 
57         {
58             return "0".Equals(digit) ? false : ("1".Equals(digit) ? true : (bool?)null);
59         }
60
61         // <summary>
62         // Converts true -> 1, false -> 0
63         // </summary>
64         // <param name="value">Value to convert</param>
65         // <returns>Bool as a digit string</returns>
66         public static string BoolToDigit(bool value) 
67         {
68             return value ? "1" : "0";
69         }
70     }
71 }