닥북 모음집용 루아 환경에 대해

고친 과정
고침 1.02005-08-09gryu
최초 작성
고침 1.12005-10-09gryu
runlua및 xslt 수정 사항 추가, 포매팅 추가
고침 1.22006-12-20gryu
새 버전에 맞게 수정

차례

소개
이전 버전(루아 확장팩 0.91)과의 차이
사용권 정보
설치, 설정
구성
bin 디렉터리:
software/luascripts 디렉터리
스크립트 추가 설명
편리한 루아 스크립트 실행 방법
foreach
xslt
wgetdbwiki
직접 루아 스크립트 만들기

소개

닥북 한국의 Win32용 닥북 모음집 0.9.0(dbkpack-0.9.0)에는 dbkshell.bat으로 띄우는 Windows 명령행 환경의 부족한 셸 스크립팅 기능을 보충하기 위한 루아(Lua) 실행 환경과 몇 가지 편리한 루아 스크립트 들이 포함되어 있습니다. 이전에는 개별적인 확장 패키지로 제공되었으나 모음집 0.9.0부터는 기본으로 포함됩니다.

이전 버전(루아 확장팩 0.91)과의 차이

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

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

  • foreach의 파일 패턴 오류 수정

사용권 정보

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

설치, 설정

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

구성

bin 디렉터리:

  • lua5.1.exe, lua5.1.dll, luac5.1.exe - Lua 핵심 파일들. Lua 이진 파일 배포판 다운로드의 lua5_0r2_Win32_bin.tar.gz에서 추출

  • lfs-5.1.dll - LuaFileSystem 확장 모듈. LuaFileSystem 버전 1.2를 루아 5.1.1에 맞게 재빌드한 것임

  • runlua.bat - 루아 스크립트의 편리한 실행을 위한 일괄 파일. 닥북 한국이 제작했으며 GPL을 따릅니다.

  • lua.bat - 실제 루아 해석기를 실행합니다. 루아 버전이 변해서 실행파일 이름이 바뀌어도 그냥 lua만 실행하면 되도록 하기 위한 간단한 일괄 파일입니다. 닥북 한국이 제작했으며 GPL을 따릅니다.

software/luascripts 디렉터리

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

스크립트 추가 설명

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

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

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도 좋은 참고가 될 것입니다.