I believed you made thing overly complicated. You only have one hash table,
and try to remove the entries that has remove_ of it. Not sure why you need
to use reduce and map. You can use `each` to go through first key of the
hash table, then use filter to filter out unwanted keys like,

# this class is use to setup owner and group
class reduce_test {
  $hash = {
    attribute1 => 1,
    attribute2 => 2,
    attribute3 => 3,
    remove1    => 4,
    remove2    => 5,
    attribute4 => 6,
    attribute5 => 7,
  }
  notice("hash table => ${hash}")
  $h = $hash.filter | $items | {
    $items[0] !~ /^remove/
  }
  notice("hash table after filtering out 'remove*' key = ${h}")
}

For the each part, I will left for you to figure out.

-CK

On Wed, Jun 5, 2019 at 8:09 AM Albert Shih <[email protected]> wrote:

> Hi
>
>
> I try to write a code to delete some key inside a hash. So I got this
>
>
>   $_dataset = reduce($dataset.map |$key, $value| { {$key =>
> delete($value,['remove_key1','remove_key2','remove_key3'])} }) | $result,
> $value | { deep_merge($result, $value)}
>
> so if
>
>   $dataset = {
>     name1 => {
>       attr1 =>
>       attr2 =>
>       remove_key1 =>
>       remove_key2 =>
>       remove_key3 =>
>       attr3 =>
>       }
>       }
>
> it will end up
>
>   $_dataset = {
>     name1 => {
>       attr1 =>
>       attr2 =>
>       attr3 =>
>       }
>       }
>
> So it's working.
>
> But why this *not* working ?
>
> class  (
>   Optional[Hash] $remove_key = ['remove_key1','remove_key2','remove_key3'],
>   )
>   {
>
>   $_dataset = reduce($dataset.map |$key, $value| { {$key =>
> delete($value,$remove_key)} }) | $result, $value | { deep_merge($result,
> $value)}
>
>   }
>
> The problem are some key will be remove, some other not. I'm unable to
> understand the difference or find out why it delete some key (event not in
> the remove_key array), and keep some other.
>
> Regards.
>
>
>
>
>
>
> --
> Albert SHIH
> DIO bātiment 15
> Observatoire de Paris
> xmpp: [email protected]
> Heure local/Local time:
> Wed 05 Jun 2019 04:57:36 PM CEST
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/20190605150914.GA7441%40io.chezmoi.fr
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CAC9thQUEjMhAwbJrjH%2BQRNPerTnjsNqCbJQRD8P6uFuEuRfVBw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to