neutralts::bif

Module parse_bif_each

Source
Expand description

§{:each; … :}

Iterate array.

{:each; array keyname valuename >>
    code
:}

{:each; array-name key value >>
    {:;key:}={:;value:}
:}

§Modifiers:

{:+each; ... :}
{:^each; ... :}

For more details about the “+” modifier see “modifiers”.

§No flags

§Nesting

Can be nested (no limit), the following iterates an array, for more levels to increase the nesting:

{:^each; array key val >>
    {:array; val >>
        {:;:}
        {:;key:}:
        {:^each; val key val >>
            {:array; val >>
                {:;:}
                {:;key:}:
                {:^each; val key val >>
                    {:array; val >>
                        {:;:}
                        {:;key:}:
                        {:^each; val key val >>
                            {:;:}
                            {:;key:}={:;val:}
                        :}
                    :}{:else;
                        {:;:}
                        {:;key:}={:;val:}
                    :}
                :}
            :}{:else;
                {:;:}
                {:;key:}={:;val:}
            :}
        :}
    :}{:else;
        {:;:}
        {:;key:}={:;val:}
    :}
:}

For a recursive version of the above with no level limit, the following snippets could be set:

{:snippet; iterate-array >>
    {:^each; {:param; array-name :} key value >>
        {:array; value >>
            {:;:}
            {:;key:}:
            {:snippet; iterate-array-next-level :}
        :}{:else;
            {:;:}
            {:;key:}={:;value:}
        :}
    :}
:}

{:snippet; iterate-array-next-level >>
    {:^each; value key value >>
        {:array; value >>
            {:;:}<br>
            {:;key:}:<br>
            {:snippet; iterate-array-next-level :}
        :}{:else;
            {:;:}<br>
            {:;key:}={:;value:}
        :}
    :}
:}