diff options
author | Mikhail Melnikov <mikhail_melnikov@epam.com> | 2017-11-30 15:02:24 +0300 |
---|---|---|
committer | Joel Martinez <joelmartinez@gmail.com> | 2017-11-30 18:51:54 +0300 |
commit | f8cdfc060fc8df64af4fb7f131ea8c0627d48258 (patch) | |
tree | 36bc4370f3a136a2aacff2c7fe9988ea911795a6 /mdoc/Mono.Documentation/Updater/DocUtils.cs | |
parent | b070267b5cf3986cdd79f52244a15412d0cbf70a (diff) |
mdoc: Support for F# signatures
Added F# signatures and usage formatter
Added unit and integration tests
Closes #108
Diffstat (limited to 'mdoc/Mono.Documentation/Updater/DocUtils.cs')
-rw-r--r-- | mdoc/Mono.Documentation/Updater/DocUtils.cs | 91 |
1 files changed, 62 insertions, 29 deletions
diff --git a/mdoc/Mono.Documentation/Updater/DocUtils.cs b/mdoc/Mono.Documentation/Updater/DocUtils.cs index 32ae5e3b..b31f6851 100644 --- a/mdoc/Mono.Documentation/Updater/DocUtils.cs +++ b/mdoc/Mono.Documentation/Updater/DocUtils.cs @@ -294,35 +294,68 @@ namespace Mono.Documentation.Updater return inheritedInterfaces;
}
- public static void AppendFieldValue(StringBuilder buf, FieldDefinition field) - { - // enums have a value__ field, which we ignore - if (((TypeDefinition)field.DeclaringType).IsEnum || - field.DeclaringType.IsGenericType()) - return; - if (field.HasConstant && field.IsLiteral) - { - object val = null; - try - { - val = field.Constant; - } - catch - { - return; - } - if (val == null) - buf.Append(" = ").Append("null"); - else if (val is Enum) - buf.Append(" = ").Append(val.ToString()); - else if (val is IFormattable) - { - string value = ((IFormattable)val).ToString(null, CultureInfo.InvariantCulture); - if (val is string) - value = "\"" + value + "\""; - buf.Append(" = ").Append(value); - } - } + public static void AppendFieldValue(StringBuilder buf, FieldDefinition field)
+ {
+ // enums have a value__ field, which we ignore
+ if (((TypeDefinition)field.DeclaringType).IsEnum ||
+ field.DeclaringType.IsGenericType())
+ return;
+ if (field.HasConstant && field.IsLiteral)
+ {
+ object val = null;
+ try
+ {
+ val = field.Constant;
+ }
+ catch
+ {
+ return;
+ }
+ if (val == null)
+ buf.Append(" = ").Append("null");
+ else if (val is Enum)
+ buf.Append(" = ").Append(val.ToString());
+ else if (val is IFormattable)
+ {
+ string value = ((IFormattable)val).ToString(null, CultureInfo.InvariantCulture);
+ if (val is string)
+ value = "\"" + value + "\"";
+ buf.Append(" = ").Append(value);
+ }
+ }
+ }
+
+ /// <summary>
+ /// XPath is invalid if it containt '-symbol inside '...'.
+ /// So, put string which contains '-symbol inside "...", and vice versa
+ /// </summary>
+ public static string GetStringForXPath(string input)
+ {
+ if (!input.Contains("'"))
+ return $"\'{input}\'";
+ if (!input.Contains("\""))
+ return $"\"{input}\"";
+ return input;
+ }
+
+ /// <summary>
+ /// No documentation for property/event accessors.
+ /// </summary>
+ public static bool IsIgnored(MemberReference mi)
+ {
+ if (mi.Name.StartsWith("get_", StringComparison.Ordinal)) return true;
+ if (mi.Name.StartsWith("set_", StringComparison.Ordinal)) return true;
+ if (mi.Name.StartsWith("add_", StringComparison.Ordinal)) return true;
+ if (mi.Name.StartsWith("remove_", StringComparison.Ordinal)) return true;
+ if (mi.Name.StartsWith("raise_", StringComparison.Ordinal)) return true;
+ return false;
+ }
+
+ public static bool IsAvailablePropertyMethod(MethodDefinition method)
+ {
+ return method != null
+ && (IsExplicitlyImplemented(method)
+ || (!method.IsPrivate && !method.IsAssembly && !method.IsFamilyAndAssembly));
}
}
}
\ No newline at end of file |