-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAttributes.cs
More file actions
132 lines (122 loc) · 3.04 KB
/
Attributes.cs
File metadata and controls
132 lines (122 loc) · 3.04 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
namespace CSharpToJavaScript.Utils;
/// <summary>
///
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
internal class IgnoreAttribute : Attribute
{
public IgnoreAttribute() { }
}
/// <summary>
/// Translates class/method to a specified value.
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class ValueAttribute : Attribute
{
public string Value { get; init; }
public ValueAttribute(string value)
{
Value = value;
}
}
/// <summary>
/// Changes class/method based on options.
/// </summary>
/// <remarks>
/// Default: do nothing.<br />
/// ToLower: convert to lowercase.<br />
/// FirstCharToLowerCase: convert the first char to lowercase.<br />
/// None: convert to empty.<br />
/// NoneWithLeadingDotRemoved: convert to empty with the leading dot removed.<br />
/// NoneWithTrailingDotRemoved: convert to empty with the trailing dot removed.<br />
/// </remarks>
[AttributeUsage(AttributeTargets.All)]
public class ToAttribute : Attribute
{
public const string None = "None";
public const string NoneWithLeadingDotRemoved = "NoneWithLeadingDotRemoved";
public const string NoneWithTrailingDotRemoved = "NoneWithTrailingDotRemoved";
public const string Default = "Default";
public const string ToLower = "ToLower";
public const string FirstCharToLowerCase = "FirstCharToLowerCase";
public string To { get; init; } = string.Empty;
public ToAttribute(string to)
{
To = to;
}
public string Convert(string str)
{
switch (To)
{
case ToLower:
return str.ToLower();
case FirstCharToLowerCase:
return str.FirstCharToLowerCase();
case NoneWithLeadingDotRemoved:
case NoneWithTrailingDotRemoved:
case None:
return "";
case Default:
default:
return str;
}
}
}
/// <summary>
/// Translates a method into a binary operator.
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class BinaryAttribute : Attribute
{
public string Value { get; init; }
public BinaryAttribute(string value)
{
Value = value;
}
}
/// <summary>
/// Translates a method into a binary operator. Generic as a second argument.
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class GenericBinaryAttribute : Attribute
{
public string Value { get; init; }
public GenericBinaryAttribute(string value)
{
Value = value;
}
}
/// <summary>
/// Translates a method into an unary operator.
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class UnaryAttribute : Attribute
{
public string Value { get; init; }
public UnaryAttribute(string value)
{
Value = value;
}
}
/// <summary>
/// Translates a method into an unary operator. Generic as an argument
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class GenericUnaryAttribute : Attribute
{
public string Value { get; init; }
public GenericUnaryAttribute(string value)
{
Value = value;
}
}
/// <summary>
/// Translates a class into a JS object.
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class ToObjectAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Method)]
public class GenericAsArgument : Attribute { }