# Copyright 2021 Northern.tech AS # This file is part of CFEngine 3 - written and maintained by Northern.tech AS. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; version 3. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # To the extent this program is licensed as part of the Enterprise # versions of Cfengine, the applicable Commercial Open Source License # (COSL) may apply to this file if you as a licensee so wish it. See # included file COSL.txt. #+begin_src cfengine3 bundle agent main { vars: "todo" slist => { "a 1", "b 2", "c 3" }; # Here, `with` is the canonified version of $(todo), letting us avoid an # intermediate canonification array. "$(with)" string => "$(todo)", with => canonify($(todo)); "complex" data => ' { "x": 200, "y": [ 1, 2, null, true, false ] } '; reports: "For iterable '$(todo)' we created variable '$(with)' and its value is '$(todo)'" with => canonify($(todo)); "We can print a data container compactly without creating a temporary variable: $(with)" with => format("%S", complex); "We can print a data container fully without creating a temporary variable: $(with)" with => storejson(complex); } #+end_src ############################################################################### #+begin_src example_output #@ ``` #@ R: For iterable 'a 1' we created variable 'a_1' and its value is 'a 1' #@ R: For iterable 'b 2' we created variable 'b_2' and its value is 'b 2' #@ R: For iterable 'c 3' we created variable 'c_3' and its value is 'c 3' #@ R: We can print a data container compactly without creating a temporary variable: {"x":200,"y":[1,2,null,true,false]} #@ R: We can print a data container fully without creating a temporary variable: { #@ "x": 200, #@ "y": [ #@ 1, #@ 2, #@ null, #@ true, #@ false #@ ] #@ } #@ ``` #+end_src