summaryrefslogtreecommitdiff
path: root/cli/doc/enum.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-03-28 19:16:57 +0100
committerGitHub <noreply@github.com>2020-03-28 14:16:57 -0400
commit3fac487461abf055165fe0e2bb962573950277b8 (patch)
treec0ba09a2049975f9eb8625365e3ba395e67d8b50 /cli/doc/enum.rs
parentbced52505f32d6cca4f944bb610a8a26767908a8 (diff)
feat: Add "deno doc" subcommand (#4500)
Diffstat (limited to 'cli/doc/enum.rs')
-rw-r--r--cli/doc/enum.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/cli/doc/enum.rs b/cli/doc/enum.rs
new file mode 100644
index 000000000..f71c15537
--- /dev/null
+++ b/cli/doc/enum.rs
@@ -0,0 +1,41 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+use serde::Serialize;
+use swc_ecma_ast;
+
+use super::parser::DocParser;
+
+#[derive(Debug, Serialize, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct EnumMemberDef {
+ pub name: String,
+}
+
+#[derive(Debug, Serialize, Clone)]
+#[serde(rename_all = "camelCase")]
+pub struct EnumDef {
+ pub members: Vec<EnumMemberDef>,
+}
+
+pub fn get_doc_for_ts_enum_decl(
+ _doc_parser: &DocParser,
+ enum_decl: &swc_ecma_ast::TsEnumDecl,
+) -> (String, EnumDef) {
+ let enum_name = enum_decl.id.sym.to_string();
+ let mut members = vec![];
+
+ for enum_member in &enum_decl.members {
+ use swc_ecma_ast::TsEnumMemberId::*;
+
+ let member_name = match &enum_member.id {
+ Ident(ident) => ident.sym.to_string(),
+ Str(str_) => str_.value.to_string(),
+ };
+
+ let member_def = EnumMemberDef { name: member_name };
+ members.push(member_def);
+ }
+
+ let enum_def = EnumDef { members };
+
+ (enum_name, enum_def)
+}