[pve-devel] [RFC pve-common 2/4] JSONSchema::generate_typetext: raw typetext support

Wolfgang Bumiller w.bumiller at proxmox.com
Mon Sep 21 12:11:06 CEST 2015


Instead of a format_description which ends up in the
documentation as 'key=<$desc>', a typetext can now be used
for an as-is string. (Eg. for when the key isn't required,
like for volumes in mountpoints, typetext can be set to
[volume=]volume)
---
 src/PVE/JSONSchema.pm | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
index 8725949..650bf18 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -1237,7 +1237,8 @@ sub generate_typetext {
     my $typetext = '';
     my (@optional, @required);
     foreach my $key (sort keys %$schema) {
-	next if !$schema->{$key}->{format_description};
+	next if !$schema->{$key}->{format_description} &&
+	        !$schema->{$key}->{typetext};
 	if ($schema->{$key}->{optional}) {
 	    push @optional, $key;
 	} else {
@@ -1245,15 +1246,23 @@ sub generate_typetext {
 	}
     }
     my ($pre, $post) = ('', '');
+    my $add = sub {
+	my ($key) = @_;
+	if (my $desc = $schema->{$key}->{format_description}) {
+	    $typetext .= "$pre$key=<$desc>$post";
+	} elsif (my $text = $schema->{$key}->{typetext}) {
+	    $typetext .= "$pre$text$post";
+	} else {
+	    die "internal error: neither format_description nor typetext found";
+	}
+    };
     foreach my $key (@required) {
-	my $desc = $schema->{$key}->{format_description};
-	$typetext .= "$pre$key=<$desc>$post";
+	&$add($key);
 	$pre = ', ';
     }
     $pre = ' [,' if $pre;
     foreach my $key (@optional) {
-	my $desc = $schema->{$key}->{format_description};
-	$typetext .= "$pre$key=<$desc>$post";
+	&$add($key);
 	$pre = ' [,';
 	$post = ']';
     }
-- 
2.1.4




More information about the pve-devel mailing list