summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/xindex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-03 22:49:28 +0000
committerKarl Berry <karl@freefriends.org>2018-12-03 22:49:28 +0000
commit510cc1b8395f714ec6c1b7299cf73371563b1a16 (patch)
treeef1d3f055e87db8e906501a88ca550b861ac22e2 /Master/texmf-dist/scripts/xindex
parentf855360800d3dd036378f102ca41cf5fa3e87db1 (diff)
xindex (2dec18)
git-svn-id: svn://tug.org/texlive/trunk@49312 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/xindex')
-rwxr-xr-xMaster/texmf-dist/scripts/xindex/xindex.lua176
1 files changed, 176 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/xindex/xindex.lua b/Master/texmf-dist/scripts/xindex/xindex.lua
new file mode 100755
index 00000000000..83ade61e03e
--- /dev/null
+++ b/Master/texmf-dist/scripts/xindex/xindex.lua
@@ -0,0 +1,176 @@
+#!/usr/bin/env texlua
+-----------------------------------------------------------------------
+-- FILE: xindex.lua
+-- DESCRIPTION: create an index
+-- REQUIREMENTS:
+-- AUTHOR: Herbert Voß
+-- LICENSE: LPPL 1.3
+-----------------------------------------------------------------------
+
+ xindex = xindex or { }
+ local version = 0.05
+xindex.version = version
+--xindex.self = "xindex"
+
+--[[doc--
+
+xindex(1)
+
+This file is provided under the terms of the LPPL v1.3 or
+later as printed in full text in the manual (xindex.pdf).
+
+\url{https://ctan.org/license/lppl1.3}.
+
+Report bugs to
+
+ \url{https://gitlab.com/hvoss49/xindex/issues}.
+
+--doc]]--
+
+kpse.set_program_name("luatex")
+
+require("lualibs") -- all part of LuaTeX
+require('unicode')
+require('string')
+require("lpeg")
+
+
+local args = require ('xindex-lapp') [[
+ parameter handling
+ -q,--quiet
+ -h,--help
+ -v... Verbosity level; can be -v, -vv, -vvv
+ -c,--config (default cfg)
+ -e,--escapechar (default ")
+ -n,--noheadings
+ -o,--output (default "")
+ -l,--language (default en)
+ <input> (string)
+]]
+
+
+--[[
+ No -v flag, v is just { false }. not args.v[1] is true, so vlevel becomes 0.
+ One -v flags, v is { true }
+ Two -v flags, v is { true, true }
+ Three -v flags, v is { true, true, true }
+]]
+
+vlevel = not args.v[1] and 0 or #args.v
+not_quiet = not args["quiet"]
+
+--[[
+if args.h then
+print(
+Syntax: xinput [options] <file>
+By default the Lua program "xindex" creates a so-called
+.ind file, which has the same main filename as the input file
+unless you are using the option "-o <output file>" There will
+be no log file created.
+)
+end
+]]
+
+
+--[[
+if not args["input"] then
+ io.write ("Filename: ")
+ inFile = io.read()
+else
+ inFile = args["input"]
+end
+]]
+
+require('xindex-lib')
+
+inFile = args["input"]
+if not file_exists(inFile) then
+ if file_exists(inFile..".idx") then
+ inFile = inFile..".idx"
+ else
+ writeLog(2,"Inputfile "..inFile.." or "..inFile..".idx not found!\n",0)
+ os.exit()
+ end
+end
+
+local filename
+local logfilename
+if args["output"] == '""' then
+ if inFile:sub(inFile:len()-3,inFile:len()) == ".idx" then
+ filename = inFile:sub(1,inFile:len()-3).."ind"
+ logfilename = inFile:sub(1,inFile:len()-3).."ilg"
+ else
+ filename = inFile..".ind"
+ logfilename = inFile..".ilg"
+ end
+else
+ filename = args.output
+ logfilename = filename:gsub('%p...','')..".ilg"
+end
+
+logFile = io.open(logfilename,"w+")
+writeLog(2,"xindex v."..version.." (c) Herbert Voß\n",-1)
+writeLog(1,"Verbose level = "..vlevel.."\n",1)
+
+writeLog(2,"Open outputfile "..filename,0)
+outFile = io.open(filename,"w+")
+writeLog(2," ... done\n",0)
+
+if vlevel > 0 then
+ writeLog(1,"---------- parameter ----------\n",1)
+ for k,v in pairs(args) do
+ writeLog(1,tostring(k)..", "..tostring(v).."\n",1)
+ end
+ for k=1,#args.v do
+ writeLog(1,"v["..k.."]= "..tostring(args.v[k]).."\n",1)
+ end
+ writeLog(1,"---------- parameter ----------\n",1)
+end
+
+writeLog(2,"Using input file: "..inFile.."\n",0)
+
+writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1)
+Config_File_Common = kpse.find_file("xindex-cfg-common.lua")
+cfg_common = require(Config_File_Common)
+
+local config_file = "xindex-"..args.config..".lua"
+writeLog(2,"Loading local config file "..config_file,0)
+Config_File = kpse.find_file(config_file)
+cfg = require(Config_File)
+writeLog(2," ... done\n",0)
+
+local esc_char = args.escapechar
+writeLog(2,"Escapechar = "..esc_char.."\n",1)
+escape_chars = { -- by default " is the escape char
+ {esc_char..'"', '//escapedquote//', '\\"{}' },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', "|" },
+ {esc_char..'!', '//scapedexcl//', '!' }
+}
+
+language = string.lower(args["language"])
+writeLog(2,"Language = "..language.."\n",1)
+index_header = indexheader[language]
+if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end
+page_folium = folium[language]
+
+
+no_headings = args["noheadings"]
+if no_headings then
+ writeLog(1,"Output with NO headings between different first letter\n",1)
+else
+ writeLog(1,"Output with headings between different first letter\n",1)
+end
+
+writeLog(2,"Open outputfile "..filename,0)
+outFile = io.open(filename,"w+")
+writeLog(2,"... done\n",0)
+
+
+writeLog(1,"Starting base file ... \n",2)
+BaseRunFile = kpse.find_file("xindex-base.lua")
+dofile(BaseRunFile)
+
+logFile:close()
+
+