Advertisement
Guest User

Untitled

a guest
Feb 13th, 2023
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 1.00 KB | None | 0 0
  1. my sub add-value(Str:D $name, Any $value) {
  2.     nqp::if(nqp::isnull($*JSON),
  3.             nqp::stmts(($*JSON = $value),
  4.                        (return)));
  5.  
  6.     state @name-parts = nqp::list(|$name.split('␟', :skip-empty));
  7.     my @initial-name-parts = nqp::list(|$name.split('␟', :skip-empty));
  8.  
  9.     my $location = $*JSON;
  10.     nqp::unless((nqp::elems(@name-parts) == nqp::elems(@initial-name-parts)) &&
  11.                 (@initial-name-parts.head(*-1) eq @name-parts.head(*-1)),
  12.                 nqp::stmts((@name-parts = @initial-name-parts),
  13.                            (my @elems = nqp::splice(@name-parts, [], 0, nqp::elems(@name-parts) - 2)),
  14.                            (my $i = 0),
  15.                            (nqp::while($i++ < nqp::elems(@elems),
  16.                                        nqp::stmts(
  17.                                            nqp::if(nqp::istype($location, Array),
  18.                                                    nqp::stmts($location = $location[@elems[$i].split('␝', :skip-empty)[0].Int]),
  19.                                                    $location = $location{@elems[$i]}))))));
  20.  
  21.     nqp::if(nqp::istype($location, Array),
  22.             nqp::stmts(nqp::push($location, $value)),
  23.             $location{@initial-name-parts[*-1]} = $value);
  24. }
  25.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement