This repository has been archived by the owner on Apr 3, 2023. It is now read-only.
forked from davidshimjs/jaguarjs-jsdoc
-
Notifications
You must be signed in to change notification settings - Fork 3
코드 분석
Jongmoon Yoon edited this page Sep 6, 2016
·
3 revisions
자주 보지않는 코드이므로 코드를 보는 시점에 도움이 될 수 있도록 포인트를 잡아주는 내용을 정리한다.
주로 수정하게 되는 내용들
-
/jsdoc-plugin/*.js
- ko, codepen 등 기존 jsdoc 미지원 기능을 지원하기 위한 커스텀태그(@)핸들러
-
/tmpl/*.tmpl
- HTML 페이지 레이아웃을 구성하는 파일들
-
/publish.js
- 소스코드를 읽어와 HTML 을 빌드하는 메인 코드
-
/static/scripts/*.js
- 페이지에서 사용할 스크립트
HTML 메인
페이지의 메인 javascript
사이드 메뉴를 구성하는 함수
현재 group 을 지정하는 방법
- 각 namespace 혹은 class 별로 부여된 group 이름으로 navigation 메뉴를 grouping 한다.
- 현재는 하나의 namespace에 대해 하나의 group만을 지정할 수 있다.
같은 namespace 에 대해 다른 group 을 지정할 수 있는가?
-
jsdoc 에서 동일한 namespace 를 갖는 method 를 정확히 구분해 주는 것이 전제되어야 한다.
- 동일한 namespace 를 갖는 methodA 와 methodB 에 대해서 구분해주어야 한다!
메뉴 구성 시 jsdoc 에서 전달 받는 members 정보를 가지고, method 를 구분해 줄 수 있는 방법이 존재하는지 확인해보자! members 에는 정보가 없다.
예제:
{
classes: [{name: 'Child', kind: 'class', group:Y}, {name: 'Parent', kind: 'class', group:Y}, ],
externals: [],
events:[{name: 'testEvent', kind: 'event', memberOf: 'namespace.Car', ...}],
globals: [],
mixins: [],
modules: [],
namespaces: [{name: 'namespace', kind: 'namespace',...}, {name: 'namespace', kind: 'namespace',...}],
interfaces: [],
tutorials:[]
}
그러나 방법은 있다! publish.js 의 전역 데이터인 data 변수를 가지고 정보를 접근할 수 있다. 즉, buildNav 의 파라미터인 members 자체에는 method 정보가 없지만 find 를 통해 data로부터 특정 태그(eg.@group)에 대한 정보를 검색하여 가져올 수 있다.
find({
kind: 'function',
memberof: v.longname,
group: groupName //기존 위 정보에 추가하여 커스텀 태그인 group 과 일치하는 것도 검색 가능
});
JSDoc 자체를 수정해야하는 이슈!
http://usejsdoc.org/tags-namespace.html
namespace 지정방법
@namespace [{<type>}] <SomeName>]
- @namespace 미지정 시 namespace 가 지정된 object 가 자동으로 namespace 로 매핑된다.
/**<br/>
* My namespace.<br/>
* @namespace<br/>
*/
var MyNamespace = {
/** documented as MyNamespace.foo */
foo: function() {},
/** documented as MyNamespace.bar */
bar: 1
};
- 다른 Object 에 대해 동일한 namespace 를 지정한 경우 namespace 에 속한 메소드나 프로퍼티가 의도한 데로 매핑되길 기대할 수 없다.
http://usejsdoc.org/tags-name.html
JSDoc 에서 자동으로 찾아준 이름과 주변 코드를 무시하고 강제로 이름을 지정하고 싶은 경우에만 제한적으로 사용한다. symbol 이름만 바꾸고 싶으면 @alias 를 쓰길 권고한다. @alias 는 해당 symbol 과 관련한 다른 정보들은 그대로 유지하기 때문이다.