changeset 7:8add0564ad6a

Added functions for converting structs to string representations.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 21 Sep 2015 14:50:51 +0200
parents c3c95b7a1a1c
children 67ab7fd8054c
files struct2string.m struct2syntax.m
diffstat 2 files changed, 50 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
diff -r c3c95b7a1a1c -r 8add0564ad6a struct2string.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/struct2string.m	Mon Sep 21 14:50:51 2015 +0200
@@ -0,0 +1,25 @@
+function str = struct2string(s)
+    fn = fieldnames(s);
+
+    if length(fn) == 0
+        str = '{}';
+        return
+    end
+
+    str = sprintf('{');
+
+    for i = 1:length(fn) - 1
+        value = s.(fn{i});
+        str = [str sprintf('%s: %s, ',fn{i}, valueString(value))];
+    end
+    value = s.(fn{end});
+    str = [str sprintf('%s: %s}',fn{end}, valueString(value))];
+end
+
+function str  = valueString(value)
+    if ischar(value)
+        str = ['''' value ''''];
+    else
+        str = num2str(value);
+    end
+end
\ No newline at end of file
diff -r c3c95b7a1a1c -r 8add0564ad6a struct2syntax.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/struct2syntax.m	Mon Sep 21 14:50:51 2015 +0200
@@ -0,0 +1,25 @@
+function str = struct2syntax(s)
+    fn = fieldnames(s);
+
+    if length(fn) == 0
+        str = 'struct()';
+        return
+    end
+
+    str = sprintf('struct(');
+
+    for i = 1:length(fn) - 1
+        value = s.(fn{i});
+        str = [str sprintf('''%s'', %s, ',fn{i}, valueString(value))];
+    end
+    value = s.(fn{end});
+    str = [str sprintf('''%s'', %s)',fn{end}, valueString(value))];
+end
+
+function str  = valueString(value)
+    if ischar(value)
+        str = ['''' value ''''];
+    else
+        str = num2str(value);
+    end
+end
\ No newline at end of file