--- /dev/null
+## @file\r
+# This file is used to define the printer for Bios layout.\r
+#\r
+# Copyright (c) 2021-, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+##\r
+from utils.FmmtLogger import FmmtLogger as logger\r
+\r
+def GetFormatter(layout_format: str):\r
+ if layout_format == 'json':\r
+ return JsonFormatter()\r
+ elif layout_format == 'yaml':\r
+ return YamlFormatter()\r
+ elif layout_format == 'html':\r
+ return HtmlFormatter()\r
+ else:\r
+ return TxtFormatter()\r
+\r
+class Formatter(object):\r
+ def dump(self, layoutdict, layoutlist, outputfile: str=None) -> None:\r
+ raise NotImplemented\r
+\r
+class JsonFormatter(Formatter):\r
+ def dump(self,layoutdict: dict, layoutlist: list, outputfile: str=None) -> None:\r
+ try:\r
+ import json\r
+ except:\r
+ TxtFormatter().dump(layoutdict, layoutlist, outputfile)\r
+ return\r
+ print(outputfile)\r
+ if outputfile:\r
+ with open(outputfile,"w") as fw:\r
+ json.dump(layoutdict, fw, indent=2)\r
+ else:\r
+ print(json.dumps(layoutdict,indent=2))\r
+\r
+class TxtFormatter(Formatter):\r
+ def LogPrint(self,layoutlist: list) -> None:\r
+ for item in layoutlist:\r
+ print(item)\r
+ print('\n')\r
+\r
+ def dump(self,layoutdict: dict, layoutlist: list, outputfile: str=None) -> None:\r
+ logger.info('Binary Layout Info is saved in {} file.'.format(outputfile))\r
+ with open(outputfile, "w") as f:\r
+ for item in layoutlist:\r
+ f.writelines(item + '\n')\r
+\r
+class YamlFormatter(Formatter):\r
+ def dump(self,layoutdict, layoutlist, outputfile = None):\r
+ TxtFormatter().dump(layoutdict, layoutlist, outputfile)\r
+\r
+class HtmlFormatter(Formatter):\r
+ def dump(self,layoutdict, layoutlist, outputfile = None):\r
+ TxtFormatter().dump(layoutdict, layoutlist, outputfile)\r
\ No newline at end of file