github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0099.yml (about)

     1  doc_meta: |
     2    folder: dvars
     3    title: datatemplate
     4    head: |
     5      Sometime you may need to do some adhoc message transformation in an elegant way, you would like to implementate your internal code or logic based on a interface / contract rather than external direct mapping. In such a scenario, it is better we could use a mapping layer to sheld your code suffering the impact of external change. We can use datatemplate for this purpose. In datatemplate definition, you map your own data structure/object with external vars/objects, then in your rendered value, you use the reference to your own object/key/value etc to generate the value required for your own business
     6  
     7    sections:
     8      - title: Relavant
     9        content: templating using datakey and datapath
    10        refs:
    11          - title: use datakey and datapath in templating
    12            link: ../../dvars/c0096
    13  
    14      - title: Demo
    15        log: yes
    16  
    17  goal:
    18    - showcase the dvar to render value using sub element of an var rather the global var name space
    19    - extension to c0082 and c0098
    20  
    21  vars:
    22    student:
    23      name: Tom
    24      gender: Male
    25      school: Sydney Grammar
    26    nsw:
    27      sydney:
    28        sgschool:
    29          student:
    30            name: Grace
    31            gender: Female
    32            school: MLC
    33  
    34  tasks:
    35    -
    36      name: task
    37      task:
    38        -
    39          func: cmd
    40          desc: use datatemplate as datasource
    41          dvars:
    42            - name: student_info
    43              value: 'my name is:{{.name}} and I am in {{.school}}'
    44              datatemplate: |
    45                name: {{.nsw.sydney.sgschool.student.name}}
    46                gender: {{.nsw.sydney.sgschool.student.gender}}
    47                school: {{.nsw.sydney.sgschool.student.school}}
    48              flags: [vvv]
    49          do:
    50            - name: print
    51              cmd: '{{.student_info}}'
    52  
    53        -
    54          func: cmd
    55          desc: use datatemplate as datasource
    56          dvars:
    57            - name: student_info
    58              value: 'my name is:{{.student.name}} and I am in {{.school.name}}'
    59              datatemplate: |
    60                student:
    61                  name: {{.nsw.sydney.sgschool.student.name}}
    62                  gender: {{.nsw.sydney.sgschool.student.gender}}
    63                school:
    64                  name: {{.nsw.sydney.sgschool.student.school}}
    65              flags: [vvv]
    66          do:
    67            - name: print
    68              cmd: '{{.student_info}}'