From 3f46ab24c66f5c3129277a751f9febd0e7e02505 Mon Sep 17 00:00:00 2001 From: enkore Date: Sat, 23 Feb 2013 21:05:27 +0100 Subject: [PATCH] flying-sheep via GS --- README.md | 8 ++++++++ i3pystatus/mkdocs.py | 43 ++++++++++--------------------------------- 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 8859b47..8e910d0 100644 --- a/README.md +++ b/README.md @@ -37,15 +37,19 @@ as you like. ### batterychecker + This class uses the /proc/acpi/battery interface to check for the battery status + * battery_ident — (default: BAT0) ### clock + This class shows a clock + * format — stftime format string ### mail @@ -57,9 +61,11 @@ This class shows a clock ### modsde + This class returns i3status parsable output of the number of unread posts in any bookmark in the mods.de forums. + * format — Use {unread} as the formatter for number of unread posts (default: {unread} new posts in bookmarks) * offset — subtract number of posts before output * color — (default: #7181fe) @@ -68,8 +74,10 @@ unread posts in any bookmark in the mods.de forums. ### regex + Simple regex file watcher + * format — format string used for output (default: {0}) * regex — (required) * file — file to search for regex matches diff --git a/i3pystatus/mkdocs.py b/i3pystatus/mkdocs.py index 97ba1de..08a31b8 100755 --- a/i3pystatus/mkdocs.py +++ b/i3pystatus/mkdocs.py @@ -4,6 +4,7 @@ import sys import io import pkgutil from collections import namedtuple +import textwrap import i3pystatus @@ -15,31 +16,6 @@ MODULE_FORMAT = """ {settings}\n""" -def trim(docstring): - if not docstring: - return '' - # Convert tabs to spaces (following the normal Python rules) - # and split into a list of lines: - lines = docstring.expandtabs().splitlines() - # Determine minimum indentation (first line doesn't count): - indent = sys.maxsize - for line in lines[1:]: - stripped = line.lstrip() - if stripped: - indent = min(indent, len(line) - len(stripped)) - # Remove indentation (first line is special): - trimmed = [lines[0].strip()] - if indent < sys.maxsize: - for line in lines[1:]: - trimmed.append(line[indent:].rstrip()) - # Strip off trailing and leading blank lines: - while trimmed and not trimmed[-1]: - trimmed.pop() - while trimmed and not trimmed[0]: - trimmed.pop(0) - # Return a single string: - return '\n'.join(trimmed) - class Module: name = "" doc = "" @@ -53,11 +29,12 @@ class Module: else: self.name = "{module}.{cls}".format(module=module_name, cls=self.cls.__name__) - if hasattr(self.cls, "__doc__"): + if self.cls.__doc__ is not None: self.doc = self.cls.__doc__ - elif hasattr(module, "__doc__"): + elif module.__doc__ is not None: self.doc = module.__doc__ - + else: + self.doc = "" self.get_settings() def get_settings(self): @@ -65,12 +42,12 @@ class Module: self.settings.append(Setting(self, setting)) def format_settings(self): - return "\n".join(map(lambda setting: setting.format(), self.settings)) + return "\n".join(map(str, self.settings)) - def format(self): + def __str__(self): return MODULE_FORMAT.format( name=self.name, - doc=trim(self.doc), + doc=textwrap.dedent(self.doc), settings=self.format_settings(), ) @@ -92,7 +69,7 @@ class Setting: elif hasattr(mod.cls, self.name): self.default = getattr(mod.cls, self.name) - def format(self): + def __str__(self): attrs = [] if self.required: attrs.append("required") @@ -134,6 +111,6 @@ def get_all(): return sorted(mods, key=lambda module: module.name) with open("template.md", "r") as template: - moddoc = "".join(map(lambda module: module.format(), get_all())) + moddoc = "".join(map(str, get_all())) print(template.read().replace("!!module_doc!!", moddoc))