Initialisation du projet wslsock
authorJean-Michel Sarlat <jm.sarlat@gmail.com>
Mon, 16 Apr 2012 18:57:05 +0000 (20:57 +0200)
committerJean-Michel Sarlat <jm.sarlat@gmail.com>
Mon, 16 Apr 2012 18:57:05 +0000 (20:57 +0200)
doc/gut2012/index.xml [new file with mode: 0644]
doc/gut2012/presentation.pdf [new file with mode: 0644]
doc/gut2012/wslsock-exemples.pdf [new file with mode: 0644]
doc/gut2012/wslsock-exemples.tex [new file with mode: 0644]
doc/index.xml [new file with mode: 0644]
index.xml [new file with mode: 0644]
web.xml [new file with mode: 0644]
wslsock.lua [new file with mode: 0644]
wslsock.sty [new file with mode: 0644]

diff --git a/doc/gut2012/index.xml b/doc/gut2012/index.xml
new file mode 100644 (file)
index 0000000..c74c9d4
--- /dev/null
@@ -0,0 +1,3 @@
+<simple>
+    <titre>Présentation (Journée GUTenberg 2012)</titre>
+</simple>
diff --git a/doc/gut2012/presentation.pdf b/doc/gut2012/presentation.pdf
new file mode 100644 (file)
index 0000000..adec9b7
Binary files /dev/null and b/doc/gut2012/presentation.pdf differ
diff --git a/doc/gut2012/wslsock-exemples.pdf b/doc/gut2012/wslsock-exemples.pdf
new file mode 100644 (file)
index 0000000..8880e8a
Binary files /dev/null and b/doc/gut2012/wslsock-exemples.pdf differ
diff --git a/doc/gut2012/wslsock-exemples.tex b/doc/gut2012/wslsock-exemples.tex
new file mode 100644 (file)
index 0000000..4a5acfb
--- /dev/null
@@ -0,0 +1,64 @@
+\documentclass[a4paper]{article}
+\usepackage[frenchb]{babel}
+\usepackage{wslsock}
+\usepackage[margin=2cm]{geometry}
+\usepackage[svgnames]{xcolor}
+\usepackage{graphicx}
+\usepackage{wsmath}
+\usepackage{mathpazo}
+\usepackage{fontspec}
+\setmainfont[Ligatures=TeX]{TeX Gyre Bonum}
+\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros}
+
+\usepackage{fancyvrb}
+\usepackage{pygmentize}
+\usepackage{framed}
+\newenvironment{gbar}[1][Wheat]{%
+  \def\FrameCommand{{\color{#1}\vrule width 3pt}\colorbox{Gainsboro}}%
+  \MakeFramed {\advance\hsize-\width \FrameRestore}}%
+{\endMakeFramed}
+
+\def\Exercice#1{{\color{FireBrick}#1}}
+
+\begin{document}
+
+{\noindent\LARGE\bfseries Exemples d'utilisation de wslsock}\\
+{\color{Gainsboro}\rule{\linewidth}{0.8mm}}\vspace{-1.2em}
+
+\begin{flushright}\small\itshape\color{DodgerBlue}
+Jean-Michel Sarlat --- \today
+\end{flushright}
+
+\section*{Inclusion de figures}
+
+La macro \verb+\wslsincludegraphics+ s'utilise comme
+\verb+\includegraphics+, à la différence que le fichier, s'il est
+introuvable en local, est téléchargé via l'\emph{url} dont la base
+est spécifiée via \verb+\wslsbase+.
+
+\begin{gbar}\input{inc/inc1-pyg.tex}\end{gbar}
+\input{inc/inc1.tex}
+
+\newpage
+
+\section*{Inclusion de segments}
+
+La macro \verb+\wslsinput+ se substitue à
+\verb+\input+ suivant la règle énoncée précedemment.
+
+\begin{gbar}\input{inc/inc2-pyg.tex}\end{gbar}
+{\setlength{\baselineskip}{1.4em}
+\input{inc/inc2.tex}
+}
+\newpage
+
+\section*{Inclusion de pages d'un fichier PDF}
+
+Avec \verb+\wslsockdownload+ on télécharge un fichier que l'on peut
+exploiter ensuite selon les méthodes usuelles.
+
+\begin{gbar}\input{inc/inc3-pyg.tex}\end{gbar}
+\input{inc/inc3.tex}
+
+
+\end{document}
\ No newline at end of file
diff --git a/doc/index.xml b/doc/index.xml
new file mode 100644 (file)
index 0000000..fb534ff
--- /dev/null
@@ -0,0 +1,3 @@
+<simple>
+    <titre>Documentation</titre>
+</simple>
diff --git a/index.xml b/index.xml
new file mode 100644 (file)
index 0000000..eea4603
--- /dev/null
+++ b/index.xml
@@ -0,0 +1,3 @@
+<simple>
+    <titre>Paquet wslsock</titre>
+</simple>
diff --git a/web.xml b/web.xml
new file mode 100644 (file)
index 0000000..f74109c
--- /dev/null
+++ b/web.xml
@@ -0,0 +1,4 @@
+<web>
+  <titre>wslsock</titre>
+  <auteur>Jean-Michel Sarlat</auteur>
+</web>
\ No newline at end of file
diff --git a/wslsock.lua b/wslsock.lua
new file mode 100644 (file)
index 0000000..8ea3b17
--- /dev/null
@@ -0,0 +1,55 @@
+-- Détermination de la taille d'un fichier
+function wsls_fsize (name)
+  fso = io.open(name, "r")
+  s = fso:seek("end")
+  io.close(fso)
+  return s
+end
+
+-- Détermination de l'extension d'un fichier
+function wsls_fext (name)
+  return string.match(name, "(%.%a+)$")
+end
+
+-- Détermination du fichier
+function wsls_fname (tail)
+  return string.match(tail, "/?([%a%d%.%-]+)$")
+end
+
+-- GET simple
+function wsls_get (base, tail)
+  http = require("socket.http")
+  ltn12 = require("ltn12")
+  file = wsls_fname(tail)
+  out = io.open(file, "w")
+  r, c, h = http.request {
+    url = "http://" .. base .. tail,
+    sink = ltn12.sink.file(out)
+  }
+  if c == 200 then
+    print ("Le fichier " .. file .. "(" .. 
+      wsls_fsize(file) .. " octets) est transféré !")
+  end
+end
+
+
+-- PUT simple
+function wsls_put (base, tail)
+  http = require("socket.http")
+  ltn12 = require("ltn12")
+  file = wsls_fname(tail)
+  r, c, h = http.request {
+    method = "PUT",
+    url = "http://" .. base .. tail,
+    source = ltn12.source.file(io.open(file)),
+    headers = {
+      ["content-length"] = wsls_fsize(file)
+    }
+  }
+  if c == 200 then
+    print ("Le fichier " .. file .. "(" ..
+      wsls_fsize(file) .. " octets) est transféré !")
+  end
+end
+
+
diff --git a/wslsock.sty b/wslsock.sty
new file mode 100644 (file)
index 0000000..d0fc4b4
--- /dev/null
@@ -0,0 +1,24 @@
+
+\directlua{dofile("wslsock.lua")}
+
+\newcommand\wslsbase[1]{
+ \gdef\WSLSbase{#1}
+}
+
+\newcommand\wslsinput[1]{
+  \edef\fichier{\directlua{tex.print(wsls_fname("#1"))}}%
+  \IfFileExists{\fichier}{}{\directlua{wsls_get("\WSLSbase","#1")}}%
+  \input{\fichier}
+}
+
+\newcommand\wslsdownload[1]{
+  \edef\fichier{\directlua{tex.print(wsls_fname("#1"))}}%
+  \IfFileExists{\fichier}{}{\directlua{wsls_get("\WSLSbase","#1")}}%
+}
+
+\newcommand\wslsincludegraphics[2][]{
+  \edef\fichier{\directlua{tex.print(wsls_fname("#2"))}}%
+  \IfFileExists{\fichier}{}{\directlua{wsls_get("\WSLSbase","#2")}}%
+  \includegraphics[#1]{\fichier}
+}
+

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.