2016-10-28 4 views
0

내가 작업하고있는 Node.JS 프로젝트가 있는데이 프로젝트의 특정 기능은 디렉토리의 모든 JS 파일을 읽고 클래스 주석 (클래스 이름 이 정보를 객체 배열에 저장하여 나중에 markdown으로 변환 할 수도 있습니다.Node.JS 클래스 주석 추출

제 질문은 입니다. 클래스 이름과 클래스 주석과 같은 구성 요소를 추출하는 가장 좋은 방법은 무엇입니까?

필자는 파일을 읽고 구문을 파싱하는 것에 대해 생각해 보았지만 왜 바퀴를 다시 만들 생각입니까? 특정 주석을 추출하기위한 좋은 도구 나 JS 파일을 구문 분석하는 영리한 알고리즘이 있다면 그 파일을 듣고 싶습니다. 감사!

답변

0

abstract syntax tree로 코드를 변환 파서에 보라.

예를 들어, Esprima은 ES6 JavaScript를 구문 분석하고 식별자와 주석을 추출하는 데 도움을 줄 수 있습니다.

this live demo을 살펴보십시오. 다음 클래스의 경우, 아래의 AST가 생성됩니다 :

/** 
* 
* This is a test class 
* 
*/ 
class Foo { 
    bar() { 
     console.log('foobar'); 
    } 
} 

{ 
    "type": "Program", 
    "body": [ 
     { 
      "type": "ClassDeclaration", 
      "id": { 
       "type": "Identifier", 
       "name": "Foo" 
      }, 
      "superClass": null, 
      "body": { 
         ... 
        } 
       ] 
      }, 
      "leadingComments": [ 
       { 
        "type": "Block", 
        "value": "*\n *\n * This is a test class\n *\n ", 
        "range": [ 
         0, 
         37 
        ] 
       } 
      ] 
     } 
    ], 
    "sourceType": "script" 
} 
+0

확실히 클래스를 파싱하는 좋은 방법이지만, 단지 코멘트가 필요하다면 과잉이라고 할 수 있습니다. 나는 이것을 염두에 두겠다. 고마워! –

1

정확히이 일을하는 도구가 있습니다! jsDoc을 확인하십시오. 댓글에서 https://github.com/jsdoc3/jsdoc

건물 HTML 웹 페이지는 일만큼 간단합니다 제안

npm i -g jsdoc 
jsdoc yourFile.js 

그리고이 꿀꿀/꿀꺽와 결합 될 수있다 물론

...

+0

jsdoc은 HTML 웹 페이지로 제한되어 있습니까? 아니면 markdown도 생성 할 수 있습니까? –

+0

마치 보입니다. http://usejsdoc.org/plugins-markdown.html#enabling-the-markdown-plugin – danieldaugherty

+0

니스! 그럼 현재의 전략이 작동하지 않을 경우를 염두에 두어야 할 것입니다. 머리를 주셔서 감사합니다! –