astracting appending elemnts to each other
This commit is contained in:
parent
d07b14f879
commit
3233b7bcff
138
components/00_Global/_blockAppendix.styl
Normal file
138
components/00_Global/_blockAppendix.styl
Normal file
@ -0,0 +1,138 @@
|
||||
_lanes = {}
|
||||
_stacks = {}
|
||||
_last_name = {}
|
||||
|
||||
_reset_last_name(block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _last_name
|
||||
remove(_last_name, block_type)
|
||||
|
||||
|
||||
_set_last_name(name, block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
_last_name[block_type] = name
|
||||
|
||||
_get_last_name(block_type)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _last_name
|
||||
return _last_name[block_type]
|
||||
else
|
||||
return null
|
||||
|
||||
_current_block_type()
|
||||
return called-from[1]
|
||||
|
||||
_call_stack_till_first(block_type)
|
||||
striped = slice(called-from, 2)
|
||||
block_index = (index(striped, block_type))
|
||||
if block_index == null
|
||||
if length(striped) <= 1
|
||||
return (striped ())
|
||||
return slice(striped, 1)
|
||||
stack = ()
|
||||
for i in (0..block_index)
|
||||
push(stack, striped[i])
|
||||
return stack
|
||||
|
||||
|
||||
_push_onto_stack(block, block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _stacks
|
||||
stack = _stacks[block_type]
|
||||
else
|
||||
stack = ()
|
||||
|
||||
push(stack, block)
|
||||
_stacks[block_type] = stack
|
||||
|
||||
_pop_from_stack(block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _stacks
|
||||
stack = _stacks[block_type]
|
||||
b = pop(stack)
|
||||
if length(stack) > 0
|
||||
_stacks[block_type]
|
||||
else
|
||||
remove(_stacks, block_type)
|
||||
return b
|
||||
return null
|
||||
|
||||
_pop_stack(block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _stacks
|
||||
stack = _stacks[block_type]
|
||||
remove(_stacks, block_type)
|
||||
return stack
|
||||
else
|
||||
return ()
|
||||
|
||||
|
||||
_put_into_lane(key, value, block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _lanes
|
||||
lane = _lanes[block_type]
|
||||
else
|
||||
lane = {}
|
||||
|
||||
lane[key] = value
|
||||
_lanes[block_type] = lane
|
||||
|
||||
_pop_lane(block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[1]
|
||||
|
||||
if block_type in _lanes
|
||||
lane = _lanes[block_type]
|
||||
remove(_lanes, block_type)
|
||||
return lane
|
||||
else
|
||||
return {}
|
||||
|
||||
attach(parent_type, suffix, block)
|
||||
call_stack = _call_stack_till_first(parent_type)
|
||||
if parent_type in call_stack
|
||||
// We are called inside a block
|
||||
_push_onto_stack(block)
|
||||
//Detect if the selector will be generated
|
||||
//by an earlier call of RV-Element
|
||||
_current_block = _current_block_type()
|
||||
if not _curent_block in (call_stack)
|
||||
block_list = _pop_stack()
|
||||
_put_into_lane(suffix, block_list, parent_type)
|
||||
else
|
||||
// We are not called inside a block
|
||||
// Is there a block to attach to
|
||||
_last_parent_name = _get_last_name(parent_type)
|
||||
if _last_parent_name != null
|
||||
& .{_last_parent_name}{suffix}
|
||||
{block}
|
||||
|
||||
tow(name, block, block_type=null)
|
||||
if block_type == null
|
||||
block_type = called-from[0]
|
||||
|
||||
.{name}
|
||||
{block}
|
||||
|
||||
if block_type in _lanes
|
||||
for suffix, block_list in _pop_lane(block_type)
|
||||
& .{name}{suffix}
|
||||
for b in block_list
|
||||
{b}
|
||||
|
||||
_set_last_name(name, block_type)
|
||||
|
Loading…
Reference in New Issue
Block a user