#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;
}
}
}