|  | #!/usr/bin/env python3 | 
|  | # -*- coding: utf-8 -*- | 
|  | # | 
|  | # Copyright (C) 2017-2020  The Project X-Ray Authors. | 
|  | # | 
|  | # Use of this source code is governed by a ISC-style | 
|  | # license that can be found in the LICENSE file or at | 
|  | # https://opensource.org/licenses/ISC | 
|  | # | 
|  | # SPDX-License-Identifier: ISC | 
|  | import io | 
|  | import re | 
|  | import yaml | 
|  | import json | 
|  | import unittest | 
|  |  | 
|  | from utils import xjson | 
|  |  | 
|  |  | 
|  | def load(f): | 
|  | data = f.read() | 
|  | if isinstance(data, bytes): | 
|  | data = data.decode('utf-8') | 
|  | # Strip out of !<tags> | 
|  | data = re.sub("!<[^>]*>", "", data) | 
|  | return yaml.safe_load(io.StringIO(data)) | 
|  |  | 
|  |  | 
|  | def tojson(f): | 
|  | d = load(f) | 
|  | o = io.StringIO() | 
|  | xjson.pprint(o, d) | 
|  | return o.getvalue() | 
|  |  | 
|  |  | 
|  | class XYamlTest(unittest.TestCase): | 
|  | def test(self): | 
|  | s = io.StringIO( | 
|  | """\ | 
|  | !<xilinx/xc7series/part> | 
|  | idcode: 0x362d093 | 
|  | global_clock_regions: | 
|  | top: !<xilinx/xc7series/global_clock_region> | 
|  | rows: | 
|  | 0: !<xilinx/xc7series/row> | 
|  | configuration_buses: | 
|  | CLB_IO_CLK: !<xilinx/xc7series/configuration_bus> | 
|  | configuration_columns: | 
|  | 0: !<xilinx/xc7series/configuration_column> | 
|  | frame_count: 42 | 
|  | """) | 
|  | djson = tojson(s) | 
|  | self.assertMultiLineEqual( | 
|  | djson, """\ | 
|  | { | 
|  | "global_clock_regions": { | 
|  | "top": { | 
|  | "rows": { | 
|  | "0": { | 
|  | "configuration_buses": { | 
|  | "CLB_IO_CLK": { | 
|  | "configuration_columns": { | 
|  | "0": { | 
|  | "frame_count": 42 | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | }, | 
|  | "idcode": 56807571 | 
|  | }""") | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | import sys | 
|  | if len(sys.argv) == 1: | 
|  | unittest.main() | 
|  | else: | 
|  | assert len(sys.argv) == 2 | 
|  | print(tojson(open(sys.argv[1]))) |