Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- my sub add-value(Str:D $name, Any $value) {
- nqp::if(nqp::isnull($*JSON),
- nqp::stmts(($*JSON = $value),
- (return)));
- state @name-parts = nqp::list(|$name.split('␟', :skip-empty));
- my @initial-name-parts = nqp::list(|$name.split('␟', :skip-empty));
- my $location = $*JSON;
- nqp::unless((nqp::elems(@name-parts) == nqp::elems(@initial-name-parts)) &&
- (@initial-name-parts.head(*-1) eq @name-parts.head(*-1)),
- nqp::stmts((@name-parts = @initial-name-parts),
- (my @elems = nqp::splice(@name-parts, [], 0, nqp::elems(@name-parts) - 2)),
- (my $i = 0),
- (nqp::while($i++ < nqp::elems(@elems),
- nqp::stmts(
- nqp::if(nqp::istype($location, Array),
- nqp::stmts($location = $location[@elems[$i].split('␝', :skip-empty)[0].Int]),
- $location = $location{@elems[$i]}))))));
- nqp::if(nqp::istype($location, Array),
- nqp::stmts(nqp::push($location, $value)),
- $location{@initial-name-parts[*-1]} = $value);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement