#region MigraDoc - Creating Documents on the Fly // // Authors: // Klaus Potzesny // // Copyright (c) 2001-2017 empira Software GmbH, Cologne Area (Germany) // // http://www.pdfsharp.com // http://www.migradoc.com // http://sourceforge.net/projects/pdfsharp // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #endregion using System; using System.Resources; using System.Reflection; #if DEBUG using System.Text.RegularExpressions; #endif namespace MigraDoc.Rendering.Resources { /// /// Provides diagnostic messages taken from the resources. /// public static class Messages2 { public static string NumberTooLargeForRoman(int number) { return FormatMessage(IDs.NumberTooLargeForRoman, number); } public static string NumberTooLargeForLetters(int number) { return FormatMessage(IDs.NumberTooLargeForLetters, number); } public static string DisplayEmptyImageSize { get { return FormatMessage(IDs.DisplayEmptyImageSize); } } public static string DisplayImageFileNotFound { get { return FormatMessage(IDs.DisplayImageFileNotFound); } } public static string DisplayInvalidImageType { get { return FormatMessage(IDs.DisplayInvalidImageType); } } public static string DisplayImageNotRead { get { return FormatMessage(IDs.DisplayImageNotRead); } } public static string PropertyNotSetBefore(string propertyName, string functionName) { return FormatMessage(IDs.PropertyNotSetBefore, propertyName, functionName); } public static string BookmarkNotDefined(string bookmarkName) { return FormatMessage(IDs.BookmarkNotDefined, bookmarkName); } public static string ImageNotFound(string imageName) { return FormatMessage(IDs.ImageNotFound, imageName); } public static string InvalidImageType(string type) { return FormatMessage(IDs.InvalidImageType, type); } public static string ImageNotReadable(string imageName, string innerException) { return FormatMessage(IDs.ImageNotReadable, imageName, innerException); } public static string EmptyImageSize { get { return FormatMessage(IDs.EmptyImageSize); } } public static string ObjectNotRenderable { get { return FormatMessage(IDs.ObjectNotRenderable); } } // ReSharper disable InconsistentNaming private enum IDs { PropertyNotSetBefore, BookmarkNotDefined, ImageNotFound, InvalidImageType, ImageNotReadable, EmptyImageSize, ObjectNotRenderable, NumberTooLargeForRoman, NumberTooLargeForLetters, DisplayEmptyImageSize, DisplayImageFileNotFound, DisplayInvalidImageType, DisplayImageNotRead } // ReSharper restore InconsistentNaming private static ResourceManager ResourceManager { // ReSharper disable ConvertIfStatementToNullCoalescingExpression get { if (_resourceManager == null) { #if !NETFX_CORE _resourceManager = new ResourceManager("MigraDoc.Rendering.Resources.Messages", Assembly.GetExecutingAssembly()); #else _resourceManager = new ResourceManager("MigraDoc.Rendering.Resources.Messages", typeof(Messages2).GetTypeInfo().Assembly); #endif } return _resourceManager; } // ReSharper restore ConvertIfStatementToNullCoalescingExpression } private static ResourceManager _resourceManager; private static string FormatMessage(IDs id, params object[] args) { string message; try { message = ResourceManager.GetString(id.ToString()); if (message != null) { #if DEBUG if (Regex.Matches(message, @"\{[0-9]\}").Count > args.Length) { //TODO too many placeholders or too few args... } #endif message = String.Format(message, args); } else message = "<<>>"; return message; } catch (Exception ex) { message = "public ERROR while formatting error message: " + ex; } return message; } } }