Skip to content

Commit ee6c363

Browse files
add a description field for external doc links
1 parent 555b8ba commit ee6c363

File tree

7 files changed

+966
-934
lines changed

7 files changed

+966
-934
lines changed

compiler-rs/clients_schema/src/lib.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ pub trait Documented {
5858
pub trait ExternalDocument {
5959
fn ext_doc_id(&self) -> Option<&str>;
6060
fn ext_doc_url(&self) -> Option<&str>;
61+
fn ext_doc_description(&self) -> Option<&str>;
6162
fn ext_previous_version_doc_url(&self) -> Option<&str>;
6263
}
6364

@@ -323,6 +324,9 @@ pub struct Property {
323324
#[serde(skip_serializing_if = "Option::is_none")]
324325
pub ext_doc_url: Option<String>,
325326

327+
#[serde(skip_serializing_if = "Option::is_none")]
328+
pub ext_doc_description: Option<String>,
329+
326330
#[serde(skip_serializing_if = "Option::is_none")]
327331
pub ext_previous_version_doc_url: Option<String>,
328332

@@ -375,6 +379,10 @@ impl ExternalDocument for Property {
375379
self.ext_doc_url.as_deref()
376380
}
377381

382+
fn ext_doc_description(&self) -> Option<&str> {
383+
self.ext_doc_description.as_deref()
384+
}
385+
378386
fn ext_previous_version_doc_url(&self) -> Option<&str> {
379387
self.ext_previous_version_doc_url.as_deref()
380388
}
@@ -536,6 +544,9 @@ pub struct BaseType {
536544
#[serde(skip_serializing_if = "Option::is_none")]
537545
pub ext_doc_url: Option<String>,
538546

547+
#[serde(skip_serializing_if = "Option::is_none")]
548+
pub ext_doc_description: Option<String>,
549+
539550
#[serde(skip_serializing_if = "Option::is_none")]
540551
pub ext_previous_version_doc_url: Option<String>,
541552

@@ -579,6 +590,7 @@ impl BaseType {
579590
spec_location: None,
580591
ext_doc_id: None,
581592
ext_doc_url: None,
593+
ext_doc_description: None,
582594
ext_previous_version_doc_url: None,
583595
}
584596
}
@@ -603,6 +615,10 @@ impl ExternalDocument for BaseType {
603615
self.ext_doc_url.as_deref()
604616
}
605617

618+
fn ext_doc_description(&self) -> Option<&str> {
619+
self.ext_doc_description.as_deref()
620+
}
621+
606622
fn ext_previous_version_doc_url(&self) -> Option<&str> {
607623
self.ext_previous_version_doc_url.as_deref()
608624
}
@@ -635,6 +651,10 @@ impl<T: WithBaseType> ExternalDocument for T {
635651
self.base().doc_url()
636652
}
637653

654+
fn ext_doc_description(&self) -> Option<&str> {
655+
self.base().ext_doc_description()
656+
}
657+
638658
fn ext_previous_version_doc_url(&self) -> Option<&str> {
639659
self.base().ext_previous_version_doc_url()
640660
}
@@ -915,6 +935,9 @@ pub struct Endpoint {
915935
#[serde(skip_serializing_if = "Option::is_none")]
916936
pub ext_doc_url: Option<String>,
917937

938+
#[serde(skip_serializing_if = "Option::is_none")]
939+
pub ext_doc_description: Option<String>,
940+
918941
#[serde(skip_serializing_if = "Option::is_none")]
919942
pub ext_previous_version_doc_url: Option<String>,
920943

@@ -968,6 +991,10 @@ impl ExternalDocument for Endpoint {
968991
self.ext_doc_url.as_deref()
969992
}
970993

994+
fn ext_doc_description(&self) -> Option<&str> {
995+
self.ext_doc_description.as_deref()
996+
}
997+
971998
fn ext_previous_version_doc_url(&self) -> Option<&str> {
972999
self.ext_previous_version_doc_url.as_deref()
9731000
}

compiler-rs/clients_schema_to_openapi/src/schemas.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ impl<'a> TypesAndComponents<'a> {
215215
extensions.insert("x-previousVersionUrl".to_string(), serde_json::json!(previous_version_doc_url));
216216
}
217217
ExternalDocumentation {
218-
description: None,
218+
description: obj.ext_doc_description().map(|desc| { desc.to_string() }),
219219
url: url.trim().replace("{branch}", &branch.unwrap_or("current".to_string())),
220220
extensions,
221221
}
Binary file not shown.

compiler/src/model/metamodel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ export class Endpoint {
443443
docId?: string
444444
extDocId?: string
445445
extDocUrl?: string
446+
extDocDescription?: string
446447
extPreviousVersionDocUrl?: string
447448
deprecation?: Deprecation
448449
availability: Availabilities

compiler/src/model/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,9 @@ export function hoistRequestAnnotations (
703703
const docUrl = docIds.find(entry => entry[0] === value.trim())
704704
assert(jsDocs, docUrl != null, `The @ext_doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
705705
endpoint.extDocUrl = docUrl[1].replace(/\r/g, '')
706+
if (docUrl[3].replace(/\r/g, '') !== '') {
707+
endpoint.extDocDescription = docUrl[3].replace(/\r/g, '')
708+
}
706709
} else if (tag === 'availability') {
707710
// The @availability jsTag is different than most because it allows
708711
// multiple values within the same docstring, hence needing to parse

0 commit comments

Comments
 (0)