1
2
3 """
4 Module to produce UNIX banner command style ASCII art. Based on:
5 http://code.activestate.com/recipes/577537-banner/
6
7 @author: R.S. Collins
8 @org: WFAU, IfA, University of Edinburgh
9 """
10
11 from future_builtins import zip
12
13
14 letterforms = '''\
15 | | | | | | | |
16 ### | ### | ### | # | | ### | ### |!|
17 # # | # # | # # | | | | |"|
18 # # | # # |#######| # # |#######| # # | # # |#|
19 ##### |# # #|# # | ##### | # #|# # #| ##### |$|
20 ### #|# # # |### # | # | # ###| # # #|# ###|%|
21 ## | # # | ## | ### |# # #|# # | ### #|&|
22 ### | ### | # | # | | | |'|
23 ## | # | # | # | # | # | ## |(|
24 ## | # | # | # | # | # | ## |)|
25 | # # | # # |#######| # # | # # | |*|
26 | # | # | ##### | # | # | |+|
27 | | | ### | ### | # | # |,|
28 | | | ##### | | | |-|
29 | | | | ### | ### | ### |.|
30 #| # | # | # | # | # |# |/|
31 ### | # # |# #|# #|# #| # # | ### |0|
32 # | ## | # # | # | # | # | ##### |1|
33 ##### |# #| #| ##### |# |# |#######|2|
34 ##### |# #| #| ##### | #|# #| ##### |3|
35 # |# # |# # |# # |#######| # | # |4|
36 #######|# |# |###### | #|# #| ##### |5|
37 ##### |# #|# |###### |# #|# #| ##### |6|
38 ###### |# # | # | # | # | # | # |7|
39 ##### |# #|# #| ##### |# #|# #| ##### |8|
40 ##### |# #|# #| ######| #|# #| ##### |9|
41 # | ### | # | | # | ### | # |:|
42 ### | ### | | ### | ### | # | # |;|
43 # | # | # | # | # | # | # |<|
44 | |#######| |#######| | |=|
45 # | # | # | # | # | # | # |>|
46 ##### |# #| #| ### | # | | # |?|
47 ##### |# #|# ### #|# ### #|# #### |# | ##### |@|
48 # | # # | # # |# #|#######|# #|# #|A|
49 ###### |# #|# #|###### |# #|# #|###### |B|
50 ##### |# #|# |# |# |# #| ##### |C|
51 ###### |# #|# #|# #|# #|# #|###### |D|
52 #######|# |# |##### |# |# |#######|E|
53 #######|# |# |##### |# |# |# |F|
54 ##### |# #|# |# ####|# #|# #| ##### |G|
55 # #|# #|# #|#######|# #|# #|# #|H|
56 ### | # | # | # | # | # | ### |I|
57 #| #| #| #|# #|# #| ##### |J|
58 # # |# # |# # |### |# # |# # |# # |K|
59 # |# |# |# |# |# |#######|L|
60 # #|## ##|# # # #|# # #|# #|# #|# #|M|
61 # #|## #|# # #|# # #|# # #|# ##|# #|N|
62 #######|# #|# #|# #|# #|# #|#######|O|
63 ###### |# #|# #|###### |# |# |# |P|
64 ##### |# #|# #|# #|# # #|# # | #### #|Q|
65 ###### |# #|# #|###### |# # |# # |# #|R|
66 ##### |# #|# | ##### | #|# #| ##### |S|
67 #######| # | # | # | # | # | # |T|
68 # #|# #|# #|# #|# #|# #| ##### |U|
69 # #|# #|# #|# #| # # | # # | # |V|
70 # #|# # #|# # #|# # #|# # #|# # #| ## ## |W|
71 # #| # # | # # | # | # # | # # |# #|#|
72 # #| # # | # # | # | # | # | # |Y|
73 #######| # | # | # | # | # |#######|Z|
74 ##### | # | # | # | # | # | ##### |[|
75 # | # | # | # | # | # | #|\|
76 ##### | # | # | # | # | # | ##### |]|
77 # | # # | # # | | | | |^|
78 | | | | | |#######|_|
79 | ### | ### | # | # | | |`|
80 | ## | # # | # #| ######| # #| # #|a|
81 | ##### | # #| ##### | # #| # #| ##### |b|
82 | #### | # #| # | # | # #| #### |c|
83 | ##### | # #| # #| # #| # #| ##### |d|
84 | ######| # | ##### | # | # | ######|e|
85 | ######| # | ##### | # | # | # |f|
86 | #### | # #| # | # ###| # #| #### |g|
87 | # #| # #| ######| # #| # #| # #|h|
88 | # | # | # | # | # | # |i|
89 | #| #| #| #| # #| #### |j|
90 | # #| # # | #### | # # | # # | # #|k|
91 | # | # | # | # | # | ######|l|
92 | # #| ## ##| # ## #| # #| # #| # #|m|
93 | # #| ## #| # # #| # # #| # ##| # #|n|
94 | #### | # #| # #| # #| # #| #### |o|
95 | ##### | # #| # #| ##### | # | # |p|
96 | #### | # #| # #| # # #| # # | ### #|q|
97 | ##### | # #| # #| ##### | # # | # #|r|
98 | #### | # | #### | #| # #| #### |s|
99 | #####| # | # | # | # | # |t|
100 | # #| # #| # #| # #| # #| #### |u|
101 | # #| # #| # #| # #| # # | ## |v|
102 | # #| # #| # #| # ## #| ## ##| # #|w|
103 | # #| # # | ## | ## | # # | # #|#|
104 | # #| # # | # | # | # | # |y|
105 | ######| # | # | # | # | ######|z|
106 ### | # | # |## | # | # | ### |{|
107 # | # | # | | # | # | # |||
108 ### | # | # | ##| # | # | ### |}|
109 ## |# # #| ## | | | | |~|
110 '''.splitlines()
111
112
113
114 table = {}
115 for form in letterforms:
116 if '|' in form:
117 table[form[-2]] = form[:-3].split('|')
118
119
120
121 ROWS = len(table.values()[0])
122
123
124
126 """
127 Display word as large ASCII art. Example:
128
129 >>> horizontal('Hello')
130 # #
131 # # ###### # # ####
132 # # # # # # #
133 ####### ##### # # # #
134 # # # # # # #
135 # # # # # # #
136 # # ###### ###### ###### ####
137 >>> horizontal(str(5))
138 #######
139 #
140 #
141 ######
142 #
143 # #
144 #####
145
146 @param word: Word to display.
147 @type word: str
148
149 """
150 for row in range(ROWS):
151 for c in word:
152 print table[c][row],
153 print
154
155
156
158 """
159 Display word as large ASCII art, oriented vertically.
160
161 @param word: Word to display.
162 @type word: str
163
164 """
165 for c in word:
166 for row in zip(*table[c]):
167 print ' '.join(reversed(row))
168 print
169
170
171
172 if __name__ == "__main__":
173 import doctest
174 doctest.testmod()
175
176
177