using System;
using System.ComponentModel;
public class Program {
public static void Main() => Console.WriteLine(BBCodes.Bold.Wrap("StackOverflow"));
}
public enum BBCodes {
[Description("b")]
Bold = 1,
[Description("i")]
Italic = 2
}
public static class BBCodesExt {
public static string Wrap(this BBCodes code, string contents) => $"[{code.ToStringDescription()}]{contents}[/{code.ToStringDescription()}]";
public static string ToStringDescription(this BBCodes code) {
var attributes = (DescriptionAttribute[])code.GetType().GetField(code.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : "";
}
}
//https://pt.stackoverflow.com/q/123841/101
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29tcG9uZW50TW9kZWw7CgkJCQkJCnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgPT4gQ29uc29sZS5Xcml0ZUxpbmUoQkJDb2Rlcy5Cb2xkLldyYXAoIlN0YWNrT3ZlcmZsb3ciKSk7Cn0KCnB1YmxpYyBlbnVtIEJCQ29kZXMgewoJW0Rlc2NyaXB0aW9uKCJiIildCglCb2xkID0gMSwKCVtEZXNjcmlwdGlvbigiaSIpXQoJSXRhbGljID0gMgp9CgpwdWJsaWMgc3RhdGljIGNsYXNzIEJCQ29kZXNFeHQgewoJcHVibGljIHN0YXRpYyBzdHJpbmcgV3JhcCh0aGlzIEJCQ29kZXMgY29kZSwgc3RyaW5nIGNvbnRlbnRzKSA9PiAkIlt7Y29kZS5Ub1N0cmluZ0Rlc2NyaXB0aW9uKCl9XXtjb250ZW50c31bL3tjb2RlLlRvU3RyaW5nRGVzY3JpcHRpb24oKX1dIjsKCXB1YmxpYyBzdGF0aWMgc3RyaW5nIFRvU3RyaW5nRGVzY3JpcHRpb24odGhpcyBCQkNvZGVzIGNvZGUpIHsKCQl2YXIgYXR0cmlidXRlcyA9IChEZXNjcmlwdGlvbkF0dHJpYnV0ZVtdKWNvZGUuR2V0VHlwZSgpLkdldEZpZWxkKGNvZGUuVG9TdHJpbmcoKSkuR2V0Q3VzdG9tQXR0cmlidXRlcyh0eXBlb2YoRGVzY3JpcHRpb25BdHRyaWJ1dGUpLCBmYWxzZSk7CgkJcmV0dXJuIGF0dHJpYnV0ZXMuTGVuZ3RoID4gMCA/IGF0dHJpYnV0ZXNbMF0uRGVzY3JpcHRpb24gOiAiIjsKCX0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvMTIzODQxLzEwMQ==