[ create a new paste ] login | about

Link: http://codepad.org/1ich81ti    [ raw code | fork ]

programmingpraxis - Python, pasted on Oct 9:
import sys

def justify(filename, width = 60):
    with open(filename, 'r') as file:
        words, cnt, size, dir = [], 0, 0, 0
        for line in file:
            if line in ['\n','\r\n']:
                printline(width, words, cnt, size, dir, 'no')
                words, cnt, size, dir = [], 0, 0, dir
                print ''
                continue
            for word in line.split():
                if cnt + size + len(word) > width:
                    printline(width, words, cnt, size, dir, 'yes')
                    words, cnt, size, dir = [], 0, 0, 1 - dir
                words.append(word); cnt += 1; size += len(word)
        printline(width, words, cnt, size, dir, 'no')

def printline(width, words, cnt, size, dir, just):
    if just == 'no' or cnt == 1:
        for i in range(0, cnt):
            sys.stdout.write(words[i])
            sys.stdout.write('\n' if i == cnt - 1 else ' ')
    elif cnt > 1:
        nblanks, holes, i = width - size, cnt - 1, 0
        while holes > 0:
            n = int((nblanks - dir) / holes) + dir
            sys.stdout.write(words[i] + ' ' * n)
            nblanks -= n; holes -= 1; i += 1
        print words[cnt - 1]
    else:
        print ''


Create a new paste based on this one


Comments: