## 닥북 모음집용 루아 환경

### 류광,

고친 과정
고침 1.0 | 2005-08-09 | gryu
최초 작성
고침 1.1 | 2005-10-09 | gryu
버전 0.91에 맞게 갱신, runlua및 xslt 수정 사항 추가, 포매팅 추가
고침 1.2 | 2008-04-19 | gryu
모음집 1.0.0에 맞게 갱신.

## 소개

닥북 한국의 Win32용 닥북 모음집 1.0.0(dbkpack-1.0.0)에는 dbkshell.bat으로 띄우는 Windows 명령행 환경의 부족한 셸 스크립팅 기능을 보충하기 위한 루아(Lua) 실행 환경과 몇 가지 편리한 루아 스크립트 들이 포함되어 있습니다.

## 변경 내역

### 닥북 모음집 0.9.0 -> 1.0.0

- 루아를 버전 5.1.3으로 업그레이드

- docbookto 추가

### 0.91 -> 닥북 모음집 0.9.0

- 모음집에 기본 포함(따라서 모음집과 통합을 위한 스크립트는 제거됨)

- 루아를 버전 5.1.1로 업그레이드

- foreach의 파일 패턴 오류 수정

### 0.90 -> 0.91

- runlua로 xslt 스크립트를 실행할 때 params.lua를 찾지 못하던 버그를 수정

- xslt 스크립트 실행 시stylesheet 디렉터리에 있는 표준 XSLT 스타일시트를 좀 더 편하게 지정하는 기능을 추가

## 사용권 정보

각 파일의 사용권은 특별한 언급이 없는 한 해당 패키지의 사용권을 따릅니다.

- Lua - Lua 5.0+ Lincense.

- LuaFileSystem - Lua 5.0+ Lincense 호환.

- luaiconv - MIT/X Consortium License

## 설치, 설정

모음집과 함께 설치됩니다. 추가로 설정해야 할 것은 없습니다.

## 구성

### bin 디렉터리:

- lua5.1.exe, lua5.1.dll, luac5.1.exe - 루아 핵심 파일들. 루아 5.1.3 소스 파일을 MinGW로 빌드한 것임.

- lfs.dll - LuaFileSystem 확장 모듈.

- luaiconv.dll - lua-iconv의 소스 코드를 닥북 모음집에 맞게 빌드했음.

- runlua.bat - 루아 스크립트의 편리한 실행을 위한 일괄 파일.

- lua.bat - 루아 인터프리터를 실행합니다. 루아 버전이 변해서 실행파일 이름이 바뀌어도 그냥 lua만 실행하면 되도록 하기 위한 간단한 일괄 파일입니다.

- docbookto.bat - software/luascripts/docbookto.lua를 실행합니다(아래 참고).

### software/luascripts 디렉터리

아래의 스크립트 추가 설명에서 이야기하는 몇 가지 루아 스크립트들이 들어 있습니다. 이 스크립트들은 모두 닥북 한국이 제작했습니다.

## 스크립트 추가 설명

### 범용 변환 도구 docbookto

docbookto_command.html을 보세요.

### 편리한 루아 스크립트 실행 방법

software/luascripts에 있는 스크립트들은 bin/runlua.bat를 이용해서 편하게 실행할 수 있습니다.

사용법: runlua 스크립트이름 [옵션들]

스크립트 이름에 .lua를 붙이면 안 됩니다.

"스크립트이름"이 가리키는 것이 lua 파일이 아니라 software/luascripts/의 하위 디렉터리 이름인 경우 runlua는 그 하위 디렉터리에 있는 같은 이름의 lua 파일을 실행합니다. 예를 들어 runlua xslt 는 software/luascripts/xslt/xslt.lua를 실행합니다. 여러 개의 파일들로 된 루아 응용 프로그램인 경우 이런 식으로 하위 디렉터리를 만들면 software/luascripts/를 깔끔하게 유지하는 데 도움이 됩니다.

runlua.bat은 software/luascripts/run.lua 스크립트를 이용합니다.

software/luascripts/lfsutils.lua는 직접 실행할 수 있는 스크립트는 아니고, 아래의 스크립트들이 사용하는 파일 시스템관련 라이브러리입니다.

### foreach

특정 디렉터리에 있는 특정한 형태의 파일들 전체에 동일한 명령을 수행하는 데 사용하는 유틸리티입니다.

사용법: runlua foreach [-n|--nosub] 파일_패턴 디렉터리 명령

- -n, --nosub: 이 옵션을 지정하면 주어진 디렉터리의 하위 디렉터리들을 재귀적으로 처리하지 않습니다.(즉 주어진 디렉터리의 파일들만 처리합니다.)

- 파일_패턴: 명령을 적용할 파일들의 패턴. 예를 들면 *.xml

- 디렉터리: 명령을 적용할 파일들이 있는 디렉터리.

- 명령: 패턴에 해당하는 파일에 적용할 명령. 다음과 같은 매크로들을 사용할 수 있습니다.

  - %i : 일련 번호. 첫 번째 파일은 1, 이후로 파일마다 1씩 증가.

  - %F : 파일 확장자를 포함한 파일 이름.

  - %f : 파일 이름만.

  - %e : 파일 확장자.

  - %p : 파일이 있는 경로만.

  - %P : 파일 경로, 파일 이름, 파일 확장자를 포함한 전체 경로이름

전체 경로 이름이 c:\docs\test.xml 이라 할 때 %F는 test.xml, %f는 test, %e는 xml, %p는 c:\docs, %P는 c:\docs\test.xml

예 1.

     runlua foreach *.xml c:\docs docbook2pdf %P %p\%f.pdf

### xslt

파일에 담긴 매개변수들을 이용해서 xsltproc를 실행합니다.

사용법: runlua xslt [-c 설정파일] xsl_파일 xml_파일

설정파일은 다음 항목들이 한 줄에 하나씩 있는 텍스트 파일이어야 합니다.

     매개변수이름 = 값

예 2. 설정 파일의 예

    #로 시작하는 줄은 주석
    # 목차 관련
    toc.section.depth=2
    section.autolabel=1
    # css
    html.stylesheet.type = text/css
    html.stylesheet = dbk.css
    css.decoration = 0

xsl_파일 지정 시 파일 이름을 꺾음괄호로 감싸면 닥북 모음집 stylesheet 디렉터리가 자동으로 지정됩니다. 예를 들어 닥북 모음집이 c:\docbook 에 있다고 할 때, 다음을

     >runlua xslt c:\docbook\stylesheet\dbk-html-chunk.xsl my.xml

다음과 같이 짧게 실행할 수 있습니다.

     >runlua xslt {dbk-html-chunk} my.xml

위의 예에서 보듯이 확장자 .xsl도 생략할 수 있습니다.

### wgetdbwiki

wget을 이용해서 위키 페이지의 XML 파일과 이미지 파일들을 가져옵니다. 이미지 파일들은 files 하위 디렉터리에 저장됩니다.

사용법: runlua wgetdbwiki 페이지이름 [위키_기준_URL]

[위키_기준_URL]은 페이지 이름을 제외한 위키 URL. 생략 시 http://docbook.or.kr/wiki/index.php/

예 3.

     runlua wgetdbwiki DocBookExample

| 참고
이 스크립트는 닥북 한국 위키 UsingWgetWithDbWiki에 나온 과정을 자동화한 것입니다.

## 직접 루아 스크립트 만들기

루아 프로그래밍 방법과 활용에 대해서는 나중에 문서화하겠습니다. 일단,

- 루아 자체에 대해서는 Lua 문서화를,

- 셸 스크립팅에서 꼭 필요한 기능을 제공하는 LuaFileSystem에 대해서는 해당 매뉴얼을

참고하세요. software/luascripts/lfsutils.lua, software/luascripts/foreach.lua도 좋은 참고가 될 것입니다.