コード例 #1
0
        private static string NormalizeNewLinesInWhitespace(string original, FormatContext context, int minimumNewLines, Func <String> noNewLinesProcessor)
        {
            int nNewLines = 0;
            int idx       = original.IndexOf(Environment.NewLine, StringComparison.OrdinalIgnoreCase);

            while (idx > -1)
            {
                ++nNewLines;
                idx = original.IndexOf(Environment.NewLine, idx + 1, StringComparison.OrdinalIgnoreCase);
            }

            StringBuilder sb = new StringBuilder();

            nNewLines = Math.Max(minimumNewLines, nNewLines);
            for (int i = 0; i < nNewLines; i++)
            {
                sb.Append(Environment.NewLine);
            }
            sb.Append(context.GetIndentString());

            if (nNewLines > 0)
            {
                return(sb.ToString());
            }
            else
            {
                return(noNewLinesProcessor());
            }
        }
コード例 #2
0
        private void DoFormat(string input, FormatOptions options, bool verifyOutput, Action <FormatterVisitor> postFormatAction)
        {
            Validate.IsNotNull(nameof(input), input);
            Validate.IsNotNull(nameof(options), options);

            ParseResult   result  = Parser.Parse(input);
            FormatContext context = new FormatContext(result.Script, options);

            FormatterVisitor visitor = new FormatterVisitor(context, ServiceProvider);

            result.Script.Accept(visitor);
            if (verifyOutput)
            {
                visitor.VerifyFormat();
            }

            postFormatAction?.Invoke(visitor);
        }
コード例 #3
0
 internal static string NormalizeNewLinesOrCondenseToOneSpace(string original, FormatContext context)
 {
     return(NormalizeNewLinesOrCondenseToNSpaces(original, context, 1));
 }
コード例 #4
0
 internal static string NormalizeNewLinesOrCondenseToNSpaces(string original, FormatContext context, int nSpaces)
 {
     return(NormalizeNewLinesInWhitespace(original, context, 0, () => { return new String(' ', nSpaces); }));
 }
コード例 #5
0
 internal static string NormalizeNewLinesEnsureOneNewLineMinimum(string original, FormatContext context)
 {
     return(NormalizeNewLinesInWhitespace(original, context, 1));
 }
コード例 #6
0
 private static string NormalizeNewLinesInWhitespace(string original, FormatContext context, int minimumNewLines)
 {
     return(NormalizeNewLinesInWhitespace(original, context, 1, () => { return original; }));
 }
コード例 #7
0
 internal static string NormalizeToOneSpace(string original, FormatContext context)
 {
     return(" ");
 }
コード例 #8
0
 internal static string NormalizeNewLinesInWhitespace(string original, FormatContext context)
 {
     return(NormalizeNewLinesInWhitespace(original, context, 0));
 }
コード例 #9
0
 internal static string StripAllWhitespace(string original, FormatContext context)
 {
     return(String.Empty);
 }
コード例 #10
0
 public FormatterVisitor(FormatContext context, IMultiServiceProvider serviceProvider)
     : base()
 {
     Context = context;
     this.serviceProvider = serviceProvider;
 }
コード例 #11
0
 internal override string FormatWhitespace(string original, FormatContext context)
 {
     return(FormatterUtilities.NormalizeNewLinesEnsureOneNewLineMinimum(original, context));
 }
コード例 #12
0
 internal override string FormatWhitespace(string original, FormatContext context)
 {
     return(FormatterUtilities.NormalizeNewLinesOrCondenseToOneSpace(original, context));
 }
コード例 #13
0
 internal abstract string FormatWhitespace(string original, FormatContext context);