============ [Navigator] ============ Navigator 제품에 대한 필수 API 를 정의 -------------- 개요 -------------- * 입력받은 문장에서 미리 정의되어 있는 dat파일 내용에 맞춰 단어를 추출하여 그 결과값으로 화면이동등의 처리를 용이하게 하기 위한 라이브러리이다. -------------- 데이터 파일 -------------- - dat 파일 1) 입력 받은 문장에서 추출해야 할 의미 있는 단어들을 정의하고 사용된 값들을 설정하는 데이터 파일 2) 데이터 구분자는 '\\n' 데이터 필드의 구분자는 ',' 필드내의 구분자는 '|'를 사용한다. 3) 전체프로젝트 내에서 사용되는 Global파일과 특정 화면에서 사용되는 Scene파일로 구분된다. - Global 파일 1) 전체 화면에서 사용될 menu.dat(고정) 파일과 추가로 전역적으로 사용될 데이터가 정의된 파일 2) menu.dat : 메뉴 이동에 사용되는 dat파일 (이름 변경 불가) 3) item.dat : 전역적으로 사용될 데이터가 정의된 파일 (이름 변경 가능, 파일 추가 가능) 4) value, attr, keys, fillers(옵션) 순서로 구성된다. 5) ex) /www/html/intro.html,0,시작|인트로,filler1|filler2 .. _GlobalType: ============ ======================================================= 요소 Description ============ ======================================================= value 스크립트 파싱시 사용될 데이터중 하나 attr 스크립트 파싱시 사용될 데이터중 하나 keys 문장에서 찾을 실제 단어의 집합 '|' 로 구분하여 배열로 처리된다. fillers 스크립트 파싱시 사용될 데이터중 하나로 '|' 로 구분하여 배열로 담겨온다. ============ ======================================================= - Number 파일 1) 전체 화면에서 사용될 number.dat(고정) 파일로 전역적으로 사용될 데이터가 정의된 파일 2) starts, ends, fillers(옵션) 순서로 구성된다. 3) starts + 숫자 의 조합으로 사용 : '금액'은 + "1000" 4) 숫자 + ends 의 조합으로 사용 : "삼천" + '원' 5) ex) 금액|가격,원|달라,filler1|filler2|filler3 .. _NumberType: ============ ======================================================= 요소 Description ============ ======================================================= starts 문장에서 찾을 실제 숫자 시작의 집합 '|' 로 구분하여 배열로 처리된다. ends 문장에서 찾을 실제 숫자 종료의 집합 '|' 로 구분하여 배열로 처리된다. fillers 스크립트 파싱시 사용될 데이터중 하나로 '|' 로 구분하여 배열로 담겨온다. ============ ======================================================= - Scene 파일 1) 특정 화면에서 사용될 데이터가 정의된 파일로 특정 화면의 이름으로 정의된다. 2) starts, ends, fillers(옵션) 순서로 구성된다. 3) starts + "value가 될 문장" + ends의 조합으로 사용 : '이름'은 + "유라클" + '이다' 4) 예외적으로 starts + "value가 될 단어" 조합으로 사용가능 : '이름'은 + "유라클" 5) ex) 외출자|이름,이다,filler1 .. _SceneType: ============ ======================================================= 요소 Description ============ ======================================================= starts 문장에서 찾을 실제 숫자 시작의 집합 '|' 로 구분하여 배열로 처리된다. ends 문장에서 찾을 실제 숫자 종료의 집합 '|' 로 구분하여 배열로 처리된다. fillers 스크립트 파싱시 사용될 데이터중 하나로 '|' 로 구분하여 배열로 담겨온다. ============ ======================================================= -------------- 규칙 -------------- - 입력받은 메시지를 각 dat파일로 정의된 값과 비교하여 각 dat파일의 내용을 해당 파일의 이름으로 된 키값으로 데이터를 만들어 준다. 1) menu.dat파일에서 찾은 데이터는 결과값의 "menu" 키로 담겨온다. - 결과값의 데이터는 배열의 형태로 오며 정확도가 높은 첫번째 배열값을 실제 화면처리에서 사용한다. 1) 단어의 위치가 앞일수록 우선순위가 높다. 2) 단어의 위치가 같다면 길이가 길수록 우선순위가 높다. - Global타입의 경우 keys의 포함된 단어들을 찾아 결과를 처리한다. * keys가 "메인|홈화면" 일 경우 1) "홈화면" * key=홈화면, value=/www/html/home.html (첫번째 배열) 2) "메인화면으로 이동" * key=메인, value=/www/html/home.html (첫번째 배열) 3) "메인인 홈화면으로 이동" * key=메인, value=/www/html/home.html (첫번째 배열) * key=홈화면, value=/www/html/home.html (두번째 배열) - Number타입의 경우 숫자와 해당 starts 값과 ends 값중 하나를 포함했을때 처리가 된다. * starts가 "금액" ends가 "원" 일 경우 1) "금액은 천" * key=금액, value=1000 2) "3천원" * key=원, value=3000 - Scene타입의 경우 현재 화면 또는 이동할 화면내에 있는 요소들을 처리한다. 1) 검색 결과에 menu데이터가 존재하면 해당 menu화면의 요소를 검색하며 해당 menu데이터 내에 "scenes" 키값으로 결과값이 배열로 담겨온다. * result.menu[0].scenes 2) 검색 결과에 menu데이터가 존재하지 않으면 현재 화면의 요소를 검색하며 "scenes" 키값으로 결과값이 배열로 담겨온다 * result.scenes 3) Scene타입의 경우 starts와 ends 사이의 문장의 값을 처리한다. * 단, "starts + 단어" 의 조합일 경우 ends가 없어도 해당 단어를 처리한다. * starts가 "외출자|이름" ends가 "이다|이고" 일 경우 1) "이름은 서자 홍길동이다." * start=이름, end=이다, value=서자 홍길동 2) "외출자는 홍길동" * start=외출자, end="", value=홍길동 -------------- NAVIGATOR API -------------- Navigator 기능을 제공한다. .. _statusType: status Type ------------ ============ =================== Type Description ============ =================== PROCESSING 진행 중 SUCCESS 정상 처리됨 FAIL 처리 중 문제가 발생함 ============ =================== 데이터 load -------------- .. js:function:: M.plugin('page_navigator').load( setting ) .. versionchanged:: 2.0.0 :param Object setting: 설정 정보 :param String setting.root: dat파일의 root path 정보 ("stt") :param Function setting.callback: 처리 결과를 받을 콜백 .. js:function:: callback(status, result) :param String status: 상태 ( :ref:`statusType` ) :param Object result: load의 결과 :param String result.result: load의 결과 :param String result.message: load의 결과 메시지 * 원본 데이터를 기반으로 매핑되어야 할 사전 정의 데이터 파일을 메모리에 적재함. Example: .. code-block:: javascript M.plugin('page_navigator').load({ 'root': 'stt', callback:function(status, result){ alert(JSON.stringify(result)); } }); 데이터 검색 -------------- .. js:function:: M.plugin('page_navigator').search( setting ) .. versionchanged:: 2.0.0 :param Object setting: 설정 정보 :param String setting.message: 결과를 추출하고자 하는 원본 데이터 :param String setting.input: 입력 컴포넌트로 이동하기 위해 사용하는 값으로, value 값으로 끝나는 단어가 검색되는 경우, 필요한 값이 리턴됨 :param Function setting.callback: 검증 결과 콜백 함수 .. js:function:: callback(status, result) :param String status: 상태 ( :ref:`statusType` ) :param Object result: 검색 결과 :param String result.result: 검색 결과 (SUCCESS, INPUT) :param Object result.data : 검색 결과 자료 * 원본 데이터를 이용하여, 사전 정의된 정보를 검색함. Example: .. code-block:: javascript M.plugin('page_navigator').search({ 'message': '삼성전자 현재가', callback:function(status, result){ alert(JSON.stringify(result)); } }); .. code-block:: javascript M.plugin('page_navigator').search({ 'message': '아이디 입력', 'input': '입력', callback:function(status, result){ alert(JSON.stringify(result)); } });