sketch-a-day/sketch_180119a/sketch_to_generate_dbn_lett...

67 wiersze
2.0 KiB
Python

"""
s18019 - Alexandre B A Villares
https://abav.lugaralgum.com/sketch-a-day
This script generates code on console for dbn_letters.py
Converting some of Maeda's Design by Number
dbnletters.dbn code -> Processing
"""
def setup():
noLoop()
println('''"""
s18019 - Alexandre B A Villares
https://abav.lugaralgum.com/sketch-a-day
This code was generated by sketch_to_generate_dbn_letters_py.py
Converting some of Maeda's Design by Number
dbnletters.dbn code -> Processing
"""''')
println("dbn_letter = {} # Dict of functions")
println("")
convert_dbn_source("data/dbnletters.dbn")
def convert_dbn_source(file_path):
with open(file_path, "r") as f:
dbn_source = f.readlines()
inside_block = False
command_name = ""
command_block = []
for ln in dbn_source:
if ln.count("command"):
command_name = ln[14:15]
elif ln.count("{"):
inside_block = True
elif ln.count("}"):
if command_name in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
def_dbn_letter(command_block, command_name)
command_block = [] # empty block
inside_block = False
elif inside_block:
command_block.append(ln.lstrip())
def def_dbn_letter(dbn_block, func_key):
p_block = []
println("# " + func_key)
println("def dbn_letter" + func_key + "(h, v):")
println(" pushMatrix()")
println(" scale(1, -1)")
for dbn_line in dbn_block:
if dbn_line:
p_block.append(" " + dbn_line
.replace("line ", "line(")
.replace(" ", ",")
.replace("//", "#")
.strip()
+ ")")
for py_processing_line in p_block:
println(py_processing_line)
println(" popMatrix()")
println("dbn_letter['"+ func_key +"'] = dbn_letter" + func_key)
println("dbn_letter["+ str(ord(func_key)-64) +"] = dbn_letter" + func_key)
println("")