aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py')
-rwxr-xr-xtools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/tools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py b/tools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py
new file mode 100755
index 0000000..c72133a
--- /dev/null
+++ b/tools/addon-sdk-1.12/python-lib/cuddlefish/docs/documentationitem.py
@@ -0,0 +1,124 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import sys, os, re
+
+class DocumentationItemInfo(object):
+ def __init__(self, env_root, md_path, filename):
+ self.env_root = env_root
+ # full path to MD file, without filename
+ self.source_path = md_path
+ # MD filename
+ self.source_filename = filename
+
+ def env_root(self):
+ return self.env_root
+
+ def source_path(self):
+ return self.source_path
+
+ def source_filename(self):
+ return self.source_filename
+
+ def base_filename(self):
+ return self.source_filename[:-len(".md")]
+
+ def source_path_and_filename(self):
+ return os.sep.join([self.source_path, self.source_filename])
+
+ def source_path_relative_from_env_root(self):
+ return self.source_path[len(self.env_root) + 1:]
+
+class DevGuideItemInfo(DocumentationItemInfo):
+ def __init__(self, env_root, devguide_root, md_path, filename):
+ DocumentationItemInfo.__init__(self, env_root, md_path, filename)
+ self.devguide_root = devguide_root
+
+ def source_path_relative_from_devguide_root(self):
+ return self.source_path[len(self.devguide_root) + 1:]
+
+ def destination_path(self):
+ root_pieces = self.devguide_root.split(os.sep)
+ root_pieces[-1] = "dev-guide"
+ return os.sep.join([os.sep.join(root_pieces), self.source_path_relative_from_devguide_root()])
+
+class ModuleInfo(DocumentationItemInfo):
+ def __init__(self, env_root, module_root, md_path, filename):
+ DocumentationItemInfo.__init__(self, env_root, md_path, filename)
+ self.module_root = module_root
+
+ def js_module_path(self):
+ return os.path.join(self.env_root, "lib", self.source_path_relative_from_module_root(), self.source_filename[:-len(".md")] + ".js")
+
+ def source_path_relative_from_module_root(self):
+ return self.source_path[len(self.module_root) + 1:]
+
+ def destination_path(self):
+ if self.level() == "third-party":
+ return os.sep.join([self.env_root, "doc", "modules", "packages"])
+ root_pieces = self.module_root.split(os.sep)
+ root_pieces[-1] = "modules"
+ relative_pieces = self.source_path_relative_from_module_root().split(os.sep)
+ return os.sep.join(root_pieces + relative_pieces)
+
+ def relative_url(self):
+ if self.level() == "third-party":
+ relative_pieces = ["packages"]
+ else:
+ relative_pieces = self.source_path_relative_from_module_root().split(os.sep)
+ return "/".join(relative_pieces) + "/" + self.base_filename() + ".html"
+
+ def name(self):
+ if os.sep.join([self.module_root, "sdk"]) == self.source_path or self.level() == "third-party":
+ return self.source_filename[:-3]
+ else:
+ path_from_root_pieces = self.source_path_relative_from_module_root().split(os.sep)
+ return "/".join(["/".join(path_from_root_pieces[1:]), self.source_filename[:-len(".md")]])
+
+ def level(self):
+ if self.source_path_relative_from_env_root().startswith("packages"):
+ return "third-party"
+ else:
+ if os.sep.join([self.module_root, "sdk"]) == self.source_path:
+ return "high"
+ else:
+ return "low"
+
+def get_modules_in_package(env_root, package_docs_dir, module_list, ignore_files_in_root):
+ for (dirpath, dirnames, filenames) in os.walk(package_docs_dir):
+ for filename in filenames:
+ # ignore files in the root
+ if ignore_files_in_root and package_docs_dir == dirpath:
+ continue
+ if filename.endswith(".md"):
+ module_list.append(ModuleInfo(env_root, package_docs_dir, dirpath, filename))
+
+def get_module_list(env_root):
+ module_list = []
+ # get the built-in modules
+ module_root = os.sep.join([env_root, "doc", "module-source"])
+ get_modules_in_package(env_root, module_root, module_list, True)
+ # get the third-party modules
+ packages_root = os.sep.join([env_root, "packages"])
+ if os.path.exists(packages_root):
+ for entry in os.listdir(packages_root):
+ if os.path.isdir(os.sep.join([packages_root, entry])):
+ package_docs = os.sep.join([packages_root, entry, "docs"])
+ if os.path.exists(package_docs):
+ get_modules_in_package(env_root, package_docs, module_list, False)
+ module_list.sort(key=lambda x: x.name())
+ return module_list
+
+def get_devguide_list(env_root):
+ devguide_list = []
+ devguide_root = os.sep.join([env_root, "doc", "dev-guide-source"])
+ for (dirpath, dirnames, filenames) in os.walk(devguide_root):
+ for filename in filenames:
+ if filename.endswith(".md"):
+ devguide_list.append(DevGuideItemInfo(env_root, devguide_root, dirpath, filename))
+ return devguide_list
+
+if __name__ == "__main__":
+ module_list = get_module_list(sys.argv[1])
+ print [module_info.name for module_info in module_list]