forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoveLineHiddenPragmas.cs
More file actions
34 lines (31 loc) · 1.29 KB
/
Copy pathRemoveLineHiddenPragmas.cs
File metadata and controls
34 lines (31 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Linq;
namespace ServiceStack.Razor.Compilation.CodeTransformers
{
public class RemoveLineHiddenPragmas : RazorCodeTransformerBase
{
private const string LinePragmaText = "#line hidden";
public override void ProcessGeneratedCode(CodeCompileUnit codeCompileUnit, CodeNamespace generatedNamespace, CodeTypeDeclaration generatedClass, CodeMemberMethod executeMethod)
{
var linePragmaStatements = new List<CodeSnippetTypeMember>();
foreach (var member in generatedClass.Members.OfType<CodeSnippetTypeMember>())
{
if (member.Text.TrimEnd().Equals(LinePragmaText, StringComparison.OrdinalIgnoreCase))
{
// If the snippet is entirely a line pragma, mark it for removal.
linePragmaStatements.Add(member);
}
if (member.Text.StartsWith(LinePragmaText, StringComparison.OrdinalIgnoreCase))
{
member.Text = member.Text.Substring(LinePragmaText.Length);
}
}
foreach (var item in linePragmaStatements)
{
generatedClass.Members.Remove(item);
}
}
}
}