From 3fac487461abf055165fe0e2bb962573950277b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sat, 28 Mar 2020 19:16:57 +0100 Subject: feat: Add "deno doc" subcommand (#4500) --- cli/doc/enum.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 cli/doc/enum.rs (limited to 'cli/doc/enum.rs') 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, +} + +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) +} -- cgit v1.2.3