178 lines
8.8 KiB
C#
178 lines
8.8 KiB
C#
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Globalization;
|
|
using Microsoft.Internal.Web.Utils;
|
|
|
|
namespace Microsoft.AspNet.Razor.Generator
|
|
{
|
|
public struct GeneratedClassContext
|
|
{
|
|
public static readonly string DefaultWriteMethodName = "Write";
|
|
public static readonly string DefaultWriteLiteralMethodName = "WriteLiteral";
|
|
public static readonly string DefaultExecuteMethodName = "ExecuteAsync";
|
|
public static readonly string DefaultLayoutPropertyName = "Layout";
|
|
public static readonly string DefaultWriteAttributeMethodName = "WriteAttribute";
|
|
public static readonly string DefaultWriteAttributeToMethodName = "WriteAttributeTo";
|
|
|
|
public static readonly GeneratedClassContext Default = new GeneratedClassContext(DefaultExecuteMethodName,
|
|
DefaultWriteMethodName,
|
|
DefaultWriteLiteralMethodName);
|
|
|
|
public GeneratedClassContext(string executeMethodName, string writeMethodName, string writeLiteralMethodName)
|
|
: this()
|
|
{
|
|
if (String.IsNullOrEmpty(executeMethodName))
|
|
{
|
|
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture,
|
|
CommonResources.Argument_Cannot_Be_Null_Or_Empty,
|
|
"executeMethodName"),
|
|
"executeMethodName");
|
|
}
|
|
if (String.IsNullOrEmpty(writeMethodName))
|
|
{
|
|
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture,
|
|
CommonResources.Argument_Cannot_Be_Null_Or_Empty,
|
|
"writeMethodName"),
|
|
"writeMethodName");
|
|
}
|
|
if (String.IsNullOrEmpty(writeLiteralMethodName))
|
|
{
|
|
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture,
|
|
CommonResources.Argument_Cannot_Be_Null_Or_Empty,
|
|
"writeLiteralMethodName"),
|
|
"writeLiteralMethodName");
|
|
}
|
|
|
|
WriteMethodName = writeMethodName;
|
|
WriteLiteralMethodName = writeLiteralMethodName;
|
|
ExecuteMethodName = executeMethodName;
|
|
|
|
WriteToMethodName = null;
|
|
WriteLiteralToMethodName = null;
|
|
TemplateTypeName = null;
|
|
DefineSectionMethodName = null;
|
|
|
|
LayoutPropertyName = DefaultLayoutPropertyName;
|
|
WriteAttributeMethodName = DefaultWriteAttributeMethodName;
|
|
WriteAttributeToMethodName = DefaultWriteAttributeToMethodName;
|
|
}
|
|
|
|
public GeneratedClassContext(string executeMethodName,
|
|
string writeMethodName,
|
|
string writeLiteralMethodName,
|
|
string writeToMethodName,
|
|
string writeLiteralToMethodName,
|
|
string templateTypeName)
|
|
: this(executeMethodName, writeMethodName, writeLiteralMethodName)
|
|
{
|
|
WriteToMethodName = writeToMethodName;
|
|
WriteLiteralToMethodName = writeLiteralToMethodName;
|
|
TemplateTypeName = templateTypeName;
|
|
}
|
|
|
|
public GeneratedClassContext(string executeMethodName,
|
|
string writeMethodName,
|
|
string writeLiteralMethodName,
|
|
string writeToMethodName,
|
|
string writeLiteralToMethodName,
|
|
string templateTypeName,
|
|
string defineSectionMethodName)
|
|
: this(executeMethodName, writeMethodName, writeLiteralMethodName, writeToMethodName, writeLiteralToMethodName, templateTypeName)
|
|
{
|
|
DefineSectionMethodName = defineSectionMethodName;
|
|
}
|
|
|
|
public GeneratedClassContext(string executeMethodName,
|
|
string writeMethodName,
|
|
string writeLiteralMethodName,
|
|
string writeToMethodName,
|
|
string writeLiteralToMethodName,
|
|
string templateTypeName,
|
|
string defineSectionMethodName,
|
|
string beginContextMethodName,
|
|
string endContextMethodName)
|
|
: this(executeMethodName, writeMethodName, writeLiteralMethodName, writeToMethodName, writeLiteralToMethodName, templateTypeName, defineSectionMethodName)
|
|
{
|
|
BeginContextMethodName = beginContextMethodName;
|
|
EndContextMethodName = endContextMethodName;
|
|
}
|
|
|
|
public string WriteMethodName { get; private set; }
|
|
public string WriteLiteralMethodName { get; private set; }
|
|
public string WriteToMethodName { get; private set; }
|
|
public string WriteLiteralToMethodName { get; private set; }
|
|
public string ExecuteMethodName { get; private set; }
|
|
|
|
// Optional Items
|
|
public string BeginContextMethodName { get; set; }
|
|
public string EndContextMethodName { get; set; }
|
|
public string LayoutPropertyName { get; set; }
|
|
public string DefineSectionMethodName { get; set; }
|
|
public string TemplateTypeName { get; set; }
|
|
public string WriteAttributeMethodName { get; set; }
|
|
public string WriteAttributeToMethodName { get; set; }
|
|
|
|
[SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Property is not a URL property")]
|
|
public string ResolveUrlMethodName { get; set; }
|
|
|
|
public bool AllowSections
|
|
{
|
|
get { return !String.IsNullOrEmpty(DefineSectionMethodName); }
|
|
}
|
|
|
|
public bool AllowTemplates
|
|
{
|
|
get { return !String.IsNullOrEmpty(TemplateTypeName); }
|
|
}
|
|
|
|
public bool SupportsInstrumentation
|
|
{
|
|
get { return !String.IsNullOrEmpty(BeginContextMethodName) && !String.IsNullOrEmpty(EndContextMethodName); }
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (!(obj is GeneratedClassContext))
|
|
{
|
|
return false;
|
|
}
|
|
GeneratedClassContext other = (GeneratedClassContext)obj;
|
|
return String.Equals(DefineSectionMethodName, other.DefineSectionMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(WriteMethodName, other.WriteMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(WriteLiteralMethodName, other.WriteLiteralMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(WriteToMethodName, other.WriteToMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(WriteLiteralToMethodName, other.WriteLiteralToMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(ExecuteMethodName, other.ExecuteMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(TemplateTypeName, other.TemplateTypeName, StringComparison.Ordinal) &&
|
|
String.Equals(BeginContextMethodName, other.BeginContextMethodName, StringComparison.Ordinal) &&
|
|
String.Equals(EndContextMethodName, other.EndContextMethodName, StringComparison.Ordinal);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
// TODO: Use HashCodeCombiner
|
|
return DefineSectionMethodName.GetHashCode() ^
|
|
WriteMethodName.GetHashCode() ^
|
|
WriteLiteralMethodName.GetHashCode() ^
|
|
WriteToMethodName.GetHashCode() ^
|
|
WriteLiteralToMethodName.GetHashCode() ^
|
|
ExecuteMethodName.GetHashCode() ^
|
|
TemplateTypeName.GetHashCode() ^
|
|
BeginContextMethodName.GetHashCode() ^
|
|
EndContextMethodName.GetHashCode();
|
|
}
|
|
|
|
public static bool operator ==(GeneratedClassContext left, GeneratedClassContext right)
|
|
{
|
|
return left.Equals(right);
|
|
}
|
|
|
|
public static bool operator !=(GeneratedClassContext left, GeneratedClassContext right)
|
|
{
|
|
return !left.Equals(right);
|
|
}
|
|
}
|
|
}
|