1 module source.cpt;
2 
3 //Nan0MK's Cool Print Tools Dlang edition
4 import std.stdio;
5 
6 /*Reverse printer: Prints the given string in reverse*/
7 string revPrint(string stringIn){
8     string stringOut;
9     char inserter;
10     long i = stringIn.length;
11     while(i>0){
12         inserter = stringIn[i-1];
13         stringOut = stringOut ~ inserter;
14         i--;
15     }
16     return stringOut;
17 }
18 
19 /*Vertical printer: prints the given text vertically*/
20 void vertPrint(string stringIn){
21     long i = 0;
22     while(i<stringIn.length){
23         writeln(stringIn[i]);
24         i++;
25     }
26 }
27 
28 /*Reverse vertical printer: prints the gien text vertically in reverse*/
29 void revVertPrint(string stringIn){
30     long i = stringIn.length;
31     while(i>0){
32         writeln(stringIn[i-1]);
33         i--;
34     }
35 }
36 
37 /*Diagonal printer: prints the given text diagonally*/
38 void diagPrint(string stringIn){
39     string space = " ";
40     long i = 0;
41     while(i<stringIn.length){
42         if(i>0){
43             write(space);
44             space = space ~ " ";
45         }
46         writeln(stringIn[i]);
47         i++;
48     }
49 }
50 
51 /*Reverse diagonal printer: prints the given text diagonally in reverse*/
52 void revDiagPrint(string stringIn){
53     string space = " ";
54     long i = stringIn.length;
55     while(i>0){
56         if(i-1<stringIn.length){
57             write(space);
58             space = space ~ " ";
59         }
60         writeln(stringIn[i-1]);
61         i--;
62     }
63 }
64 
65 /*Stagger printer: prints the given text staggered top and bottom*/
66 void staggerPrint(string stringIn){
67     stringIn = stringIn ~ " ";
68     bool UP = true;
69     string topString;
70     string botString;
71     char inserter;
72     long i = 0;
73     long j = 0;
74 
75     while(i<stringIn.length){
76         if(UP){
77             if(j<stringIn.length){
78                 inserter = stringIn[j]; 
79             }
80             topString = topString ~ inserter;
81             botString = botString ~ " ";
82             i++;
83             j++;
84             UP = false;
85         }
86         if(!UP){
87             if(j<stringIn.length){
88                 inserter = stringIn[j]; 
89             }
90             botString = botString ~ inserter;
91             topString = topString ~ " ";
92             i++;
93             j++;
94             UP = true;
95         }
96     }
97     writeln(topString);
98     writeln(botString);
99 }
100 
101 /*Reverse stagger printer: prints the given text staggered top and bottom
102 in reverse*/
103 void revStaggerPrint(string stringIn){
104     bool UP = true;
105     string topString;
106     string botString;
107     char inserter;
108     long i = stringIn.length;
109     long j = stringIn.length;
110 
111     while(i>0){
112         if(UP){
113             if(j>0){
114                 inserter = stringIn[j-1];
115                 topString = topString ~ inserter;
116             }
117             botString = botString ~ " ";
118             i--;
119             j--;
120             UP = false;
121         }
122         if(!UP){
123             if(j>0){
124                 inserter = stringIn[j-1];
125                 botString = botString ~ inserter;
126             }
127             topString = topString ~ " ";
128             i--;
129             j--;
130             UP = true;
131         }
132     }
133     writeln(topString);
134     writeln(botString);
135 }