89 lines
3.7 KiB
C#
89 lines
3.7 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|
|
|
namespace Microsoft.AspNetCore.Razor.Language.Extensions
|
|
{
|
|
internal class MetadataAttributeTargetExtension : IMetadataAttributeTargetExtension
|
|
{
|
|
public string CompiledItemAttributeName { get; set; } = "global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute";
|
|
|
|
public string SourceChecksumAttributeName { get; set; } = "global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute";
|
|
|
|
public string CompiledItemMetadataAttributeName { get; set; } = "global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute";
|
|
|
|
|
|
public void WriteRazorCompiledItemAttribute(CodeRenderingContext context, RazorCompiledItemAttributeIntermediateNode node)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (node == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(node));
|
|
}
|
|
|
|
// [assembly: global::...RazorCompiledItem(typeof({node.TypeName}), @"{node.Kind}", @"{node.Identifier}")]
|
|
context.CodeWriter.Write("[assembly: ");
|
|
context.CodeWriter.Write(CompiledItemAttributeName);
|
|
context.CodeWriter.Write("(typeof(");
|
|
context.CodeWriter.Write(node.TypeName);
|
|
context.CodeWriter.Write("), @\"");
|
|
context.CodeWriter.Write(node.Kind);
|
|
context.CodeWriter.Write("\", @\"");
|
|
context.CodeWriter.Write(node.Identifier);
|
|
context.CodeWriter.WriteLine("\")]");
|
|
}
|
|
|
|
public void WriteRazorCompiledItemMetadataAttribute(CodeRenderingContext context, RazorCompiledItemMetadataAttributeIntermediateNode node)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (node == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(node));
|
|
}
|
|
|
|
// [assembly: global::...RazorCompiledItemAttribute(@"{node.Key}", @"{node.Value}")]
|
|
context.CodeWriter.Write("[");
|
|
context.CodeWriter.Write(CompiledItemMetadataAttributeName);
|
|
context.CodeWriter.Write("(");
|
|
context.CodeWriter.WriteStringLiteral(node.Key);
|
|
context.CodeWriter.Write(", ");
|
|
context.CodeWriter.WriteStringLiteral(node.Value);
|
|
context.CodeWriter.WriteLine(")]");
|
|
}
|
|
|
|
public void WriteRazorSourceChecksumAttribute(CodeRenderingContext context, RazorSourceChecksumAttributeIntermediateNode node)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (node == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(node));
|
|
}
|
|
|
|
// [global::...RazorSourceChecksum(@"{node.ChecksumAlgorithm}", @"{node.Checksum}", @"{node.Identifier}")]
|
|
context.CodeWriter.Write("[");
|
|
context.CodeWriter.Write(SourceChecksumAttributeName);
|
|
context.CodeWriter.Write("(@\"");
|
|
context.CodeWriter.Write(node.ChecksumAlgorithm);
|
|
context.CodeWriter.Write("\", @\"");
|
|
context.CodeWriter.Write(Checksum.BytesToString(node.Checksum));
|
|
context.CodeWriter.Write("\", @\"");
|
|
context.CodeWriter.Write(node.Identifier);
|
|
context.CodeWriter.WriteLine("\")]");
|
|
}
|
|
}
|
|
}
|