diff options
Diffstat (limited to 'macros/luatex/latex/luahttp/luahttp.sty')
-rw-r--r-- | macros/luatex/latex/luahttp/luahttp.sty | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/macros/luatex/latex/luahttp/luahttp.sty b/macros/luatex/latex/luahttp/luahttp.sty new file mode 100644 index 0000000000..226c234d0f --- /dev/null +++ b/macros/luatex/latex/luahttp/luahttp.sty @@ -0,0 +1,91 @@ +%% luahttp.sty +%% Copyright 2023 Johannes Casaburi +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Johannes Casaburi (johannes.casaburi@protonmail.com). +% +% This work consists of the files luahttp.sty, display.lua and fetch.lua. + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{luahttp}[LuaHTTP Package, Version 1.0] + +\RequirePackage{ifluatex} +\RequirePackage{url} +\RequirePackage{xparse} + +\ifluatex + \RequirePackage{luapackageloader} + \directlua{ + version = 5.3 + package.path = 'lua_modules/share/lua/' .. version .. '/?.lua;lua_modules/share/lua/' .. version .. '/?/init.lua;' .. package.path + package.cpath = 'lua_modules/lib/lua/' .. version .. '/?.so;' .. package.cpath + display = require("display") + } + + % \fetchJson{URL}[optional: "key1,key2,.."] + \NewDocumentCommand{\fetchJson}{m o}{ + \IfNoValueTF{#2} + {\directlua{display.json("\luaescapestring{#1}")}} % without arg 2 + {\directlua{display.json("\luaescapestring{#1}", "\luaescapestring{#2}")}} + } + + % \fetchJsonUsingFile{JSON file}[optional: "key1,key2,.."] + \NewDocumentCommand{\fetchJsonUsingFile}{m o}{ + \IfNoValueTF{#2} + {\directlua{display.json_using_file("\luaescapestring{#1}")}} % without arg 2 + {\directlua{display.json_using_file("\luaescapestring{#1}", "\luaescapestring{#2}")}} + } + + % \fetchJsonUsingQuery{URL}{"key1,key2,.."} [optional: "queryparameter1=value1"] .. [optional: "queryparameter5=value5"] + \NewDocumentCommand{\fetchJsonUsingQuery}{m m o o o o o}{ + \IfNoValueTF{#7} + {\IfNoValueTF{#6} + {\IfNoValueTF{#5} + {\IfNoValueTF{#4} + {\IfNoValueTF{#3} + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}")}} + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}")}} + } + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}")}} + } + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}")}} + } + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}", "\luaescapestring{#6}")}} + } + {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}", "\luaescapestring{#6}", "\luaescapestring{#7}")}} + } + + % \fetchRss{URL}{limit}[optional: "feedinfokey1,feedinfokey2,.."][optional: "entrykey1,entrykey2,.."] + \NewDocumentCommand{\fetchRss}{m m o o}{ + \IfNoValueTF{#4} + {\IfNoValueTF{#3} + {\directlua{display.rss("\luaescapestring{#1}", #2)}} + {\directlua{display.rss("\luaescapestring{#1}", #2, "\luaescapestring{#3}")}} + } % without arg 4 + {\directlua{display.rss("\luaescapestring{#1}", #2, "\luaescapestring{#3}", "\luaescapestring{#4}")} + } + } + + %\fetchImage{URL}[optional: width][optional: height] + \NewDocumentCommand{\fetchImage}{m o o}{ + \IfNoValueTF{#2} + {\directlua{display.image("\luaescapestring{#1}")}} % whithout arg 2 + {\IfNoValueTF{#3} + {\directlua{display.image("\luaescapestring{#1}", "\luaescapestring{#2}")}} % without arg 3 + {\directlua{display.image("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}")}} + } + } + +\else + \PackageError{luatexhttp}{LuaTeX is required}\@ehd + \expandafter\endinput % abort early +\fi |