Welcome, guest | Sign In | My Account | Store | Cart

Neatly format a comment block that is surrounded by #s and takes into account right side space padding.

Python, 51 lines
 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
def first2lines(): return str(('#' * 80) + '\n' + '#' + (' ' * 78) + '#') # first two lines
def leftSide(): return '# '                                               # left side of border
def rightSide(): return ' #'                                              # right side of border
def last2lines(): return str('#' + (' ' * 78) + '#' + '\n' + ('#' * 80))  # last two lines

# user entered comment goes here
uec = "This program will neatly format a programming comment block so that it's surrounded by pound signs (#). It does this by splitting the comment into a list and then concatenating strings each no longer than 76 characters long including the correct amount of right side space padding."

if len(uec) > 0:
    eosm = '<<<EOSM>>>'                                   # end of string marker
    comment = ' '.join((uec, eosm))
    wordList = comment.split()                            # load the comment into a list
    tmpString = ''                                        # temporarily holds loaded elements
    loadComment = ''                                      # holds the elements that will be printed
    counter = 0                                           # keeps track of the number of elements/words processed
    space = 0                                             # holds right side space padding
    last = wordList.index(wordList[-1])                   # numerical position of last element

    print first2lines()
    for word in wordList:
        tmpString += word + ' '                           # load the string until length is greater than 76

        # processes and prints all comment lines except the last one
        if len(tmpString.rstrip()) > 76:
            tmpList = tmpString.split()
            tmpString = tmpList[-1] + ' '                 # before popping last element load it for the beginning of the next cycle
            tmpList.pop()
            for tmp in tmpList:
                loadComment += tmp + ' '
            loadComment = loadComment.rstrip()
            space = 76 - len(loadComment)
            print leftSide() + loadComment + (space * ' ') + rightSide()
            loadComment = ''

        # processes and prints the last comment line
        elif len(tmpString.rstrip()) <= 76 and counter == last:
            tmpList = tmpString.split()
            tmpList.pop()
            for tmp in tmpList:
                loadComment += tmp + ' '
            loadComment = loadComment.rstrip()
            space = 76 - len(loadComment)
            print leftSide() + loadComment + (space * ' ') + rightSide()

        counter += 1
    print last2lines()

else:
    print first2lines()
    print leftSide() + "The length of your comment is zero, it must be at least one character long. " + rightSide()
    print last2lines()

Useful for quickly and neatly formatting a comment block that once it is run can be copied from the command prompt and pasted into your code.

Created by Michael Swartz on Mon, 5 Aug 2013 (MIT)
Python recipes (4591)
Michael Swartz's recipes (1)

Required Modules

  • (none specified)

Other Information and Tasks