1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // Copyright (c) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
- using System;
- using System.Security.Cryptography;
- using System.Text;
- namespace OpenXmlPowerTools
- {
- internal static class WmlComparerUtil
- {
- public static string SHA1HashStringForUTF8String(string s)
- {
- var bytes = Encoding.UTF8.GetBytes(s);
- var sha1 = SHA1.Create();
- var hashBytes = sha1.ComputeHash(bytes);
- return HexStringFromBytes(hashBytes);
- }
- public static string SHA1HashStringForByteArray(byte[] bytes)
- {
- var sha1 = SHA1.Create();
- var hashBytes = sha1.ComputeHash(bytes);
- return HexStringFromBytes(hashBytes);
- }
- public static string HexStringFromBytes(byte[] bytes)
- {
- var sb = new StringBuilder();
- foreach (var b in bytes)
- {
- var hex = b.ToString("x2");
- sb.Append(hex);
- }
- return sb.ToString();
- }
- public static ComparisonUnitGroupType ComparisonUnitGroupTypeFromLocalName(string localName)
- {
- switch (localName)
- {
- case "p":
- return ComparisonUnitGroupType.Paragraph;
- case "tbl":
- return ComparisonUnitGroupType.Table;
- case "tr":
- return ComparisonUnitGroupType.Row;
- case "tc":
- return ComparisonUnitGroupType.Cell;
- case "txbxContent":
- return ComparisonUnitGroupType.Textbox;
- default:
- throw new ArgumentOutOfRangeException(nameof(localName),
- $@"Unsupported localName: '{localName}'.");
- }
- }
- }
- }
|