ComparisonUnitWord.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright (c) Microsoft. All rights reserved.
  2. // Licensed under the MIT license. See LICENSE file in the project root for full license information.
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Xml.Linq;
  8. namespace OpenXmlPowerTools
  9. {
  10. internal class ComparisonUnitWord : ComparisonUnit
  11. {
  12. public static readonly XName[] ElementsWithRelationshipIds =
  13. {
  14. A.blip,
  15. A.hlinkClick,
  16. A.relIds,
  17. C.chart,
  18. C.externalData,
  19. C.userShapes,
  20. DGM.relIds,
  21. O.OLEObject,
  22. VML.fill,
  23. VML.imagedata,
  24. VML.stroke,
  25. W.altChunk,
  26. W.attachedTemplate,
  27. W.control,
  28. W.dataSource,
  29. W.embedBold,
  30. W.embedBoldItalic,
  31. W.embedItalic,
  32. W.embedRegular,
  33. W.footerReference,
  34. W.headerReference,
  35. W.headerSource,
  36. W.hyperlink,
  37. W.printerSettings,
  38. W.recipientData,
  39. W.saveThroughXslt,
  40. W.sourceFileName,
  41. W.src,
  42. W.subDoc,
  43. WNE.toolbarData
  44. };
  45. public static readonly XName[] RelationshipAttributeNames =
  46. {
  47. R.embed,
  48. R.link,
  49. R.id,
  50. R.cs,
  51. R.dm,
  52. R.lo,
  53. R.qs,
  54. R.href,
  55. R.pict
  56. };
  57. public ComparisonUnitWord(IEnumerable<ComparisonUnitAtom> comparisonUnitAtomList)
  58. {
  59. Contents = comparisonUnitAtomList.OfType<ComparisonUnit>().ToList();
  60. string sha1String = Contents.Select(c => c.SHA1Hash).StringConcatenate();
  61. SHA1Hash = WmlComparerUtil.SHA1HashStringForUTF8String(sha1String);
  62. }
  63. public override string ToString(int indent)
  64. {
  65. var sb = new StringBuilder();
  66. sb.Append("".PadRight(indent) + "Word SHA1:" + SHA1Hash.Substring(0, 8) + Environment.NewLine);
  67. foreach (ComparisonUnit comparisonUnitAtom in Contents)
  68. {
  69. sb.Append(comparisonUnitAtom.ToString(indent + 2) + Environment.NewLine);
  70. }
  71. return sb.ToString();
  72. }
  73. }
  74. }