-
Expand all
-
Collapse all
+
+ Expand all
+ Collapse all
{%- endif -%}
@@ -95,6 +56,7 @@
{{ title }}
-->
-
+
+
diff --git a/docgen/json/templates/cyclonedx/content.html b/docgen/json/templates/cyclonedx/content.html
index 53bc8f7f..ecfc2362 100644
--- a/docgen/json/templates/cyclonedx/content.html
+++ b/docgen/json/templates/cyclonedx/content.html
@@ -17,17 +17,17 @@
{# Display type #}
{%- if not schema is combining -%}
-
Type: {{ type_name }}
+
Type: {{ type_name }}
{%- endif -%}
{%- if schema.format -%}
-
Format: {{ schema.format }}
+
Format: {{ schema.format }}
{%- endif -%}
{# Display default #}
{%- set default_value = schema.default_value -%}
{%- if default_value -%}
- {{ " " }}
Default: {{ default_value }}
+ {{ " " }}
Default: {{ default_value }}
{%- endif -%}
@@ -42,7 +42,7 @@
{{ content(schema.refers_to_merged, True) }}
{%- else -%}
{%- if schema.explicit_no_additional_properties -%}
- {{ " " }}
No Additional Properties
+ {{ " " }}
No Additional Properties
{%- endif -%}
{# Combining: allOf, anyOf, oneOf, not #}
@@ -64,7 +64,7 @@
Must be one of:
-
+
Name
Description
diff --git a/docgen/json/templates/cyclonedx/schema_doc.css b/docgen/json/templates/cyclonedx/schema_doc.css
index ecf2b5d2..cb73114f 100644
--- a/docgen/json/templates/cyclonedx/schema_doc.css
+++ b/docgen/json/templates/cyclonedx/schema_doc.css
@@ -5,19 +5,22 @@ body {
padding: 0;
}
.navbar {
- height: 90px;
+ min-height: 90px;
padding: 0;
}
-.navbar-inverse .navbar-nav>.open>a,
-.navbar-inverse .navbar-nav>.open>a:focus,
-.navbar-inverse .navbar-nav>.open>a:hover,
-.navbar-inverse {
+.navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important;
+}
+.navbar-dark .navbar-nav>.open>a,
+.navbar-dark .navbar-nav>.open>a:focus,
+.navbar-dark .navbar-nav>.open>a:hover,
+.navbar-dark {
background-image: linear-gradient(269.12deg, rgba(232, 52, 82, 1) 0%, rgba(136, 38, 125, 1) 51.26%, rgba(52, 57, 175, 1) 100%);
}
-.navbar-brand, .navbar-fixed-top {
+.navbar-brand, .fixed-top {
padding: 0 30px 0 30px;
}
-.navbar-inverse .navbar-nav>li>a {
+.navbar-dark .navbar-nav>li>a {
color: #ffffff;
}
.site-header__logo img {
@@ -26,8 +29,9 @@ body {
.version-selector {
font-size: 1.2rem
}
-.table .thead-dark th {
+.table .table-dark th {
background-color: #323550;
+ color: #ffffff;
}
.container {
margin-right: auto;
@@ -73,15 +77,24 @@ ul .dropdown-menu li {
}
.card {
border-radius: 0;
+ --bs-card-border-color: rgba(0, 0, 0, 0.125);
+}
+.accordion + .accordion .card {
+ margin-top: -1px;
}
.card-header {
padding: 0;
}
-.card-header .fa {
+.card-header .btn .bi {
+ display: inline-block;
transition: .3s transform ease-in-out;
+ -webkit-text-stroke: 2px;
+}
+.card-header .btn[aria-expanded="true"] .bi {
transform: rotate(90deg);
}
-.card-header .collapsed .fa {
+.card-header .btn[aria-expanded="false"] .bi,
+.card-header .btn.collapsed .bi {
transform: rotate(0deg);
}
.btn.btn-link {
@@ -136,7 +149,7 @@ ul .dropdown-menu li {
content: '- Read Less';
}
.badge {
- color: #222222;
+ color: #222222 !important;
padding: .1em .4em .2em;
margin-right: .2em;
font-weight: normal;
@@ -144,44 +157,47 @@ ul .dropdown-menu li {
border-radius: 0;
}
.badge.required-property {
- background-color: rgba(255,137,29,0.3);
+ background-color: rgba(255,137,29,0.3) !important;
border: 1px solid #FF7F0B;
}
.badge.value-type {
- background-color: rgba(174,206,229,0.3);
+ background-color: rgba(174,206,229,0.3) !important;
border: 1px solid #5C9CCB;
}
.badge.default-value {
- background-color: rgba(175,228,191,0.3);
+ background-color: rgba(175,228,191,0.3) !important;
border: 1px solid #73D08F;
}
.badge.example {
- background-color: rgba(235,202,255,0.3);
+ background-color: rgba(235,202,255,0.3) !important;
border: 1px solid #DA9FFF;
}
.badge.deprecated-property {
- background-color: rgba(255,95,95,0.3);
+ background-color: rgba(255,95,95,0.3) !important;
border: 1px solid #FF3333;
}
.badge.no-additional {
- background-color: rgba(255,82,174,0.3);
+ background-color: rgba(255,82,174,0.3) !important;
border: 1px solid #FF33A0;
}
.badge.pattern-property {
- background-color: rgba(235,229,168,0.3);
+ background-color: rgba(235,229,168,0.3) !important;
border: 1px solid #FFEA1C;
}
.accordion div.card:only-child {
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.examples {
- padding: 1rem !important;
+ padding: 0 !important;
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
}
.examples pre {
margin-bottom: 0;
+ padding: 1rem 1.5rem;
}
.highlight.jumbotron {
- padding: 1rem !important;
+ padding: 1rem 1.5rem !important;
}
.generated-by-footer {
margin-top: 1em;
diff --git a/docgen/json/templates/cyclonedx/schema_doc.js b/docgen/json/templates/cyclonedx/schema_doc.js
index e03ce946..93f1669e 100644
--- a/docgen/json/templates/cyclonedx/schema_doc.js
+++ b/docgen/json/templates/cyclonedx/schema_doc.js
@@ -1,15 +1,19 @@
-$(document).on('click', 'a[href^="#"]', function(event) {
- event.preventDefault();
- history.pushState({}, '', this.href);
+document.addEventListener('click', function(event) {
+ var anchor = event.target.closest('a[href^="#"]');
+ if (anchor) {
+ event.preventDefault();
+ history.pushState({}, '', anchor.href);
+ }
});
function flashElement(elementId) {
- // $( "#" + elementId ).fadeOut(100).fadeIn(200).fadeOut(100).fadeIn(500);
- myElement = document.getElementById(elementId);
- myElement.classList.add("jsfh-animated-property");
- setTimeout(function() {
- myElement.classList.remove("jsfh-animated-property");
- }, 1000);
+ var myElement = document.getElementById(elementId);
+ if (myElement) {
+ myElement.classList.add("jsfh-animated-property");
+ setTimeout(function() {
+ myElement.classList.remove("jsfh-animated-property");
+ }, 1000);
+ }
}
function setAnchor(anchorLinkDestination) {
@@ -19,7 +23,7 @@ function setAnchor(anchorLinkDestination) {
function anchorOnLoad() {
// Added to onload on body, checks if there is an anchor link and if so, expand
- let linkTarget = decodeURIComponent(window.location.hash.split("?")[0].split("&")[0]);
+ var linkTarget = decodeURIComponent(window.location.hash.split("?")[0].split("&")[0]);
if (linkTarget[0] === "#") {
linkTarget = linkTarget.substr(1);
}
@@ -30,31 +34,35 @@ function anchorOnLoad() {
}
function anchorLink(linkTarget) {
- const target = $( "#" + linkTarget );
- // Find the targeted element to expand and all its parents that can be expanded
- target.parents().addBack().filter(".collapse:not(.show), .tab-pane, [role='tab']").each(
- function(index) {
- if($( this ).hasClass("collapse")) {
- $( this ).collapse("show");
- } else if ($( this ).hasClass("tab-pane")) {
- // We have the pane and not the tab itself, find the tab
- const tabToShow = $( "a[href='#" + $( this ).attr("id") + "']" );
- if (tabToShow) {
- tabToShow.tab("show");
- }
- } else if ($( this ).attr("role") === "tab") {
- // The tab is not a parent of underlying elements, the tab pane is
- // However, it can still be linked directly
- $( this ).tab("show");
+ var target = document.getElementById(linkTarget);
+ if (!target) return;
+
+ // Find the targeted element and all its parents that can be expanded
+ var element = target;
+ while (element) {
+ // Expand collapsed sections
+ if (element.classList.contains("collapse") && !element.classList.contains("show")) {
+ var bsCollapse = new bootstrap.Collapse(element, { toggle: true });
+ }
+ // Activate tab panes
+ if (element.classList.contains("tab-pane")) {
+ var tabTrigger = document.querySelector('a[href="#' + element.id + '"]');
+ if (tabTrigger) {
+ var bsTab = new bootstrap.Tab(tabTrigger);
+ bsTab.show();
}
}
- );
+ // Handle direct tab links
+ if (element.getAttribute("role") === "tab") {
+ var bsTab = new bootstrap.Tab(element);
+ bsTab.show();
+ }
+ element = element.parentElement;
+ }
// Wait a little so the user has time to see the page scroll
- // Or maybe it is to be sure everything is expanded before scrolling and I was not able to bind to the bootstrap
- // events in a way that works all the time, we may never know
setTimeout(function() {
- let targetElement = document.getElementById(linkTarget);
+ var targetElement = document.getElementById(linkTarget);
if (targetElement) {
targetElement.scrollIntoView({ block: "center", behavior:"smooth" });
// Flash the element so that the user notices where the link points to
diff --git a/docgen/json/templates/cyclonedx/schema_doc.min.js b/docgen/json/templates/cyclonedx/schema_doc.min.js
index 0c58a70e..a8756dcb 100644
--- a/docgen/json/templates/cyclonedx/schema_doc.min.js
+++ b/docgen/json/templates/cyclonedx/schema_doc.min.js
@@ -1 +1,9 @@
-function flashElement(t){(myElement=document.getElementById(t)).classList.add("jsfh-animated-property"),setTimeout(function(){myElement.classList.remove("jsfh-animated-property")},1e3)}function setAnchor(t){history.pushState({},"",t)}function anchorOnLoad(){let t=decodeURIComponent(window.location.hash.split("?")[0].split("&")[0]);"#"===t[0]&&(t=t.substr(1)),t.length>0&&anchorLink(t)}function anchorLink(t){let e=$("#"+t);e.parents().addBack().filter(".collapse:not(.show), .tab-pane, [role='tab']").each(function(t){if($(this).hasClass("collapse"))$(this).collapse("show");else if($(this).hasClass("tab-pane")){let e=$("a[href='#"+$(this).attr("id")+"']");e&&e.tab("show")}else"tab"===$(this).attr("role")&&$(this).tab("show")}),setTimeout(function(){let e=document.getElementById(t);e&&(e.scrollIntoView({block:"center",behavior:"smooth"}),setTimeout(function(){flashElement(t)},500))},1e3)}$(document).on("click",'a[href^="#"]',function(t){t.preventDefault(),history.pushState({},"",this.href)});
\ No newline at end of file
+document.addEventListener('click',function(event){var anchor=event.target.closest('a[href^="#"]');if(anchor){event.preventDefault();history.pushState({},'',anchor.href);}});function flashElement(elementId){var myElement=document.getElementById(elementId);if(myElement){myElement.classList.add("jsfh-animated-property");setTimeout(function(){myElement.classList.remove("jsfh-animated-property");},1000);}}
+function setAnchor(anchorLinkDestination){history.pushState({},'',anchorLinkDestination);}
+function anchorOnLoad(){var linkTarget=decodeURIComponent(window.location.hash.split("?")[0].split("&")[0]);if(linkTarget[0]==="#"){linkTarget=linkTarget.substr(1);}
+if(linkTarget.length>0){anchorLink(linkTarget);}}
+function anchorLink(linkTarget){var target=document.getElementById(linkTarget);if(!target)return;var element=target;while(element){if(element.classList.contains("collapse")&&!element.classList.contains("show")){var bsCollapse=new bootstrap.Collapse(element,{toggle:true});}
+if(element.classList.contains("tab-pane")){var tabTrigger=document.querySelector('a[href="#'+element.id+'"]');if(tabTrigger){var bsTab=new bootstrap.Tab(tabTrigger);bsTab.show();}}
+if(element.getAttribute("role")==="tab"){var bsTab=new bootstrap.Tab(element);bsTab.show();}
+element=element.parentElement;}
+setTimeout(function(){var targetElement=document.getElementById(linkTarget);if(targetElement){targetElement.scrollIntoView({block:"center",behavior:"smooth"});setTimeout(function(){flashElement(linkTarget);},500);}},1000);}
\ No newline at end of file
diff --git a/docgen/json/templates/cyclonedx/section_array.html b/docgen/json/templates/cyclonedx/section_array.html
index 15489a4b..14a7fb4a 100644
--- a/docgen/json/templates/cyclonedx/section_array.html
+++ b/docgen/json/templates/cyclonedx/section_array.html
@@ -8,7 +8,7 @@
{{ restriction("All items must be unique", "unique-items", schema.kw_unique_items.html_id) }}
{%- endif -%}
{%- if not schema.array_additional_items -%}
- {{ " " }}No Additional Items
+ {{ " " }}No Additional Items
{%- endif -%}
{%- if schema.array_items_def -%}
Each item of this array must be:
@@ -24,7 +24,7 @@ Tuple Validation
Item at {{ loop.index }} must be:
diff --git a/docgen/json/templates/cyclonedx/section_conditional_subschema.html b/docgen/json/templates/cyclonedx/section_conditional_subschema.html
index e543669d..01ba04d5 100644
--- a/docgen/json/templates/cyclonedx/section_conditional_subschema.html
+++ b/docgen/json/templates/cyclonedx/section_conditional_subschema.html
@@ -7,7 +7,7 @@
{% set tab_id = schema.kw_if.html_id %}
If
@@ -16,7 +16,7 @@
{% set tab_id = schema.kw_then.html_id %}
Then
@@ -26,7 +26,7 @@
{%- set tab_id = schema.kw_else.html_id -%}
Else
diff --git a/docgen/json/templates/cyclonedx/section_description.html b/docgen/json/templates/cyclonedx/section_description.html
index e0cc3fab..e5ecc5f3 100644
--- a/docgen/json/templates/cyclonedx/section_description.html
+++ b/docgen/json/templates/cyclonedx/section_description.html
@@ -8,7 +8,7 @@
{{ description }}
diff --git a/docgen/json/templates/cyclonedx/section_examples.html b/docgen/json/templates/cyclonedx/section_examples.html
index 06f485e9..b2180910 100644
--- a/docgen/json/templates/cyclonedx/section_examples.html
+++ b/docgen/json/templates/cyclonedx/section_examples.html
@@ -6,7 +6,7 @@
{%- set example_id = schema.html_id ~ "_ex" ~ loop.index -%}
{%- set example_is_long = example is not description_short -%}
{%- if example_is_long -%}
-
+
{%- endif -%}
{%- if not examples_as_yaml -%}
diff --git a/docgen/json/templates/cyclonedx/section_properties.html b/docgen/json/templates/cyclonedx/section_properties.html
index 222fd8b6..e07c9a44 100644
--- a/docgen/json/templates/cyclonedx/section_properties.html
+++ b/docgen/json/templates/cyclonedx/section_properties.html
@@ -3,10 +3,10 @@
+
\ No newline at end of file
diff --git a/docgen/json/templates/cyclonedx/tabbed_section.html b/docgen/json/templates/cyclonedx/tabbed_section.html
index 81ea390b..ce3b2dfa 100644
--- a/docgen/json/templates/cyclonedx/tabbed_section.html
+++ b/docgen/json/templates/cyclonedx/tabbed_section.html
@@ -9,7 +9,7 @@
{%- for node in current_node.array_items -%}
{{ node.definition_name or tab_label ~ " " ~ loop.index }}
{%- if node is deprecated -%}
diff --git a/docgen/proto/gen.sh b/docgen/proto/gen.sh
index 871220fc..38b4f38e 100755
--- a/docgen/proto/gen.sh
+++ b/docgen/proto/gen.sh
@@ -24,6 +24,9 @@ SCHEMA_PATH="$(realpath "$THIS_PATH/../../schema")"
DOCS_PATH="$THIS_PATH/docs"
TEMPLATES_PATH="$THIS_PATH/templates"
+# Centralized header injection
+source "$THIS_PATH/../static/inject-header.sh"
+
PROTOC_GEN_DOC_VERSION='1.5.1'
@@ -63,6 +66,8 @@ generate () {
sed -i -e "s/\${quotedTitle}/\"$title\"/g" "$OUT_DIR/$OUT_FILE"
sed -i -e "s/\${title}/$title/g" "$OUT_DIR/$OUT_FILE"
sed -i -e "s/\${version}/$version/g" "$OUT_DIR/$OUT_FILE"
+
+ inject_header "$OUT_DIR/$OUT_FILE" "$version" "proto"
}
diff --git a/docgen/proto/templates/html.tmpl b/docgen/proto/templates/html.tmpl
index 3e679969..24685290 100644
--- a/docgen/proto/templates/html.tmpl
+++ b/docgen/proto/templates/html.tmpl
@@ -22,33 +22,13 @@ https://github.com/pseudomuto/protoc-gen-doc/blob/master/resources/html.tmpl
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
${title}
-
Table of Contents
-
-
-
{{range .Files}}
{{$file_name := .Name}}
{{$file_package := .Package}}
-
-
Package: {{.Package}} Top
-
- {{p .Description}}
{{range .Messages}}
-
{{.LongName}}
- {{p .Description}}
-
- {{if .HasFields}}
-
-
- Field Type Label Description
-
-
- {{range .Fields}}
-
- {{.Name}}
- {{.LongType}}
- {{.Label}}
- {{if (index .Options "deprecated"|default false)}}Deprecated. {{end}}{{.Description}} {{if .DefaultValue}}Default: {{.DefaultValue}}{{end}}
-
- {{end}}
-
-
-
- {{$message := .}}
- {{- range .FieldOptions}}
- {{$option := .}}
- {{if eq . "validator.field" "validate.rules" }}
-
Validated Fields
-
-
-
- Field
- Validations
-
-
-
- {{range $message.FieldsWithOption .}}
-
- {{.Name}}
-
-
- {{range (.Option $option).Rules}}
- {{.Name}}: {{.Value}}
- {{end}}
-
-
-
- {{end}}
-
-
- {{else}}
-
Fields with {{.}} option
-
-
-
- Name
- Option
-
-
-
- {{range $message.FieldsWithOption .}}
-
- {{.Name}}
- {{ printf "%+v" (.Option $option)}}
-
- {{end}}
-
-
- {{end}}
- {{end -}}
- {{end}}
-
- {{if .HasExtensions}}
-
-
-
- Extension Type Base Number Description
-
-
- {{range .Extensions}}
-
- {{.Name}}
- {{.LongType}}
- {{.ContainingLongType}}
- {{.Number}}
- {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
-
- {{end}}
-
-
- {{end}}
+
+
+
+
+
+ {{p .Description}}
+
+ {{if .HasFields}}
+
+
+ Field Type Label Description
+
+
+ {{range .Fields}}
+
+ {{.Name}}
+ {{.LongType}}
+ {{.Label}}
+ {{if (index .Options "deprecated"|default false)}}Deprecated. {{end}}{{.Description}} {{if .DefaultValue}}Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+
+ {{$message := .}}
+ {{- range .FieldOptions}}
+ {{$option := .}}
+ {{if eq . "validator.field" "validate.rules" }}
+
Validated Fields
+
+
+
+ Field
+ Validations
+
+
+
+ {{range $message.FieldsWithOption .}}
+
+ {{.Name}}
+
+
+ {{range (.Option $option).Rules}}
+ {{.Name}}: {{.Value}}
+ {{end}}
+
+
+
+ {{end}}
+
+
+ {{else}}
+
Fields with {{.}} option
+
+
+
+ Name
+ Option
+
+
+
+ {{range $message.FieldsWithOption .}}
+
+ {{.Name}}
+ {{ printf "%+v" (.Option $option)}}
+
+ {{end}}
+
+
+ {{end}}
+ {{end -}}
+ {{end}}
+
+ {{if .HasExtensions}}
+
+
+
+ Extension Type Base Number Description
+
+
+ {{range .Extensions}}
+
+ {{.Name}}
+ {{.LongType}}
+ {{.ContainingLongType}}
+ {{.Number}}
+ {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+ {{end}}
+
+
+
+
{{end}}
{{range .Enums}}
-
{{.LongName}}
- {{p .Description}}
-
-
- Name Number Description
-
-
- {{range .Values}}
-
- {{.Name}}
- {{.Number}}
- {{.Description}}
-
- {{end}}
-
-
+
+
+
+
+
+ {{p .Description}}
+
+
+ Name Number Description
+
+
+ {{range .Values}}
+
+ {{.Name}}
+ {{.Number}}
+ {{.Description}}
+
+ {{end}}
+
+
+
+
+
+
{{end}}
{{if .HasExtensions}}
-
File-level Extensions
-
-
- Extension Type Base Number Description
-
-
- {{range .Extensions}}
-
- {{.Name}}
- {{.LongType}}
- {{.ContainingLongType}}
- {{.Number}}
- {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
-
- {{end}}
-
-
+
+
+
+
+
+
+
+ Extension Type Base Number Description
+
+
+ {{range .Extensions}}
+
+ {{.Name}}
+ {{.LongType}}
+ {{.ContainingLongType}}
+ {{.Number}}
+ {{.Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}}
+
+ {{end}}
+
+
+
+
+
+
{{end}}
{{range .Services}}
-
{{.Name}}
- {{p .Description}}
-
-
- Method Name Request Type Response Type Description
-
-
- {{range .Methods}}
-
- {{.Name}}
- {{.RequestLongType}} {{if .RequestStreaming}} stream{{end}}
- {{.ResponseLongType}} {{if .ResponseStreaming}} stream{{end}}
- {{.Description}}
-
- {{end}}
-
-
-
- {{$service := .}}
- {{- range .MethodOptions}}
- {{$option := .}}
- {{if eq . "google.api.http"}}
-
Methods with HTTP bindings
-
-
-
- Method Name
- Method
- Pattern
- Body
-
-
-
- {{range $service.MethodsWithOption .}}
- {{$name := .Name}}
- {{range (.Option $option).Rules}}
-
- {{$name}}
- {{.Method}}
- {{.Pattern}}
- {{.Body}}
-
- {{end}}
- {{end}}
-
-
- {{else}}
-
Methods with {{.}} option
-
-
-
- Method Name
- Option
-
-
-
- {{range $service.MethodsWithOption .}}
-
- {{.Name}}
- {{ printf "%+v" (.Option $option)}}
-
- {{end}}
-
-
- {{end}}
- {{end -}}
+
+
+
+
+
+ {{p .Description}}
+
+
+ Method Name Request Type Response Type Description
+
+
+ {{range .Methods}}
+
+ {{.Name}}
+ {{.RequestLongType}} {{if .RequestStreaming}} stream{{end}}
+ {{.ResponseLongType}} {{if .ResponseStreaming}} stream{{end}}
+ {{.Description}}
+
+ {{end}}
+
+
+
+ {{$service := .}}
+ {{- range .MethodOptions}}
+ {{$option := .}}
+ {{if eq . "google.api.http"}}
+
Methods with HTTP bindings
+
+
+
+ Method Name
+ Method
+ Pattern
+ Body
+
+
+
+ {{range $service.MethodsWithOption .}}
+ {{$name := .Name}}
+ {{range (.Option $option).Rules}}
+
+ {{$name}}
+ {{.Method}}
+ {{.Pattern}}
+ {{.Body}}
+
+ {{end}}
+ {{end}}
+
+
+ {{else}}
+
Methods with {{.}} option
+
+
+
+ Method Name
+ Option
+
+
+
+ {{range $service.MethodsWithOption .}}
+
+ {{.Name}}
+ {{ printf "%+v" (.Option $option)}}
+
+ {{end}}
+
+
+ {{end}}
+ {{end -}}
+
+
+
+
{{end}}
{{end}}
-
Scalar Value Types
-
-
- .proto Type Notes C++ Java Python Go C# PHP Ruby
-
-
- {{range .Scalars}}
-
- {{.ProtoType}}
- {{.Notes}}
- {{.CppType}}
- {{.JavaType}}
- {{.PythonType}}
- {{.GoType}}
- {{.CSharp}}
- {{.PhpType}}
- {{.RubyType}}
-
- {{end}}
-
-
+
+
+
+
+
+
+
+ .proto Type Notes C++ Java Python Go C# PHP Ruby
+
+
+ {{range .Scalars}}
+
+ {{.ProtoType}}
+ {{.Notes}}
+ {{.CppType}}
+ {{.JavaType}}
+ {{.PythonType}}
+ {{.GoType}}
+ {{.CSharp}}
+ {{.PhpType}}
+ {{.RubyType}}
+
+ {{end}}
+
+
+
+
+
+
-
+
+