From 186634b8f9039f09b30b24b3714329e17e40f68b Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Thu, 8 May 2014 23:43:58 -0400 Subject: Improved type-casting, parsing, etc --- src/sexparse/functions.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/sexparse/functions.py') diff --git a/src/sexparse/functions.py b/src/sexparse/functions.py index 08ba5d9..22aae50 100644 --- a/src/sexparse/functions.py +++ b/src/sexparse/functions.py @@ -20,13 +20,47 @@ #ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT #(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import sexparse +def sexdump(obj, col_width=16, truncate=True): + width = col_width + trunc = "" + if not isinstance(obj, sexparse.SexConfigBase): + return None + + for k, v in obj: + retainer = v + if truncate: + if len(repr(v)) > width: + v = repr(v)[0:width - len(trunc)] + trunc + + show_type = type(retainer) + sformat = "{:>{width}} | {:<{width}} | {:<{width}}" + sformat_t = (k, v, show_type) + + try: + if obj.status: + status = "Enabled" if convert_type(obj.is_enabled(k)) else "Disabled" + sformat += " | {:>{width}}" + sformat_t = (k, v, status, show_type) + except AttributeError: + pass + + if isinstance(v, list) or isinstance(v, tuple): + show_type = [ type(x) for x in retainer ] + + if isinstance(v, dict): + show_type = [ type(x) for x in retainer.iteritems() ] + + print(sformat.format(*sformat_t, width=col_width)) + def convert_type(s): + for cast in (int, float): try: return cast(s) except ValueError: pass - return s \ No newline at end of file + return s -- cgit