Compare commits

...

2 Commits

2 changed files with 35 additions and 26 deletions

View File

@ -8,38 +8,30 @@ def print_ingredients():
ingredients = {} ingredients = {}
ingredient = "start"
i = 0 i = 0
while ingredient: node = "start"
while node:
print_ingredients() print_ingredients()
ingredient = input("Add ingredient: ") node = input("Add node: ")
if ingredient: if node:
ingredients[i] = Node(ingredient, result=ingredient)
i += 1
task = "start"
while task:
print_ingredients()
task = input("Add task: ")
if task:
needs = input("List needs (comma-separated): ") needs = input("List needs (comma-separated): ")
description = input("Detailed description: ") description = input("Detailed description: ")
result = input("Result of task (e.g. chopped carrots): ")
new_task = Node(task, description=description, result=result) if needs:
result = input("Result of node (e.g. chopped carrots): ")
ingredients[i] = new_task new_node = Node(node, description=description, result=result)
i += 1
for e in [int(key.strip()) for key in needs.split(",")]: for e in [int(key.strip()) for key in needs.split(",")]:
ingredients.pop(e).parent = new_task ingredients.pop(e).parent = new_node
else:
new_node = Node(node, description=description, result=node)
for pre, _, node in RenderTree(new_task): ingredients[i] = new_node
i += 1
for pre, _, node in RenderTree(new_node):
print(f"{pre}{node.name}") print(f"{pre}{node.name}")
name = input("Recipe name: ") name = input("Recipe name: ")
@ -48,5 +40,5 @@ if name:
name = name.replace(" ", "_") name = name.replace(" ", "_")
with open(f"{name}.json", 'w') as f: with open(f"{name}.json", 'w') as f:
JsonExporter(indent=2).write(new_task, f) JsonExporter(indent=2).write(new_node, f)

View File

@ -1,4 +1,4 @@
from anytree import LevelOrderGroupIter from anytree import LevelOrderIter, LevelOrderGroupIter
from anytree.importer import JsonImporter from anytree.importer import JsonImporter
from sys import argv from sys import argv
@ -20,7 +20,7 @@ def build_rows_depth_first(node, rows, leaf_count=0):
rows[cur_row].append(f'<th>{node.name}</th>') rows[cur_row].append(f'<th>{node.name}</th>')
if colspan > 1: if colspan > 1:
rows[cur_row].append(f'<td colspan="{colspan-1}"></td>') rows[cur_row].append(f'<td colspan="{colspan-1}" class="filler"></td>')
leaf_count += 1 leaf_count += 1
@ -46,6 +46,23 @@ for i in range(len(root.leaves)):
build_rows_depth_first(root, output_rows) build_rows_depth_first(root, output_rows)
print("<h2>Ingredients</h2>")
print("<ul>")
for ingredient in root.leaves:
print(f" <li>{ingredient.name}</li>")
print("</ul>")
print("<h2>Steps</h2>")
print("<ol>")
tasks = [node for node in LevelOrderIter(root) if not node.is_leaf]
for task in reversed(tasks):
print(f"<li>{task.description}</li>")
print("</ol>")
print("<table cellspacing='0'>") print("<table cellspacing='0'>")
for row in output_rows: for row in output_rows: