summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/luaindex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-02-19 23:45:54 +0000
committerKarl Berry <karl@freefriends.org>2011-02-19 23:45:54 +0000
commitd98b8e798ec4acb601e2b27d26e034cc628c77b0 (patch)
tree038473cd49773d39b58c1f365e429568509f348b /Master/texmf-dist/scripts/luaindex
parentf88c06401d61625c8ee39d465ac288ed6675c540 (diff)
rm luaindex, needs newer luatex, will retry later
git-svn-id: svn://tug.org/texlive/trunk@21470 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/luaindex')
-rwxr-xr-xMaster/texmf-dist/scripts/luaindex/luaindex.lua329
1 files changed, 0 insertions, 329 deletions
diff --git a/Master/texmf-dist/scripts/luaindex/luaindex.lua b/Master/texmf-dist/scripts/luaindex/luaindex.lua
deleted file mode 100755
index 054cba020e0..00000000000
--- a/Master/texmf-dist/scripts/luaindex/luaindex.lua
+++ /dev/null
@@ -1,329 +0,0 @@
----
---- This is file `luaindex.lua',
---- generated with the docstrip utility.
----
---- The original source files were:
----
---- luaindex.dtx (with options: `lua')
----
---- Copyright (c) 2011 by Markus Kohm <komascript(at)gmx.info>
----
---- This file was generated from file(s) of luaindex distribution.
---- --------------------------------------------------------------
----
---- This work may be distributed and/or modified under the conditions of
---- the LaTeX Project Public License, version 1.3c of the license.
---- The latest version of this license is in
---- http://www.latex-project.org/lppl.txt
---- and version 1.3c or later is part of all distributions of LaTeX
---- version 2005/12/01 or later and of this work.
----
---- This work has the LPPL maintenance status "maintained".
----
---- The Current Maintainer and author of this work is Markus Kohm.
----
---- This file may only be distributed together with the files listed in
---- `luaindex.dtx'. You may however distribute the files listed in
---- `luaindex.dtx' without this file.
----
---- NOTE: THIS IS AN ALPHA-VERSION!
----
-module("koma.luaindex", package.seeall)
-local indexes = {}
-function newindex( indexname )
- indexes[indexname]={ presortreplaces = {},
- sortorderbychar = {} }
-end
-function sortorder( indexname, sortorder )
- local i, value
- local index = indexes[indexname]
- if index == nil then
- tex.error( "Unknown index `" .. indexname .. "'",
- { "You've tried to add a new sortorder to an index, but there's no index with the",
- "given name.",
- "You should define the index using lua function ",
- " `koma.luaindex.newindex(\"" .. indexname .. "\")'",
- "before."
- }
- )
- else
- if type(sortorder) == "string" then
- local value
- i = 1
- repeat
- value = unicode.utf8.sub( sortorder, i, i )
- if value then
- index.sortorderbychar[value] = i
- end
- i = i + 1
- until value == ""
- else -- should be table
- for i, value in ipairs( sortorder ) do
- index.sortorderbychar[value] = i
- end
- end
- end
-end
-function presortreplace( indexname, pass, pattern, replace )
- local n
- local index = indexes[indexname]
- if index == nil then
- tex.error( "Unknown index `" .. indexname .. "'",
- { "You've tried to add a new presort-replace to an index, but there's no index",
- "with the given name.",
- "You should define the index using lua function ",
- " `koma.luaindex.newindex(\"" .. indexname .. "\")'",
- "before."
- }
- )
- else
- for n = table.maxn(index.presortreplaces), pass, 1 do
- if ( index.presortreplaces[n] == nil ) then
- index.presortreplaces[n] = {}
- end
- end
- index.presortreplaces[pass][pattern]=replace
- end
-end
-local function getclass( utfc )
- local i
- for i in unicode.utf8.gmatch( utfc, "%n" ) do
- return 2
- end
- for i in unicode.utf8.gmatch( utfc, "%a" ) do
- return 3
- end
- return 1
-end
-local function do_presortreplaces( srcstr, presortreplace )
- if presortreplace then
- local pat, rep
- for pat, rep in pairs( presortreplace ) do
- srcstr = unicode.utf8.gsub( srcstr, pat, rep )
- end
- end
- return srcstr
-end
-local function printsubindex( level, index, presortreplace_zero )
- local i,t,n,p,l
- local group=""
- local class=-1
- local item="\\"
- for l = 1, level, 1 do
- item = item .. "sub"
- end
- item = item .. "item "
- for i,t in ipairs( index ) do
- if ( level == 0 ) then
- local sort=do_presortreplaces( t["sort"], presortreplace_zero )
- local firstchar=unicode.utf8.upper( unicode.utf8.sub( sort, 1, 1 ) )
- if ( firstchar ~= group ) then
- local newclass
- newclass=getclass( firstchar )
- if ( newclass == 1 and class ~= newclass ) then
- tex.print( "\\indexgroup{\\symbolsname}" )
- elseif ( newclass == 3 ) then
- tex.print( "\\indexgroup{" .. firstchar .. "}" )
- elseif ( newclass == 2 and class ~= newclass ) then
- tex.print( "\\indexgroup{\\numbersname}" )
- end
- group=firstchar
- class=newclass
- end
- end
- tex.sprint( item, t["value"] )
- if t["pages"] then
- tex.sprint( "\\indexpagenumbers{" )
- for n,p in ipairs( t["pages"] ) do
- tex.sprint( "\\indexpagenumber{", p, "}" )
- end
- tex.print( "}" )
- end
- if t["subindex"] then
- printsubindex( level+1, t["subindex"], presortreplaces_zero )
- end
- end
-end
-function printindex( indexname )
- local index=indexes[indexname]
- if index == nil then
- tex.error( "Unknown index `" .. indexname .. "'",
- { "You've tried to print an index, but there's no index with the",
- "given name.",
- "You should define the index using lua function ",
- " `koma.luaindex.newindex(\"" .. indexname .. "\")'",
- "before."
- }
- )
- else
- print( "Index: \"" .. indexname .. "\" with " .. table.maxn( index ) .. " level-0-entries" )
- tex.print( "\\begin{theindex}" )
- printsubindex(0,indexes[indexname],indexes[indexname].presortreplaces[0])
- tex.print( "\\end{theindex}" )
- end
-end
-local function getsubclass( utfc )
- local i
- for i in unicode.utf8.gmatch( utfc, "%l" ) do
- return 1
- end
- for i in unicode.utf8.gmatch( utfc, "%u" ) do
- return 2
- end
- for i in unicode.utf8.gmatch( utfc, "%c" ) do
- return 1
- end
- for i in unicode.utf8.gmatch( utfc, "%s" ) do
- return 2
- end
- for i in unicode.utf8.gmatch( utfc, "%p" ) do
- return 3
- end
- for i in unicode.utf8.gmatch( utfc, "%n" ) do
- return 4
- end
- return 10 -- unkown is the biggest sub class
-end
-local function do_strcmp( first, second, sortorderbychar )
- local secondtable = string.explode( second, "" )
- local firstutf
- local n = 1
- for firstutf in string.utfcharacters( first ) do
- local secondutf = unicode.utf8.sub( second, n, n )
- n = n + 1;
- if firstutf then
- if secondutf ~= "" then
- if firstutf ~= secondutf then
- local firstn, secondn
- if sortorderbychar then
- firstn = sortorderbychar[firstutf]
- secondn = sortorderbychar[secondutf]
- end
- if firstn and secondn then
- if firstn < secondn then
- return -1
- elseif firstn > secondn then
- return 1
- end
- else
- local firstclass = getclass( firstutf )
- local secondclass = getclass( secondutf )
- if firstclass < secondclass then
- return -1
- elseif firstclass == secondclass then
- local firstsubclass = getsubclass( firstutf)
- local secondsubclass = getsubclass( secondutf )
- if firstsubclass < secondsubclass then
- return -1
- elseif firstsubclass == secondsubclass then
- if firstutf < secondutf then
- return -1
- else
- return 1
- end
- else
- return 1
- end
- else
- return 1
- end
- end
- end
- else
- return 1
- end
- else
- if secondutf ~= "" then
- return -1
- else
- return 0 -- This should never happen!
- end
- end
- end
- if unicode.utf8.sub( second, n, n ) ~= "" then
- return -1
- else
- return 0
- end
-end
-local function do_indexcmp( firstsort, secondsort,
- presortreplaces, sortorderbychar )
- local pass = 0
- local ncmp = 0
- repeat
- if presortreplaces and presortreplaces[pass] then
- firstsort = do_presortreplaces( firstsort, presortreplaces[pass] )
- secondsort = do_presortreplaces( secondsort, presortreplaces[pass] )
- end
- pass = pass + 1
- ncmp = do_strcmp( firstsort, secondsort, sortorderbychar )
- until ( ncmp ~= 0 ) or ( pass > table.maxn( presortreplaces ) )
- return ncmp
-end
-local function subinsert( index, presortreplaces, sortorderbychar,
- pagestring, sortvalue, outputvalue, ... )
- local min = 1
- local max = table.maxn(index)
- local updown = 0
-
- local n = math.ceil(( min + max ) / 2)
- while min <= max do
- updown = do_indexcmp( sortvalue, index[n].sort,
- presortreplaces, sortorderbychar )
- if updown == 0 then
- if outputvalue == index[n].value then
- if ( ... ) then
- if ( index[n].subindex == nil ) then
- index[n].subindex = {}
- end
- subinsert( index[n].subindex, presortreplaces, sortorderbychar,
- pagestring, ... )
- else
- local i, p
- for i, p in ipairs( index[n].pages ) do
- if pagestring == p then
- return
- end
- end
- table.insert( index[n].pages, pagestring )
- end
- return
- else
- repeat
- n = n + 1
- if n <= max then
- updown = do_indexcmp( sortvalue, index[min].sort,
- presortreplaces, sortorderbychar )
- end
- until n > max or updown ~= 0
- min = n
- max = n-1
- end
- elseif updown > 0 then
- min = n+1
- else
- max = n-1
- end
- n = math.ceil(( min + max ) / 2)
- end
- if ( ... ) then
- table.insert( index, n,
- { sort=sortvalue, value=outputvalue, subindex={} } )
- subinsert( index[n].subindex, presortreplaces, sortorderbychar,
- pagestring, ... )
- else
- table.insert( index, n,
- { sort=sortvalue, value=outputvalue, pages={pagestring} } )
- end
-end
-function insert( indexname, pagestring, sortvalue, outputvalue, ... )
- local index=indexes[indexname]
- subinsert( index, index.presortreplaces, index.sortorderbychar,
- pagestring, sortvalue, outputvalue, ... )
-end
-function removeentries( indexname )
- local p = indexes[indexname].presortreplaces
- local s = indexes[indexname].sortorderbychar
- indexes[indexname]={ presortreplaces = p,
- sortorderbychar = s }
-end