#region License Statement
// Copyright (c) L.A.B.Soft. All rights reserved.
//
// The use and distribution terms for this software are covered by the
// Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
// which can be found in the file CPL.TXT at the root of this distribution.
// By using this software in any fashion, you are agreeing to be bound by
// the terms of this license.
//
// You must not remove this notice, or any other, from this software.
#endregion
#region Using Statements
using System.Collections.Generic;
#endregion
namespace Textile
{
///
/// A utility class for global things used by the TextileFormatter.
///
class Globals
{
#region Global Regex Patterns
public const string HorizontalAlignPattern = @"(?:[()]*(\<(?!>)|(?|\<\>|=)[()]*)";
public const string VerticalAlignPattern = @"[\-^~]";
public const string CssClassPattern = @"(?:\([^)]+\))";
public const string LanguagePattern = @"(?:\[[^]]+\])";
public const string CssStylePattern = @"(?:\{[^}]+\})";
public const string ColumnSpanPattern = @"(?:\\\d+)";
public const string RowSpanPattern = @"(?:/\d+)";
public const string AlignPattern = "(?" + HorizontalAlignPattern + "?" + VerticalAlignPattern + "?|" + VerticalAlignPattern + "?" + HorizontalAlignPattern + "?)";
public const string SpanPattern = @"(?" + ColumnSpanPattern + "?" + RowSpanPattern + "?|" + RowSpanPattern + "?" + ColumnSpanPattern + "?)";
public const string BlockModifiersPattern = @"(?" + CssClassPattern + "?" + CssStylePattern + "?" + LanguagePattern + "?|" +
CssStylePattern + "?" + LanguagePattern + "?" + CssClassPattern + "?|" +
LanguagePattern + "?" + CssStylePattern + "?" + CssClassPattern + "?)";
public const string PunctuationPattern = @"[\!""#\$%&'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{}~]";
public const string HtmlAttributesPattern = @"(\s+\w+=((""[^""]+"")|('[^']+')))*";
#endregion
private static Dictionary m_imageAlign;
///
/// Image alignment tags, mapped to their HTML meanings.
///
public static Dictionary ImageAlign
{
get { return Globals.m_imageAlign; }
set { Globals.m_imageAlign = value; }
}
private static Dictionary m_horizontalAlign;
///
/// Horizontal text alignment tags, mapped to their HTML meanings.
///
public static Dictionary HorizontalAlign
{
get { return Globals.m_horizontalAlign; }
set { Globals.m_horizontalAlign = value; }
}
private static Dictionary m_verticalAlign;
///
/// Vertical text alignment tags, mapped to their HTML meanings.
///
public static Dictionary VerticalAlign
{
get { return Globals.m_verticalAlign; }
set { Globals.m_verticalAlign = value; }
}
static Globals()
{
m_imageAlign = new Dictionary
{
["<"] = "left",
["="] = "center",
[">"] = "right"
};
m_horizontalAlign = new Dictionary
{
["<"] = "left",
["="] = "center",
[">"] = "right",
["<>"] = "justify"
};
m_verticalAlign = new Dictionary
{
["^"] = "top",
["-"] = "middle",
["~"] = "bottom"
};
}
public static string EncodeHTMLLink(string url)
{
url = url.Replace("&", "&");
url = System.Text.RegularExpressions.Regex.Replace(url, "&(?=[^#])", "&");
return url;
}
}
}