Skip to content

Commit

Permalink
allow for repeating over simple lists
Browse files Browse the repository at this point in the history
  • Loading branch information
keenanlang committed Aug 7, 2024
1 parent 264113e commit 655b32a
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions gestalt/Node.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,9 @@ class LayoutNode(GroupNode):
def __init__(self, name=None, layout={}, loc=None):
super(LayoutNode, self).__init__("Layout", name=name, layout=layout, loc=loc)

self.makeInternal(String, "repeat-over", "")
self.makeInternal(String, "repeat-over", "")
self.makeInternal(String, "index-variable", "N")
self.makeInternal(String, "value-variable", "val")
self.makeInternal(Number, "start-at", 0)
self.makeInternal(Number, "padding", 0)

Expand All @@ -363,15 +365,18 @@ def apply(self, generator, data={}):
repeat = output["repeat-over"]
start_at = output["start-at"]

repeat.apply(data)
index_var = output["index-variable"]
value_var = output["value-variable"]

#repeat.apply(data)

macrolist = data.get(str(repeat))

try:
if not macrolist:
macrolist = [ {"N" : x} for x in range(int(start_at), int(start_at) + int(repeat)) ]
macrolist = [ {str(index_var) : x} for x in range(int(start_at), int(start_at) + int(repeat)) ]
elif not isinstance(macrolist, list):
macrolist = [ {"N" : x} for x in range(int(start_at), int(start_at) + int(macrolist)) ]
macrolist = [ {str(index_var) : x} for x in range(int(start_at), int(start_at) + int(macrolist)) ]
except:
macrolist = List(repeat).val()

Expand All @@ -385,12 +390,18 @@ def apply(self, generator, data={}):
geom = output["geometry"].val()

child_macros = copy.copy(data)
child_macros.update(macroset)

if isinstance(macroset, dict):
child_macros.update(macroset)
else:
child_macros.update({str(value_var) : macroset})

child_macros.update({
"__parentx__" : int(geom["x"]),
"__parenty__" : int(geom["y"]),
"__parentwidth__" : int(geom["width"]),
"__parentheight__" : int(geom["height"])})

self.updateMacros(child_macros)

line = generator.generateAnonymousGroup()
Expand Down

0 comments on commit 655b32a

Please sign in to comment.