mirror of
https://github.com/AdaCore/gpr.git
synced 2026-02-12 12:58:39 -08:00
* move the python module to a separate folder from metadata * adjust a bit the phrasing in conf.py * split attributes doc generation from the doc build * fix gprdoc --display default value * output of gprdoc is now put in the build directory * document attributes inheritance * fix index descriptions * gprdoc test now outputs only differences between expected doc and commited one. TN: V324-004 Change-Id: Id4c152b189a20a53f2df653328ac1da4cd3ec4e7
151 lines
4.2 KiB
Python
151 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from docgen.conf import attribute_key_value_translation
|
|
|
|
|
|
class obj_attribute:
|
|
def __init__(self, package, name, descr, defi):
|
|
self.package = package
|
|
self.name = name
|
|
self.descr = descr
|
|
self.defi = defi
|
|
if self.defi["value"] == "LIST" and self.defi["value_is_set"]:
|
|
self.defi["value"] = "SET"
|
|
|
|
def get_name(self):
|
|
return self.name
|
|
|
|
def get_descr(self):
|
|
return self.descr
|
|
|
|
def get_def(self):
|
|
return self.defi
|
|
|
|
def get_def_str(self):
|
|
def append(field):
|
|
val = attribute_key_value_translation[field, self.defi[field]]
|
|
if val != "":
|
|
def_str.append(val)
|
|
|
|
def_str = []
|
|
|
|
append("value")
|
|
|
|
if self.defi["value"] == "SET":
|
|
append("value_case_sensitive")
|
|
|
|
append("index_type")
|
|
append("builtin")
|
|
append("index_optional")
|
|
append("config_concatenable")
|
|
if self.package == "Project_Level":
|
|
append("inherit_from_extended")
|
|
|
|
return ", ".join(def_str)
|
|
|
|
|
|
class obj_category:
|
|
def __init__(self, name, to_display):
|
|
self.name = name
|
|
self.to_display = to_display
|
|
|
|
def get_name(self):
|
|
return self.name
|
|
|
|
def get_to_display(self):
|
|
return self.to_display
|
|
|
|
|
|
class obj_package:
|
|
def __init__(self, name, descr, to_display):
|
|
self.name = name
|
|
self.descr = descr
|
|
self.to_display = to_display
|
|
|
|
def get_name(self):
|
|
return self.name
|
|
|
|
def get_descr(self):
|
|
return self.descr
|
|
|
|
def get_to_display(self):
|
|
return self.to_display
|
|
|
|
|
|
class attribute_dict:
|
|
def __init__(self):
|
|
self.attributes = {"attributes": []}
|
|
|
|
def generator(self):
|
|
for a in self.attributes["attributes"]:
|
|
yield a["attribute_info"]
|
|
|
|
def __attributes_exists__(self, a_info):
|
|
a_list = [a["attribute_info"].get_name() for a in self.attributes["attributes"]]
|
|
if a_info.get_name() in a_list:
|
|
return True
|
|
return False
|
|
|
|
def add_attributes(self, a_info):
|
|
if not self.__attributes_exists__(a_info):
|
|
self.attributes["attributes"].append({"attribute_info": a_info})
|
|
|
|
def add_hierarchy(self, a_info):
|
|
self.add_attributes(a_info)
|
|
|
|
|
|
class category_dict:
|
|
def __init__(self):
|
|
self.categories = {"categories": []}
|
|
|
|
def generator(self):
|
|
for c in self.categories["categories"]:
|
|
a = c["attributes"].generator()
|
|
yield c["category_info"], a
|
|
|
|
def __category_exists__(self, c_info):
|
|
c_list = [c["category_info"].get_name() for c in self.categories["categories"]]
|
|
if c_info.get_name() in c_list:
|
|
return True
|
|
return False
|
|
|
|
def add_category(self, c_info):
|
|
if not self.__category_exists__(c_info):
|
|
self.categories["categories"].append({"category_info": c_info})
|
|
|
|
def add_hierarchy(self, c_info, a_info):
|
|
self.add_category(c_info)
|
|
for c in self.categories["categories"]:
|
|
if c["category_info"].get_name() == c_info.get_name():
|
|
if "attributes" not in c:
|
|
c["attributes"] = attribute_dict()
|
|
c["attributes"].add_hierarchy(a_info)
|
|
|
|
|
|
class package_dict:
|
|
def __init__(self):
|
|
self.packages = {"packages": []}
|
|
|
|
def generator(self):
|
|
for p in self.packages["packages"]:
|
|
c = p["categories"].generator()
|
|
yield p["package_info"], c
|
|
|
|
def __package_exists__(self, p_info):
|
|
plist = [p["package_info"].get_name() for p in self.packages["packages"]]
|
|
if p_info.get_name() in plist:
|
|
return True
|
|
return False
|
|
|
|
def add_package(self, p_info):
|
|
if not self.__package_exists__(p_info):
|
|
self.packages["packages"].append({"package_info": p_info})
|
|
|
|
def add_hierarchy(self, p_info, c_info, a_info):
|
|
self.add_package(p_info)
|
|
for p in self.packages["packages"]:
|
|
if p["package_info"].get_name() == p_info.get_name():
|
|
if "categories" not in p:
|
|
p["categories"] = category_dict()
|
|
p["categories"].add_hierarchy(c_info, a_info)
|