aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Formatting/CodeFormatter.cs
blob: c933f7e0998e0a53f8fbc7b73ce23b6ccf3552b0 (plain)
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
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Formatting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tango.Scripting.Formatting
{
    public static class CodeFormatter
    {
        public static String Format(String code)
        {
            SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
            CompilationUnitSyntax root = tree.GetCompilationUnitRoot();

            //var node = ApplyBraceNewLineRule(root);
            //node = ApplyCopyrightHeaderRule(node);
            //node = ApplyNewLineAboveRule(node);
            //node = ApplyUsingLocationRule(node);

            //Just to make VS copy the dll to output folder.
            Microsoft.CodeAnalysis.CSharp.Formatting.BinaryOperatorSpacingOptions a = Microsoft.CodeAnalysis.CSharp.Formatting.BinaryOperatorSpacingOptions.Ignore;

            var node = Formatter.Format(root, new AdhocWorkspace()); 

            return node.ToString();
        }

        //private static SyntaxNode ApplyUsingLocationRule(SyntaxNode node)
        //{
        //    UsingLocationRule rule = new UsingLocationRule();
        //    return rule.Process(node, "CSharp");
        //}

        //private static SyntaxNode ApplyBraceNewLineRule(SyntaxNode node)
        //{
        //    BraceNewLineRule rule = new BraceNewLineRule();
        //    return rule.Process(node, "CSharp");
        //}

        //private static SyntaxNode ApplyNewLineAboveRule(SyntaxNode node)
        //{
        //    NewLineAboveRule rule = new NewLineAboveRule();
        //    return rule.Process(node, "CSharp");
        //}

        //private static SyntaxNode ApplyCopyrightHeaderRule(SyntaxNode node)
        //{
        //    CopyrightHeaderRule rule = new CopyrightHeaderRule(new Microsoft.DotNet.CodeFormatting.Options()
        //    {

        //    });

        //    return rule.ProcessCSharp(node);
        //}
    }
}