<?xml version="1.0" encoding="euc-kr"?>

<article lang="ko">

<articleinfo>
<authorgroup>
	<author>
	<surname>류</surname><firstname>광</firstname>
	</author>

</authorgroup>

<revhistory>
	<revision>
	<revnumber>1.0</revnumber>
	<date>2005-08-09</date>
	<authorinitials>gryu</authorinitials>
	<revremark>최초 작성</revremark>
	</revision>

	<revision>
	<revnumber>1.1</revnumber>
	<date>2005-10-09</date>
	<authorinitials>gryu</authorinitials>
	<revremark>runlua및 xslt 수정 사항 추가, 포매팅 추가</revremark>
	</revision>

	<revision>
	<revnumber>1.2</revnumber>
	<date>2006-12-20</date>
	<authorinitials>gryu</authorinitials>
	<revremark>새 버전에 맞게 수정</revremark>
	</revision>

</revhistory>

</articleinfo>
<title>닥북 모음집용 루아 환경에 대해</title>
    <!-- toc -->

<section><title>소개</title>

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

</section>

<section><title>이전 버전(루아 확장팩 0.91)과의 차이</title>

<itemizedlist>
<listitem><para>모음집에 기본 포함(따라서 모음집과 통합을 위한 스크립트는 제거됨)</para>
</listitem>
<listitem><para>루아를 버전 5.1.1로 업그레이드</para>
</listitem>
<listitem><para>foreach의 파일 패턴 오류 수정</para>
</listitem>
</itemizedlist>

</section>

<section><title>사용권 정보</title>

<para>각 파일의 사용권은 특별한 언급이 없는 한 해당 패키지의 사용권을 따릅니다.
</para>
<itemizedlist>
<listitem><para><ulink url="http://www.lua.org">Lua</ulink> - <ulink url="http://www.lua.org/license.html#5">Lua 5.0 Lincense</ulink>.</para>
</listitem>
<listitem><para><ulink url="http://www.keplerproject.org/luafilesystem/">LuaFileSystem</ulink> - <ulink url="http://www.keplerproject.org/luafilesystem/license.html">Lua 5.0 Lincense 호환</ulink>.</para>
</listitem>
</itemizedlist>

</section>

<section><title>설치, 설정</title>

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

</section>

<section><title>구성</title>


	<section><title>bin 디렉터리:</title>

	<itemizedlist>
	<listitem><para>lua5.1.exe, lua5.1.dll, luac5.1.exe - Lua 핵심 파일들. <ulink url="http://luaforge.net/frs/?group_id=110&amp;release_id=264">Lua 이진 파일 배포판 다운로드</ulink>의 lua5_0r2_Win32_bin.tar.gz에서 추출</para>
	</listitem>
	<listitem><para>lfs-5.1.dll - LuaFileSystem 확장 모듈. <ulink url="http://luaforge.net/projects/luafilesystem/">LuaFileSystem</ulink> 버전 1.2를 루아 5.1.1에 맞게 재빌드한 것임</para>
	</listitem>
	<listitem><para>runlua.bat - 루아 스크립트의 편리한 실행을 위한 일괄 파일. 닥북 한국이 제작했으며 GPL을 따릅니다.</para>
	</listitem>
	<listitem><para>lua.bat - 실제 루아 해석기를 실행합니다. 루아 버전이 변해서 실행파일 이름이 바뀌어도 그냥 <command>lua</command>만 실행하면 되도록 하기 위한 간단한 일괄 파일입니다. 닥북 한국이 제작했으며 GPL을 따릅니다.</para>
	</listitem>
	</itemizedlist>

	</section>

	<section><title>software/luascripts 디렉터리</title>

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

	</section>

</section>

<section id="scripts"><title>스크립트 추가 설명</title>


	<section><title>편리한 루아 스크립트 실행 방법</title>

	<para>software/luascripts에 있는 스크립트들은 bin/runlua.bat를 이용해서 편하게 실행할 수 있습니다.
	</para>
	<para>runlua.bat 사용법: <command>runlua 스크립트이름 [옵션들]</command>
	</para>
	<para>스크립트 이름에 .lua를 붙이면 안 됩니다.
	</para>
	<para>&quot;스크립트이름&quot;이 가리키는 것이
	lua 파일이 아니라 software/luascripts/의 하위 디렉터리 이름인 경우 runlua는 그 하위 디렉터리에 있는
	같은 이름의 lua 파일을 실행합니다. 예를 들어 runlua xslt 는 software/luascripts/xslt/xslt.lua를 실행합니다.
	여러 개의 파일들로 된 루아 응용 프로그램인 경우 이런 식으로 하위 디렉터리를 만들면 software/luascripts/를 깔끔하게
	유지하는 데 도움이 됩니다.
	</para>
	<para>runlua.bat은 software/luascripts/run.lua 스크립트를 이용합니다.
	</para>
	<para>software/luascripts/lfsutils.lua는 직접 실행할 수 있는 스크립트는 아니고, 아래의 스크립트들이 사용하는 파일 시스템관련 라이브러리입니다.
	</para>

	</section>

	<section><title>foreach</title>

	<para>특정 디렉터리에 있는 특정한 형태의 파일들 전체에 동일한 명령을
	수행하는 데 사용하는 유틸리티입니다.
	</para>
	<para>사용법: <command>runlua foreach [-n|--nosub] &quot;파일_패턴&quot; 디렉터리 &quot;명령&quot;</command>
	</para>
	<itemizedlist>
	<listitem><para>-n, --nosub: 이 옵션을 지정하면 주어진 디렉터리의 하위 디렉터리들을 재귀적으로 처리하지 않습니다.(즉 주어진 디렉터리의 파일들만 처리합니다.)</para>
	</listitem>
	<listitem><para>파일_패턴: 명령을 적용할 파일들의 패턴. 예를 들면 &quot;*.xml&quot; (반드시 큰 따옴표로 감싸야 합니다.)</para>
	</listitem>
	<listitem><para>디렉터리: 명령을 적용할 파일들이 있는 디렉터리.</para>
	</listitem>
	<listitem><para>명령: 패턴에 해당하는 파일에 적용할 명령. 반드시 큰따옴표로 감싸야 합니다. 다음과 같은 매크로들을 사용할 수 있습니다.</para>
		<itemizedlist>
		<listitem><para>%i : 일련 번호. 첫 번째 파일은 1, 이후로 파일마다 1씩 증가.</para>
		</listitem>
		<listitem><para>%F : 파일 확장자를 포함한 파일 이름.</para>
		</listitem>
		<listitem><para>%f : 파일 이름만.</para>
		</listitem>
		<listitem><para>%e : 파일 확장자.</para>
		</listitem>
		<listitem><para>%p : 파일이 있는 경로만.</para>
		</listitem>
		<listitem><para>%P : 파일 경로, 파일 이름, 파일 확장자를 포함한 전체 경로이름</para>
		</listitem>
		</itemizedlist>
	</listitem>
	</itemizedlist>
	<para>전체 경로 이름이 c:\docs\test.xml 이라 할 때
	%F는 test.xml, %f는 test, %e는 xml, %p는 c:\docs, %P는 c:\docs\test.xml
	</para>
	<example>
	<programlisting>
 runlua foreach &quot;*.xml&quot; c:\docs &quot;docbook2pdf %P %p\%f.pdf&quot;
	</programlisting>
	</example>

	</section>

	<section><title>xslt</title>

	<para>파일에 담긴 매개변수들을 이용해서 xsltproc를 실행합니다.
	</para>
	<para>사용법: <command>runlua xslt [-c 설정파일] xsl_파일 xml_파일</command>
	</para>
	<para>설정파일은 다음 항목들이 한 줄에 하나씩 있는 텍스트 파일이어야
	합니다.
	</para>
	<programlisting>
매개변수이름 = 값	
</programlisting>
	<example><title>설정 파일의 예</title>
	<programlisting>
#로 시작하는 줄은 주석
# 목차 관련
toc.section.depth=2
section.autolabel=1
# css
html.stylesheet.type = text/css
html.stylesheet = dbk.css
css.decoration = 0	
</programlisting>
	</example>
	<para>xsl_파일 지정 시 파일 이름을 꺾음괄호로 감싸면 닥북 모음집 stylesheet 디렉터리가 자동으로 지정됩니다.
	예를 들어 닥북 모음집이 c:\docbook 에 있다고 할 때, 다음을
	</para>
	<programlisting>
 &gt;runlua xslt c:\docbook\stylesheet\dbk-html-chunk.xsl my.xml
	</programlisting>
	<para>다음과 같이 짧게 실행할 수 있습니다.
	</para>
	<programlisting>
 &gt;runlua xslt {dbk-html-chunk} my.xml
	</programlisting>
	<para>위의 예에서 보듯이 확장자 .xsl도 생략할 수 있습니다.
	</para>

	</section>

	<section><title>wgetdbwiki</title>

	<para>wget을 이용해서 위키 페이지의 XML 파일과 이미지 파일들을
	가져옵니다. 이미지 파일들은 files 하위 디렉터리에 저장됩니다.
	</para>
	<para>사용법:
	<command>runlua wgetdbwiki 페이지이름 [위키_기준_URL]</command>
	</para>
	<para><code>[위키_기준_URL]</code>은 페이지 이름을 제외한 위키 URL.
	생략 시 <ulink url="http://docbook.or.kr/wiki/index.php/">http://docbook.or.kr/wiki/index.php/</ulink>
	</para>
	<example>
	<programlisting>
 runlua wgetdbwiki DocBookExample
	</programlisting>
	</example>
	<note>
	<para>이 스크립트는 닥북 한국 위키 <ulink url="http://docbook.or.kr/wiki/index.php/UsingWgetWithDbWiki">UsingWgetWithDbWiki</ulink>에 나온 과정을 자동화한 것입니다.
	</para>
	</note>

	</section>

</section>

<section><title>직접 루아 스크립트 만들기</title>

<para>루아 프로그래밍 방법과 활용에 대해서는 나중에 문서화하겠습니다. 일단,
</para>
<itemizedlist>
<listitem><para>루아 자체에 대해서는 <ulink url="http://www.lua.org/docs.html">Lua 문서화</ulink>를,</para>
</listitem>
<listitem><para>셸 스크립팅에서 꼭 필요한 기능을 제공하는 LuaFileSystem에 대해서는 <ulink url="http://www.keplerproject.org/luafilesystem/manual.html">해당 매뉴얼</ulink>을</para>
</listitem>
</itemizedlist>
<para>참고하세요. software/luascripts/lfsutils.lua, software/luascripts/foreach.lua도 좋은 참고가 될 것입니다.
</para>

</section>

</article>
