4
// Mike Krüger <mkrueger@novell.com>
6
// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
8
// Permission is hereby granted, free of charge, to any person obtaining a copy
9
// of this software and associated documentation files (the "Software"), to deal
10
// in the Software without restriction, including without limitation the rights
11
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
// copies of the Software, and to permit persons to whom the Software is
13
// furnished to do so, subject to the following conditions:
15
// The above copyright notice and this permission notice shall be included in
16
// all copies or substantial portions of the Software.
18
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29
using MonoDevelop.Projects.Policies;
30
using System.Collections.Generic;
32
namespace MonoDevelop.Projects.Dom.Output
34
public class OutputSettings
36
public OutputFlags OutputFlags {
41
public PolicyContainer PolicyParent {
46
public OutputSettings (OutputFlags outputFlags)
48
this.OutputFlags = outputFlags;
51
public string Markup (string text)
53
if (MarkupCallback != null)
54
return MarkupCallback (text);
55
return IncludeMarkup ? PangoFormat (text) : text;
58
public string EmitName (INode domVisitable, string text)
60
if (EmitNameCallback != null) {
61
EmitNameCallback (domVisitable, ref text);
67
public string EmitModifiers (string text)
69
if (!IncludeModifiers)
71
if (EmitModifiersCallback != null)
72
return EmitModifiersCallback (text) + " ";
74
return "<b>" + PangoFormat (text) + "</b> ";
78
public string EmitKeyword (string text)
80
if (EmitKeywordCallback != null)
81
return EmitKeywordCallback (text) + " ";
85
return "<b>" + PangoFormat (text) + "</b> ";
89
public string Highlight (string text)
91
if (HighlightCallback != null)
92
return HighlightCallback (text);
94
return "<b>" + PangoFormat (text) + "</b>";
98
public void PostProcess (INode domVisitable, ref string outString)
100
if (PostProcessCallback != null)
101
PostProcessCallback (domVisitable, ref outString);
104
static string PangoFormat (string input)
106
StringBuilder result = new StringBuilder ();
107
foreach (char ch in input) {
110
result.Append ("<");
113
result.Append (">");
116
result.Append ("&");
123
return result.ToString ();
126
public bool IncludeMarkup {
128
return (OutputFlags & OutputFlags.IncludeMarkup) == OutputFlags.IncludeMarkup;
132
public bool IncludeKeywords {
134
return (OutputFlags & OutputFlags.IncludeKeywords) == OutputFlags.IncludeKeywords;
138
public bool IncludeModifiers {
140
return (OutputFlags & OutputFlags.IncludeModifiers) == OutputFlags.IncludeModifiers;
144
public bool UseFullName {
146
return (OutputFlags & OutputFlags.UseFullName) == OutputFlags.UseFullName;
150
public bool UseFullInnerTypeName {
152
return (OutputFlags & OutputFlags.UseFullInnerTypeName) == OutputFlags.UseFullInnerTypeName;
158
public bool IncludeParameters {
160
return (OutputFlags & OutputFlags.IncludeParameters) == OutputFlags.IncludeParameters;
164
public bool IncludeReturnType {
166
return (OutputFlags & OutputFlags.IncludeReturnType) == OutputFlags.IncludeReturnType;
170
public bool IncludeParameterName {
172
return (OutputFlags & OutputFlags.IncludeParameterName) == OutputFlags.IncludeParameterName;
176
public bool IncludeBaseTypes {
178
return (OutputFlags & OutputFlags.IncludeBaseTypes) == OutputFlags.IncludeBaseTypes;
182
public bool IncludeGenerics {
184
return (OutputFlags & OutputFlags.IncludeGenerics) == OutputFlags.IncludeGenerics;
188
public bool HideArrayBrackets {
190
return (OutputFlags & OutputFlags.HideArrayBrackets) == OutputFlags.HideArrayBrackets;
194
public bool HighlightName {
196
return (OutputFlags & OutputFlags.HighlightName) == OutputFlags.HighlightName;
200
public bool HideExtensionsParameter {
202
return (OutputFlags & OutputFlags.HideExtensionsParameter) == OutputFlags.HideExtensionsParameter;
206
public bool HideGenericParameterNames {
208
return (OutputFlags & OutputFlags.HideGenericParameterNames) != 0;
212
public bool GeneralizeGenerics {
214
return (OutputFlags & OutputFlags.GeneralizeGenerics) != 0;
218
public bool UseNETTypeNames {
220
return (OutputFlags & OutputFlags.UseNETTypeNames) != 0;
224
public bool ReformatDelegates {
226
return (OutputFlags & OutputFlags.ReformatDelegates) != 0;
230
public bool StaticUsage {
232
return (OutputFlags & OutputFlags.StaticUsage) != 0;
236
public bool IncludeConstraints {
238
return (OutputFlags & OutputFlags.IncludeConstraints) != 0;
242
public bool ReturnTypesLast {
244
return (OutputFlags & OutputFlags.ReturnTypesLast) != 0;
248
public MarkupText EmitModifiersCallback;
249
public MarkupText EmitKeywordCallback;
250
public MarkupText MarkupCallback;
251
public MarkupText HighlightCallback;
252
public ProcessString EmitNameCallback;
254
public delegate string MarkupText (string text);
256
public ProcessString PostProcessCallback;
257
public delegate void ProcessString (INode domVisitable, ref string outString);