Lines Matching +full:- +full:- +full:json

1 # SPDX-License-Identifier: Apache-2.0
9 # It supports basic key-value pairs, like
12 # basic key-object pairs, like
18 # - foo1
19 # - foo2
20 # - foo3
24 # - bar: val1
26 # - bar: val2
34 # - alpha
35 # - beta
36 # - gamma
75 # JSON content.
78 set(${var} "\"@YAML-LIST@\"" PARENT_SCOPE)
84 # Internal helper function to append items to a list in the JSON content.
88 string(JSON subjson GET "${json_content}" ${key})
91 # yaml_load() are proper JSON arrays. When an append is requested, those
93 string(JSON type TYPE "${json_content}" ${key})
95 string(JSON arraylength LENGTH "${subjson}")
98 math(EXPR arraystop "${arraylength} - 1")
107 string(JSON item GET "${json_content}" ${key} ${i})
113 string(JSON json_content SET "${json_content}" ${key} "\"${subjson}\"")
115 # lists are stored as JSON arrays
116 string(JSON index LENGTH "${subjson}")
122 math(EXPR stop "${index} + ${length} - 1")
151 string(JSON json_content SET "${json_content}" ${key} ${i} "{${qouted_map_value}}")
154 math(EXPR stop "${index} + ${length} - 1")
158 string(JSON json_content SET "${json_content}" ${key} ${i} "\"${value}\"")
183 "${CMAKE_CURRENT_FUNCTION}(EXISTS NAME ${ARG_YAML_NAME} <result-var>)."
189 list(POP_FRONT ARG_YAML_UNPARSED_ARGUMENTS out-var)
190 set(${out-var} TRUE PARENT_SCOPE)
192 set(${out-var} ${ARG_YAML_NAME}-NOTFOUND PARENT_SCOPE)
220 zephyr_set(JSON "{}" SCOPE ${ARG_YAML_NAME})
243 execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
244 "import json; import yaml; print(json.dumps(yaml.safe_load(open('${ARG_YAML_FILE}')) or {}))"
257 zephyr_set(JSON "${json_load_out}" SCOPE ${ARG_YAML_NAME})
261 # yaml_get(<out-var> NAME <name> KEY <key>...)
263 # Get the value of the given key and store the value in <out-var>.
270 # <out-var> : Name of output variable.
274 # - Anything will be returned, even json object strings.
280 zephyr_get_scoped(json_content ${ARG_YAML_NAME} JSON)
283 # If key is not found, then type becomes '-NOTFOUND' and value handling is done below.
284 string(JSON type ERROR_VARIABLE error TYPE "${json_content}" ${ARG_YAML_KEY})
286 string(JSON subjson GET "${json_content}" ${ARG_YAML_KEY})
287 string(JSON arraylength LENGTH "${subjson}")
289 math(EXPR arraystop "${arraylength} - 1")
292 string(JSON item GET "${subjson}" ${i})
299 # Searching for a non-existing key should just result in the output value '-NOTFOUND'
300 string(JSON value ERROR_VARIABLE error GET "${json_content}" ${ARG_YAML_KEY})
306 # yaml_length(<out-var> NAME <name> KEY <key>...)
308 # Get the length of the array defined by the given key and store the length in <out-var>.
309 # If key does not define an array, then the length -1 is returned.
313 # <out-var> : Name of output variable.
321 zephyr_get_scoped(json_content ${ARG_YAML_NAME} JSON)
323 string(JSON type ERROR_VARIABLE error TYPE "${json_content}" ${ARG_YAML_KEY})
325 string(JSON subjson GET "${json_content}" ${ARG_YAML_KEY})
326 string(JSON arraylength LENGTH "${subjson}")
328 elseif(type MATCHES ".*-NOTFOUND")
332 set(${out_var} -1 PARENT_SCOPE)
353 # MAP <map> : Map, with key-value pairs where key-value is separated by ':',
387 zephyr_get_scoped(json_content ${ARG_YAML_NAME} JSON)
394 # non-existing keys will throw errors but also set type to NOT-FOUND.
395 string(JSON type ERROR_VARIABLE ignore TYPE "${json_content}" ${valid_keys} ${k})
415 string(JSON json_content SET "${json_content}"
423 string(JSON json_content SET "${json_content}" ${ARG_YAML_KEY} "${json_string}")
429 string(JSON json_content SET "${json_content}" ${ARG_YAML_KEY} "\"${escape_value}\"")
432 zephyr_set(JSON "${json_content}" SCOPE ${ARG_YAML_NAME})
454 zephyr_get_scoped(json_content ${ARG_YAML_NAME} JSON)
455 string(JSON json_content REMOVE "${json_content}" ${ARG_YAML_KEY})
457 zephyr_set(JSON "${json_content}" SCOPE ${ARG_YAML_NAME})
493 zephyr_get_scoped(json_content ${ARG_YAML_NAME} JSON)
520 -DJSON_FILE="$<TARGET_PROPERTY:${save_target},json_file>"
521 -DYAML_FILE="${yaml_file}"
522 -DTEMP_FILES="$<TARGET_PROPERTY:${save_target},temp_files>"
523 -P ${ZEPHYR_BASE}/cmake/yaml-filter.cmake
532 set(json_file ${yaml_file_no_ext}_${genex_save_count}.json)
535 # comment this to keep the temporary JSON files
545 zephyr_string(ESCAPE json "${in_json}")
547 math(EXPR level_dec "${level} - 1")
551 string(JSON length LENGTH "${json}")
557 math(EXPR stop "${length} - 1")
559 string(JSON member MEMBER "${json}" ${i})
561 string(JSON type TYPE "${json}" ${member})
562 string(JSON subjson GET "${json}" ${member})
564 # JSON object -> YAML dictionary
569 # JSON array -> YAML list
571 string(JSON arraylength LENGTH "${subjson}")
576 math(EXPR arraystop "${arraylength} - 1")
578 string(JSON item GET "${json}" ${member} ${i})
581 string(JSON length ERROR_VARIABLE ignore LENGTH "${item}")
587 set(${yaml} "${${yaml}}${indent_${level}} - ${indent_yaml}\n")
589 set(${yaml} "${${yaml}}${indent_${level}} - ${item}\n")
594 # JSON string maps to multiple YAML types:
595 # - with unexpanded generator expressions: save as YAML comment
596 # - if it matches the special prefix: convert to YAML list
597 # - otherwise: save as YAML scalar
600 string(SUBSTRING ${indent_${level}} 1 -1 short_indent)
602 elseif(subjson MATCHES "^@YAML-LIST@")
603 # List-as-string: convert to list
611 set(${yaml} "${${yaml}}${indent_${level}} - ${item}\n")
619 # Other JSON data type -> YAML scalar, as-is