import re # libary to search and replace strings in the postscript file from dictionary import font_index from generate_postscript import generate_postscript # function with three arguments def weaver(previous_module, current_module, module): patch1 = module[1] patch2 = module[2] patternFactor = int(module[3]) patchFactor = int(module[4]) patchworkFactor = int(module[5]) #replace a, b, c and d with characters I am using nowhere else patch1 = patch1.replace("a", ("%"*patternFactor)) #∼ patch1 = patch1.replace("b", ("$"*patternFactor)) #≈ patch1 = patch1.replace("c", ("§"*patternFactor)) #≅ patch1 = patch1.replace("d", ("#"*patternFactor)) #≡ patch2 = patch2.replace("a", ("%"*patternFactor)) #∼ patch2 = patch2.replace("b", ("$"*patternFactor)) #≈ patch2 = patch2.replace("c", ("§"*patternFactor)) #≅ patch2 = patch2.replace("d", ("#"*patternFactor)) #≡ #print(patch1) patchwork = ((patch1*patchFactor) + (patch2*patchFactor)) *patchworkFactor text = '' tmp_line = '' charCount = 0 lineCount = 0 lineWidth = 15 #lineNum = 100 ################################################################################# for character in patchwork: if len(tmp_line) < lineWidth: tmp_line += character if len(patchwork) == charCount+1: text = text + tmp_line + "\n" else: tmp_line += character text = text + tmp_line + "\n" tmp_line = '' lineCount += 1 if lineCount >= 10: #why cannot replace with lineNum?################################### break charCount += 1 #print(text) #split the text into lines to place them separated text = text.split("\n") paragraph = "" for row in text: paragraph = paragraph + "(" + row + ") true charpath newline-weaver " #replace the character that I am using nowhere else with the number code of the special characters I want to use in the generate_postscript #the backsplash needs two escapes (one in the replace operation and one later in the generate_postscript when it is written to the file) paragraph = paragraph.replace("%", ("\\\\176"*patternFactor)) #∼ paragraph = paragraph.replace("$", ("\\\\273"*patternFactor)) #≈ paragraph = paragraph.replace("§", ("\\\\100"*patternFactor)) #≅ paragraph = paragraph.replace("#", ("\\\\272"*patternFactor)) #≡ #print(paragraph) script = """ newpath % WEAVER /Symbol % fontname 36 selectfont % fontsize in points, establishes the font as the current one /x-weaver { 10 } def % define x position /y-weaver { 700 } def % define y position /lg-weaver { 16 } def % define linespacing /newline-weaver { y-weaver lg-weaver sub /y-weaver exch def x-weaver y-weaver moveto } def % define newline (position of new line) by using subtracting linespacing (lg) from y position and define that as the new y position (exch-ange), finally move to x position and re-defined y position x-weaver y-weaver moveto % x and y coordinates in px (origin is the lower-left corner of the page) """+paragraph+""" fill % fill the text in parentheses showpage % print all on a page """ generate_postscript(previous_module, current_module, script) # call function