contrib/pep8analysis: fixes useless empty init
[nit.git] / contrib / pep8analysis / src / ast / pretty_instructions.nit
1 module pretty_instructions
2
3 import ast_base
4 import rich_instructions
5
6 redef class AnalysisManager
7 var opt_ast = new OptionBool("Print the AST","--ast")
8
9 redef init
10 do
11 super
12 opts.add_option(opt_ast)
13 end
14
15 redef fun build_ast(filename, stream)
16 do
17 var ast = super
18
19 return ast
20 end
21 end
22
23 class ASTPrinter
24 super Visitor
25
26 var str = "" is writable
27
28 redef fun visit(n) do n.accept_ast_printer(self)
29 end
30
31 redef class ANode
32 fun accept_ast_printer(v: ASTPrinter) do visit_all(v)
33 end
34
35 redef class Token
36 redef fun to_s do return text
37 redef fun accept_ast_printer(v: ASTPrinter) do v.str += self.to_s # + " "
38 end
39
40 redef class TId
41 redef fun accept_ast_printer(v: ASTPrinter)
42 do
43 var len = self.to_s.length
44 if len < 6 and len > 1 then
45 v.str += self.to_s + " "*(6-len)
46 else
47 v.str += self.to_s
48 end
49 end
50 end
51
52 redef class ANonEmptyLine
53 redef fun accept_ast_printer(v: ASTPrinter)
54 do
55 if n_label_decl == null then v.str += once " "*10
56 visit_all(v)
57 end
58 end
59
60 redef class AInstruction
61 redef fun accept_ast_printer(v: ASTPrinter)
62 do
63 var pre_size = v.str.length
64 visit_all(v)
65 var post_size = v.str.length
66 var diff_size = post_size - pre_size
67 if diff_size < 20 then v.str += " "*(20-diff_size)
68 end
69 end
70
71 redef class ALabelDecl
72 redef fun accept_ast_printer(v: ASTPrinter)
73 do
74 var text = n_id.text + ":"
75 v.str += text + " "*(10-text.length)
76 end
77 end
78
79 redef class ALine
80 fun text: String
81 do
82 var p = new ASTPrinter
83 p.enter_visit( self )
84 return p.str
85 end
86 end