summaryrefslogtreecommitdiff
path: root/src/sexparse/functions.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sexparse/functions.py')
-rw-r--r--src/sexparse/functions.py36
1 files changed, 35 insertions, 1 deletions
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 = "<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