flnews_post_proc 1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +381 -0
- data/bin/flnews_post_proc +128 -0
- data/doc/fr/html/flnews_post_proc.html +704 -0
- data/doc/fr/man/flnews_post_proc.1.gz +0 -0
- data/doc/fr/pdf/flnews_post_proc.pdf +0 -0
- data/doc/fr/rst/flnews_post_proc.rst +380 -0
- data/doc/html/flnews_post_proc.html +342 -0
- data/doc/license.txt +13 -0
- data/doc/man/flnews_post_proc.1.gz +0 -0
- data/doc/pdf/flnews_post_proc.pdf +0 -0
- data/doc/rst/flnews_post_proc.rst +336 -0
- data/lib/_quoting_style_regexp +2 -0
- data/lib/basic_logging.rb +202 -0
- data/lib/body.rb +364 -0
- data/lib/color_output.rb +65 -0
- data/lib/configuration.rb +143 -0
- data/lib/flnews_post_proc.conf +173 -0
- data/lib/flnews_post_proc.rb +72 -0
- data/lib/headers.rb +172 -0
- data/lib/newsgroups.rb +152 -0
- data/lib/override.rb +199 -0
- data/lib/ruby_dlg +139 -0
- data/lib/version.rb +22 -0
- data/lib/whiptail_dlg +84 -0
- data/lib/yad_dlg +53 -0
- data/lib/zenity_dlg +60 -0
- metadata +109 -0
@@ -0,0 +1,704 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
|
7
|
+
<title>Flnews_post_proc</title>
|
8
|
+
<style type="text/css">
|
9
|
+
|
10
|
+
/*
|
11
|
+
:Author: David Goodger (goodger@python.org)
|
12
|
+
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
13
|
+
:Copyright: This stylesheet has been placed in the public domain.
|
14
|
+
|
15
|
+
Default cascading style sheet for the HTML output of Docutils.
|
16
|
+
|
17
|
+
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
18
|
+
customize this style sheet.
|
19
|
+
*/
|
20
|
+
|
21
|
+
/* used to remove borders from tables and images */
|
22
|
+
.borderless, table.borderless td, table.borderless th {
|
23
|
+
border: 0 }
|
24
|
+
|
25
|
+
table.borderless td, table.borderless th {
|
26
|
+
/* Override padding for "table.docutils td" with "! important".
|
27
|
+
The right padding separates the table cells. */
|
28
|
+
padding: 0 0.5em 0 0 ! important }
|
29
|
+
|
30
|
+
.first {
|
31
|
+
/* Override more specific margin styles with "! important". */
|
32
|
+
margin-top: 0 ! important }
|
33
|
+
|
34
|
+
.last, .with-subtitle {
|
35
|
+
margin-bottom: 0 ! important }
|
36
|
+
|
37
|
+
.hidden {
|
38
|
+
display: none }
|
39
|
+
|
40
|
+
.subscript {
|
41
|
+
vertical-align: sub;
|
42
|
+
font-size: smaller }
|
43
|
+
|
44
|
+
.superscript {
|
45
|
+
vertical-align: super;
|
46
|
+
font-size: smaller }
|
47
|
+
|
48
|
+
a.toc-backref {
|
49
|
+
text-decoration: none ;
|
50
|
+
color: black }
|
51
|
+
|
52
|
+
blockquote.epigraph {
|
53
|
+
margin: 2em 5em ; }
|
54
|
+
|
55
|
+
dl.docutils dd {
|
56
|
+
margin-bottom: 0.5em }
|
57
|
+
|
58
|
+
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
59
|
+
overflow: hidden;
|
60
|
+
}
|
61
|
+
|
62
|
+
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
63
|
+
dl.docutils dt {
|
64
|
+
font-weight: bold }
|
65
|
+
*/
|
66
|
+
|
67
|
+
div.abstract {
|
68
|
+
margin: 2em 5em }
|
69
|
+
|
70
|
+
div.abstract p.topic-title {
|
71
|
+
font-weight: bold ;
|
72
|
+
text-align: center }
|
73
|
+
|
74
|
+
div.admonition, div.attention, div.caution, div.danger, div.error,
|
75
|
+
div.hint, div.important, div.note, div.tip, div.warning {
|
76
|
+
margin: 2em ;
|
77
|
+
border: medium outset ;
|
78
|
+
padding: 1em }
|
79
|
+
|
80
|
+
div.admonition p.admonition-title, div.hint p.admonition-title,
|
81
|
+
div.important p.admonition-title, div.note p.admonition-title,
|
82
|
+
div.tip p.admonition-title {
|
83
|
+
font-weight: bold ;
|
84
|
+
font-family: sans-serif }
|
85
|
+
|
86
|
+
div.attention p.admonition-title, div.caution p.admonition-title,
|
87
|
+
div.danger p.admonition-title, div.error p.admonition-title,
|
88
|
+
div.warning p.admonition-title, .code .error {
|
89
|
+
color: red ;
|
90
|
+
font-weight: bold ;
|
91
|
+
font-family: sans-serif }
|
92
|
+
|
93
|
+
/* Uncomment (and remove this text!) to get reduced vertical space in
|
94
|
+
compound paragraphs.
|
95
|
+
div.compound .compound-first, div.compound .compound-middle {
|
96
|
+
margin-bottom: 0.5em }
|
97
|
+
|
98
|
+
div.compound .compound-last, div.compound .compound-middle {
|
99
|
+
margin-top: 0.5em }
|
100
|
+
*/
|
101
|
+
|
102
|
+
div.dedication {
|
103
|
+
margin: 2em 5em ;
|
104
|
+
text-align: center ;
|
105
|
+
font-style: italic }
|
106
|
+
|
107
|
+
div.dedication p.topic-title {
|
108
|
+
font-weight: bold ;
|
109
|
+
font-style: normal }
|
110
|
+
|
111
|
+
div.figure {
|
112
|
+
margin-left: 2em ;
|
113
|
+
margin-right: 2em }
|
114
|
+
|
115
|
+
div.footer, div.header {
|
116
|
+
clear: both;
|
117
|
+
font-size: smaller }
|
118
|
+
|
119
|
+
div.line-block {
|
120
|
+
display: block ;
|
121
|
+
margin-top: 1em ;
|
122
|
+
margin-bottom: 1em }
|
123
|
+
|
124
|
+
div.line-block div.line-block {
|
125
|
+
margin-top: 0 ;
|
126
|
+
margin-bottom: 0 ;
|
127
|
+
margin-left: 1.5em }
|
128
|
+
|
129
|
+
div.sidebar {
|
130
|
+
margin: 0 0 0.5em 1em ;
|
131
|
+
border: medium outset ;
|
132
|
+
padding: 1em ;
|
133
|
+
background-color: #ffffee ;
|
134
|
+
width: 40% ;
|
135
|
+
float: right ;
|
136
|
+
clear: right }
|
137
|
+
|
138
|
+
div.sidebar p.rubric {
|
139
|
+
font-family: sans-serif ;
|
140
|
+
font-size: medium }
|
141
|
+
|
142
|
+
div.system-messages {
|
143
|
+
margin: 5em }
|
144
|
+
|
145
|
+
div.system-messages h1 {
|
146
|
+
color: red }
|
147
|
+
|
148
|
+
div.system-message {
|
149
|
+
border: medium outset ;
|
150
|
+
padding: 1em }
|
151
|
+
|
152
|
+
div.system-message p.system-message-title {
|
153
|
+
color: red ;
|
154
|
+
font-weight: bold }
|
155
|
+
|
156
|
+
div.topic {
|
157
|
+
margin: 2em }
|
158
|
+
|
159
|
+
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
160
|
+
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
161
|
+
margin-top: 0.4em }
|
162
|
+
|
163
|
+
h1.title {
|
164
|
+
text-align: center }
|
165
|
+
|
166
|
+
h2.subtitle {
|
167
|
+
text-align: center }
|
168
|
+
|
169
|
+
hr.docutils {
|
170
|
+
width: 75% }
|
171
|
+
|
172
|
+
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
173
|
+
clear: left ;
|
174
|
+
float: left ;
|
175
|
+
margin-right: 1em }
|
176
|
+
|
177
|
+
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
178
|
+
clear: right ;
|
179
|
+
float: right ;
|
180
|
+
margin-left: 1em }
|
181
|
+
|
182
|
+
img.align-center, .figure.align-center, object.align-center {
|
183
|
+
display: block;
|
184
|
+
margin-left: auto;
|
185
|
+
margin-right: auto;
|
186
|
+
}
|
187
|
+
|
188
|
+
table.align-center {
|
189
|
+
margin-left: auto;
|
190
|
+
margin-right: auto;
|
191
|
+
}
|
192
|
+
|
193
|
+
.align-left {
|
194
|
+
text-align: left }
|
195
|
+
|
196
|
+
.align-center {
|
197
|
+
clear: both ;
|
198
|
+
text-align: center }
|
199
|
+
|
200
|
+
.align-right {
|
201
|
+
text-align: right }
|
202
|
+
|
203
|
+
/* reset inner alignment in figures */
|
204
|
+
div.align-right {
|
205
|
+
text-align: inherit }
|
206
|
+
|
207
|
+
/* div.align-center * { */
|
208
|
+
/* text-align: left } */
|
209
|
+
|
210
|
+
.align-top {
|
211
|
+
vertical-align: top }
|
212
|
+
|
213
|
+
.align-middle {
|
214
|
+
vertical-align: middle }
|
215
|
+
|
216
|
+
.align-bottom {
|
217
|
+
vertical-align: bottom }
|
218
|
+
|
219
|
+
ol.simple, ul.simple {
|
220
|
+
margin-bottom: 1em }
|
221
|
+
|
222
|
+
ol.arabic {
|
223
|
+
list-style: decimal }
|
224
|
+
|
225
|
+
ol.loweralpha {
|
226
|
+
list-style: lower-alpha }
|
227
|
+
|
228
|
+
ol.upperalpha {
|
229
|
+
list-style: upper-alpha }
|
230
|
+
|
231
|
+
ol.lowerroman {
|
232
|
+
list-style: lower-roman }
|
233
|
+
|
234
|
+
ol.upperroman {
|
235
|
+
list-style: upper-roman }
|
236
|
+
|
237
|
+
p.attribution {
|
238
|
+
text-align: right ;
|
239
|
+
margin-left: 50% }
|
240
|
+
|
241
|
+
p.caption {
|
242
|
+
font-style: italic }
|
243
|
+
|
244
|
+
p.credits {
|
245
|
+
font-style: italic ;
|
246
|
+
font-size: smaller }
|
247
|
+
|
248
|
+
p.label {
|
249
|
+
white-space: nowrap }
|
250
|
+
|
251
|
+
p.rubric {
|
252
|
+
font-weight: bold ;
|
253
|
+
font-size: larger ;
|
254
|
+
color: maroon ;
|
255
|
+
text-align: center }
|
256
|
+
|
257
|
+
p.sidebar-title {
|
258
|
+
font-family: sans-serif ;
|
259
|
+
font-weight: bold ;
|
260
|
+
font-size: larger }
|
261
|
+
|
262
|
+
p.sidebar-subtitle {
|
263
|
+
font-family: sans-serif ;
|
264
|
+
font-weight: bold }
|
265
|
+
|
266
|
+
p.topic-title {
|
267
|
+
font-weight: bold }
|
268
|
+
|
269
|
+
pre.address {
|
270
|
+
margin-bottom: 0 ;
|
271
|
+
margin-top: 0 ;
|
272
|
+
font: inherit }
|
273
|
+
|
274
|
+
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
275
|
+
margin-left: 2em ;
|
276
|
+
margin-right: 2em }
|
277
|
+
|
278
|
+
pre.code .ln { color: grey; } /* line numbers */
|
279
|
+
pre.code, code { background-color: #eeeeee }
|
280
|
+
pre.code .comment, code .comment { color: #5C6576 }
|
281
|
+
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
282
|
+
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
283
|
+
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
284
|
+
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
285
|
+
pre.code .inserted, code .inserted { background-color: #A3D289}
|
286
|
+
|
287
|
+
span.classifier {
|
288
|
+
font-family: sans-serif ;
|
289
|
+
font-style: oblique }
|
290
|
+
|
291
|
+
span.classifier-delimiter {
|
292
|
+
font-family: sans-serif ;
|
293
|
+
font-weight: bold }
|
294
|
+
|
295
|
+
span.interpreted {
|
296
|
+
font-family: sans-serif }
|
297
|
+
|
298
|
+
span.option {
|
299
|
+
white-space: nowrap }
|
300
|
+
|
301
|
+
span.pre {
|
302
|
+
white-space: pre }
|
303
|
+
|
304
|
+
span.problematic {
|
305
|
+
color: red }
|
306
|
+
|
307
|
+
span.section-subtitle {
|
308
|
+
/* font-size relative to parent (h1..h6 element) */
|
309
|
+
font-size: 80% }
|
310
|
+
|
311
|
+
table.citation {
|
312
|
+
border-left: solid 1px gray;
|
313
|
+
margin-left: 1px }
|
314
|
+
|
315
|
+
table.docinfo {
|
316
|
+
margin: 2em 4em }
|
317
|
+
|
318
|
+
table.docutils {
|
319
|
+
margin-top: 0.5em ;
|
320
|
+
margin-bottom: 0.5em }
|
321
|
+
|
322
|
+
table.footnote {
|
323
|
+
border-left: solid 1px black;
|
324
|
+
margin-left: 1px }
|
325
|
+
|
326
|
+
table.docutils td, table.docutils th,
|
327
|
+
table.docinfo td, table.docinfo th {
|
328
|
+
padding-left: 0.5em ;
|
329
|
+
padding-right: 0.5em ;
|
330
|
+
vertical-align: top }
|
331
|
+
|
332
|
+
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
333
|
+
font-weight: bold ;
|
334
|
+
text-align: left ;
|
335
|
+
white-space: nowrap ;
|
336
|
+
padding-left: 0 }
|
337
|
+
|
338
|
+
/* "booktabs" style (no vertical lines) */
|
339
|
+
table.docutils.booktabs {
|
340
|
+
border: 0px;
|
341
|
+
border-top: 2px solid;
|
342
|
+
border-bottom: 2px solid;
|
343
|
+
border-collapse: collapse;
|
344
|
+
}
|
345
|
+
table.docutils.booktabs * {
|
346
|
+
border: 0px;
|
347
|
+
}
|
348
|
+
table.docutils.booktabs th {
|
349
|
+
border-bottom: thin solid;
|
350
|
+
text-align: left;
|
351
|
+
}
|
352
|
+
|
353
|
+
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
354
|
+
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
355
|
+
font-size: 100% }
|
356
|
+
|
357
|
+
ul.auto-toc {
|
358
|
+
list-style-type: none }
|
359
|
+
|
360
|
+
</style>
|
361
|
+
</head>
|
362
|
+
<body>
|
363
|
+
<div class="document" id="flnews-post-proc">
|
364
|
+
<h1 class="title">flnews_post_proc</h1>
|
365
|
+
<h2 class="subtitle" id="post-traitement-pour-flnews">Post-Traitement pour flnews</h2>
|
366
|
+
|
367
|
+
<div class="section" id="synopsis">
|
368
|
+
<h1>SYNOPSIS</h1>
|
369
|
+
<p>Un article est envoyé au logiciel de post-traitement via STDIN. Ceci se passe
|
370
|
+
automatiquement, quand la variable « post_proc » dans le fichier de
|
371
|
+
configuration de flnews a la valeur <em>flnews_post_proc</em>.</p>
|
372
|
+
<p>Si un article a été sauvegardé dans un fichier, il peut servir pour tester le
|
373
|
+
fonctionnement de flnews_post_proc, en lançant une commande comme :</p>
|
374
|
+
<blockquote>
|
375
|
+
<strong>flnews_post_proc < article.txt</strong></blockquote>
|
376
|
+
<p>ou si vous préférez l'équivalent :</p>
|
377
|
+
<blockquote>
|
378
|
+
<strong>cat article.txt | flnews_post_proc</strong></blockquote>
|
379
|
+
</div>
|
380
|
+
<div class="section" id="description">
|
381
|
+
<h1>DESCRIPTION</h1>
|
382
|
+
<p>Le lecteur de news <strong>flnews</strong> est suffisant pour l'accès au Usenet, c'est à
|
383
|
+
dire pour lire les articles et pour les rédiger et les envoyer aux newsgroups
|
384
|
+
de votre choix.</p>
|
385
|
+
<p>Quand vous comparez les clients pour les news, vous allez toujours identifier
|
386
|
+
le logiciel qui correspond à vos attentes et vos habitudes. Flnews, comme un
|
387
|
+
logiciel basique, vous offre la possibilité d'influencer comment il fonctionne
|
388
|
+
et aussi de manipuler directement les articles qu'il produit, juste avant qu'ils
|
389
|
+
soient envoyés au serveur nntp.</p>
|
390
|
+
<p>Ce post-traitement peut servir à ajouter et à modifier des détails du message
|
391
|
+
d'une manière qui n'est actuellement pas possible avec seulement flnews. Comme
|
392
|
+
le logiciel est configurable, il peut probablement répondre aux besoins de
|
393
|
+
quelques utilisateurs du Usenet. Quand même, vous devez le comprendre comme un
|
394
|
+
exemple pour ce qui est possible et pour inspiration, afin de créer vos propres
|
395
|
+
solutions.</p>
|
396
|
+
<div class="section" id="les-limites-d-un-lecteur-basique-de-news-ce-qui-peut-faire-flnews-post-proc">
|
397
|
+
<h2>Les limites d'un lecteur basique de news – ce qui peut faire flnews_post_proc</h2>
|
398
|
+
<p>Bien que les articles qui sont créés avec flnews sont complets et prêt pour
|
399
|
+
l'envoi, certains utilisateurs ne seront pas toujours d'accord avec le résultat
|
400
|
+
et ce pour des raisons arbitraires :</p>
|
401
|
+
<ul>
|
402
|
+
<li><p class="first">Il peut y avoir des inconvénients quand vous communiquez dans de groupes
|
403
|
+
diverses en plusieurs langues. La ligne d'introduction qui fait référence à
|
404
|
+
un article précédent, ne peut être configurée qu'une seule fois pour flnews.
|
405
|
+
La conséquence peut être une introduction en Anglais quand vous postez dans
|
406
|
+
un groupe français.</p>
|
407
|
+
<p>Avec mon logiciel de post-traitement vous pouvez imposer des introductions
|
408
|
+
spécifiques, à chaque fois pour une ou plusieurs newsgroups.</p>
|
409
|
+
</li>
|
410
|
+
<li><p class="first">Le même conflit se produit quand vous avez défini une signature mais voudriez
|
411
|
+
la remplacer contre une autre, selon le groupe dans lequel vous êtes en train
|
412
|
+
de poster.</p>
|
413
|
+
<p>flnews_post_proc peut faire exactement ça, quand vous avez configuré quel
|
414
|
+
signature doit apparaître dans quel newsgroup ou liste de newsgroups.</p>
|
415
|
+
</li>
|
416
|
+
<li><p class="first">Quelques entêtes supplémentaires peuvent servir à transmettre des informations
|
417
|
+
aux lecteurs intéressés, comme l'ID de votre clé GnuPG, vos connaissances en
|
418
|
+
langues ou pareil. Il se trouve que la signature est mieux pour ça, mais vous
|
419
|
+
êtes libres. Je veux mentionner « face » et « x-face » mais préfère que vous
|
420
|
+
ne vous en souvenez pas.</p>
|
421
|
+
<p>Ces entêtes, – Custom-Headers – peuvent être définis dans la configuration
|
422
|
+
du logiciel et vont être utilisées dans chaque article sortant.</p>
|
423
|
+
</li>
|
424
|
+
<li><p class="first">Les entêtes « Archive » et « X-No-Archive » sont parfois utilisés afin
|
425
|
+
d'éviter l'archivage d'un article. Il ne devrait par conséquence pas être
|
426
|
+
trouvé par les moteurs de recherche ( Google notamment ). Les articles dans
|
427
|
+
les groupes de test, par exemple, ne valent probablement pas qu'on les trouve
|
428
|
+
parmi les résultats des recherches.</p>
|
429
|
+
<p>Avec flnews_post_proc vous pouvez décider et imposer que vos articles dans
|
430
|
+
certains newsgroups contiendront d'office les deux entêtes <strong>Archive: no</strong> et
|
431
|
+
<strong>X-No-Archive: Yes</strong>.</p>
|
432
|
+
<p><strong>ATTENTION</strong>: Dès 2024, l'entête « X-No-Archive » a perdu beaucoup de son
|
433
|
+
utilité. Les opérateurs des serveurs peuvent décider s'ils veulent le prendre
|
434
|
+
en considération ou non.</p>
|
435
|
+
</li>
|
436
|
+
<li><p class="first">Certains messages mentionnent d'autres articles ou des URLs de pages Web.
|
437
|
+
S'ils sont nombreux, ces références peuvent déranger la lecture à cause de
|
438
|
+
leur syntaxe spécifique.</p>
|
439
|
+
<p>Mon logiciel est capable d'identifier des fragments de text marqué – pas
|
440
|
+
seulement des références – et les transformer en notes en bas de page. Vous
|
441
|
+
pouvez imaginer ça comme le fonctionnement de la balise <ref/> de Wikipedia,
|
442
|
+
mais vous pouvez définir votre propre séparateur pour marquer les fragments
|
443
|
+
de text dans le fichier de configuration.</p>
|
444
|
+
<p>Exemple ( avec séparateur <strong>%=</strong> ) :
|
445
|
+
« Ceci est un objet %=et ceci devient la note en bas de page, qui décrit
|
446
|
+
l'objet plus précisement=% »</p>
|
447
|
+
</li>
|
448
|
+
</ul>
|
449
|
+
</div>
|
450
|
+
<div class="section" id="dialogue-pour-desactiver-des-options">
|
451
|
+
<h2>Dialogue pour désactiver des options</h2>
|
452
|
+
<p>Juste avant d'entrer en action, flnews_post_proc peut afficher un dialogue, qui
|
453
|
+
vous laisse <strong>désactiver</strong> des options fixées dans la configuration. Sous
|
454
|
+
condition qu'un des outils YAD, Zenity, Whiptail ou seulement xterm est
|
455
|
+
disponible, vous pouvez choisir dans les options suivantes, ceux que vous
|
456
|
+
voulez ignorer pour l'article en préparation. Vous <strong>ne pouvez pas</strong> activer
|
457
|
+
des options, qui ne l'ont pas été auparavant :</p>
|
458
|
+
<ul class="simple">
|
459
|
+
<li>Signatures, comme définis dans la configuration <strong>peuvent être ignorées</strong>.
|
460
|
+
Soit une signature par défaut sera appliquée, si prévue, ou aucune.</li>
|
461
|
+
<li>Entêtes supplémentaires, si définis, peuvent rester absentes de l'article.</li>
|
462
|
+
<li>Les entêtes Archive et X-No-Archive, si prévus pour le newsgroup choisi,
|
463
|
+
peuvent être ignorés.</li>
|
464
|
+
<li>L'auto correction de URLs et références à d'autres articles peut être
|
465
|
+
désactivé.</li>
|
466
|
+
<li>L'écriture d'un protocole peut être arrêtée.</li>
|
467
|
+
</ul>
|
468
|
+
<p>En tapant Esc ou en poussant le bouton « Annuler » du dialogue, vous pouvez
|
469
|
+
interrompre le processus, flnews ne vas pas envoyer l'article.</p>
|
470
|
+
<p>Vous pouvez même désactiver le dialogue, ce qui assure que toutes les options
|
471
|
+
configurées seront appliquées sans plus d'interaction ( à voir dessous : optoin
|
472
|
+
OVERRIDE_CONFIG ).</p>
|
473
|
+
</div>
|
474
|
+
</div>
|
475
|
+
<div class="section" id="configuration">
|
476
|
+
<h1>CONFIGURATION</h1>
|
477
|
+
<p>La première fois que vous exécutez le logiciel, une copie de la configuration
|
478
|
+
par défaut sera écrit dans <em>/home/[utilisateur]/.flnews_post_proc.conf</em> C'est
|
479
|
+
ce fichier qui sera désormais utilisé. Si vous l'effacez, il sera recréé à la
|
480
|
+
prochaine occasion, mais vos modifications seront perdues.</p>
|
481
|
+
<p>Le fichier de configuration est en format YAML et plein d'explications. Les
|
482
|
+
variables définis dans ce fichier peuvent être classées en deux catégories :</p>
|
483
|
+
<ul class="simple">
|
484
|
+
<li>Variables qui décrivent des valeurs déterminées par flnews. Ils peuvent être
|
485
|
+
utiilisées ou remplacées. Les composants importants sont normalement
|
486
|
+
spécifiés dans une « capture group ».</li>
|
487
|
+
<li>Variables qui définissent du nouveau contenu ou des changements dans le
|
488
|
+
contenu.</li>
|
489
|
+
</ul>
|
490
|
+
<dl class="docutils">
|
491
|
+
<dt><strong>FUP_NAME</strong></dt>
|
492
|
+
<dd><p class="first">Une « expression régulière » ( “regular expression” ) décrivant la chaîne de
|
493
|
+
caractères qui contient le nom de l'auteur d'un article précédent, qu'on veut
|
494
|
+
citer en partie. Cet élément est reconnu dans l'article d'origine et peut
|
495
|
+
être utilisé à la place de l'élément correspondant dans <em>GROUP_INTRO</em> ( à voir
|
496
|
+
plus bas ). Le format de l'expression est celui de la classe Regexp dans Ruby.
|
497
|
+
Veillez de masquer le backslash '\' avec un autre, comme dans l'exemple. Un
|
498
|
+
« capture group » '()' sert à extraire le nom du résultat de la comparaison.</p>
|
499
|
+
<p>Laissez ce champs vide afin de maintenir le comportement configuré pour flnews.</p>
|
500
|
+
<p>CONTENU : L'équivalent d'une regular expression en chaîne de caractères.</p>
|
501
|
+
<p>PAR DÉFAUT : Vide</p>
|
502
|
+
<p>EXEMPLE 1 : "On \\d+.\\d+.\\d{2,4} at \\d+:\\d+ <strong>(.*)</strong> wrote:"</p>
|
503
|
+
<p class="last">EXEMPLE 2 : "<strong>(.*)</strong> wrote:"</p>
|
504
|
+
</dd>
|
505
|
+
<dt><strong>FUP_GROUP</strong></dt>
|
506
|
+
<dd><p class="first">Une « expression régulière » ( “regular expression” ) décrivant la chaîne de
|
507
|
+
caractères qui contient le newsgroup où a été publié l'article précédent à qui nous
|
508
|
+
faisons référence dans un « followup ».</p>
|
509
|
+
<p>Laissez ce champs vide afin d'ignorer le groupe précis.</p>
|
510
|
+
<p>CONTENU : l'équivalent d'une regular expression en chaîne de caractères.</p>
|
511
|
+
<p>PAR DÉFAUT : Vide</p>
|
512
|
+
<p class="last">EXEMPLE : "wrote in <strong>(.*)</strong>:"</p>
|
513
|
+
</dd>
|
514
|
+
<dt><strong>GROUP_INTROS</strong></dt>
|
515
|
+
<dd><p class="first">Des introductions qui font référence à l'auteur de l'article précédent que
|
516
|
+
nous souhaitons citer. Si vous avez trouvé le newsgroup où l'article a été
|
517
|
+
publié ( à voir : FUP_GROUP, ci-dessus ), et le nom de son auteur
|
518
|
+
( FUP_NAME ), vous pouvez utiliser ces valeurs ici.</p>
|
519
|
+
<p>Jusqu'à prochaine ordre, seulement %fup_name% est %fup_group% sont reproduit
|
520
|
+
dans l'introduction resultant.</p>
|
521
|
+
<div class="line-block">
|
522
|
+
<div class="line">CONTENU : Un newsgroup ou regexp par ligne, suivi de deux points, un espace et</div>
|
523
|
+
<div class="line-block">
|
524
|
+
<div class="line">une chaîne de caractères.</div>
|
525
|
+
</div>
|
526
|
+
</div>
|
527
|
+
<p>PAR DÉFAUT : Comme configuré dans flnews.</p>
|
528
|
+
<div class="last line-block">
|
529
|
+
<div class="line">EXEMPLE ( un groupe et une hiérarchie ) :</div>
|
530
|
+
<div class="line-block">
|
531
|
+
<div class="line">alt.test: "Thus spoke %fup_name% in %fup_group%"</div>
|
532
|
+
<div class="line">fr\.*: "C'était dans %fup_group%, que %fup_name% c'est exprimé ainsi"</div>
|
533
|
+
</div>
|
534
|
+
</div>
|
535
|
+
</dd>
|
536
|
+
<dt><strong>GROUP_SIGS</strong></dt>
|
537
|
+
<dd><p class="first">Une signature par newsgroup ou expression.
|
538
|
+
ATTN! Vous devez noter \r\n pour les sautes de lignes, si une signature
|
539
|
+
s'étend sur plusieurs lignes.</p>
|
540
|
+
<p>CONTENU : un newsgroup ou expression par ligne, suivi de deux poins, un espace
|
541
|
+
et une chaîne de caractères.</p>
|
542
|
+
<p>PAR DÉFAUT : Comme configuré dans flnews.</p>
|
543
|
+
<p class="last">EXEMPLE : fr.test: "Signature pour alt.test\r\nseconde ligne"</p>
|
544
|
+
</dd>
|
545
|
+
<dt><strong>CUSTOM_HEADERS</strong></dt>
|
546
|
+
<dd><p class="first">Entêtes supplémentaires pour l'article sortant.</p>
|
547
|
+
<p>CONTENU : 1 ligne par entête : un trait d'union, un espace, puis une chaîne de
|
548
|
+
caractères comprenant le nom de l'entête, puis deux points et la valeur de
|
549
|
+
l'entête.</p>
|
550
|
+
<p>PAR DÉFAUT : Vide ( pas défini )</p>
|
551
|
+
<div class="last line-block">
|
552
|
+
<div class="line">EXEMPLE ( 2 entêtes ) :</div>
|
553
|
+
<div class="line">- 'X-My-Header: nothing fancy'</div>
|
554
|
+
<div class="line">- 'X-Another-Header: care not!'</div>
|
555
|
+
</div>
|
556
|
+
</dd>
|
557
|
+
<dt><strong>NO_ARCHIVE_GROUPS</strong></dt>
|
558
|
+
<dd><p class="first">Les newsgroups, où les entêtes « Archive: no » et « X-No-Archive: yes »
|
559
|
+
doivent être présents.</p>
|
560
|
+
<p>CONTENU : Un trait d'union et un espace, puis une chaîne de caractères,
|
561
|
+
contenant le nom du groupe ou une expression.</p>
|
562
|
+
<p>PAR DÉFAUT : Vide</p>
|
563
|
+
<div class="last line-block">
|
564
|
+
<div class="line">EXEMPLE ( 1 groupe, 1 hiérarchie ) :</div>
|
565
|
+
<div class="line">- "alt.test"</div>
|
566
|
+
<div class="line">- "^news.*"</div>
|
567
|
+
</div>
|
568
|
+
</dd>
|
569
|
+
<dt><strong>DEBUG_LOG</strong></dt>
|
570
|
+
<dd><p class="first">Le nom d'un fichier, qui va servir comme protocol. Si le nom d'un fichier
|
571
|
+
valide est donné, le protocol est activé. Laissez vide pour désactiver le
|
572
|
+
protocol.</p>
|
573
|
+
<div class="line-block">
|
574
|
+
<div class="line">CONTENU : Le nom d'un fichier dont les droits permettent l'écriture.</div>
|
575
|
+
<div class="line-block">
|
576
|
+
<div class="line">Il sera créé s'il n'existe pas encore et remplacé à chaque exécution</div>
|
577
|
+
<div class="line">du logiciel.</div>
|
578
|
+
</div>
|
579
|
+
</div>
|
580
|
+
<p>PAR DÉFAUT : Vide</p>
|
581
|
+
<p class="last">EXEMPLE : '/tmp/a_log-file.txt'</p>
|
582
|
+
</dd>
|
583
|
+
<dt><strong>LOG LEVEL</strong></dt>
|
584
|
+
<dd><p class="first">Un de debug, fatal, error, info, warn</p>
|
585
|
+
<div class="last line-block">
|
586
|
+
<div class="line">EXEMPLE :</div>
|
587
|
+
<div class="line-block">
|
588
|
+
<div class="line">LOG_LEVEL: 'debug'</div>
|
589
|
+
</div>
|
590
|
+
</div>
|
591
|
+
</dd>
|
592
|
+
<dt><strong>REFERENCES_SEPARATOR</strong></dt>
|
593
|
+
<dd><p class="first">Un symbole ou une séquence de symboles qui marquent la fin du corps du message
|
594
|
+
et le début d'une liste de « références » ou « notes de pied de page ». Il
|
595
|
+
apparaîtra seulement, si le message contient du text marqué pour servir comme
|
596
|
+
note de pied de page. À voir <em>REFERENCES_DELIMITER</em> ci-dessous.</p>
|
597
|
+
<p>Si l'option n'est pas défini ou vide, la liste suit à la dernière ligne du
|
598
|
+
corps du message, sans séparation supplémentaire.</p>
|
599
|
+
<p>CONTENU : Un symbol ou séquence de symboles entre guillemets " " ou ' '.</p>
|
600
|
+
<p>PAR DÉFAUT : Vide</p>
|
601
|
+
<p class="last">EXEMPLE : '---------'</p>
|
602
|
+
</dd>
|
603
|
+
<dt><strong>REFERENCES_DELIMITER</strong></dt>
|
604
|
+
<dd><p class="first">Une séquence d'au moins deux symboles qui marque le début d'un text qui sera
|
605
|
+
transformé en note de pied de page ( ou référence ). La <strong>séquence inversée</strong>
|
606
|
+
doit marquer la fin du même fragment de text. La présence de cette séquence
|
607
|
+
dans le message d'origine, a comme conséquence que le text marqué sera déplacé
|
608
|
+
vers la fin, au-dessous du corps du message.
|
609
|
+
Si <em>REFERENCES_SEPARATOR</em> ( option ci-dessus ) est défini, il va séparer le message
|
610
|
+
de la liste des notes du pied de page.</p>
|
611
|
+
<p>Laissez ce champs vide pour éviter la création des noted du pied de page.</p>
|
612
|
+
<p>CONTENU : Une séquence de symboles entre guillemets ( '' )</p>
|
613
|
+
<p>PAR DÉFAUT : Vide</p>
|
614
|
+
<p class="last">EXEMPLE: '%?'</p>
|
615
|
+
</dd>
|
616
|
+
<dt><strong>REFERENCE_FORMAT</strong></dt>
|
617
|
+
<dd><p class="first">Une chaîne de formatage, contenant %s pour représenter une nombre, qui
|
618
|
+
remplace le texte d'une future note du pied de page dans le corps du message.</p>
|
619
|
+
<p>PAR DÉFAUT : " %s)" -> devient 1) ... 2) ... 3)</p>
|
620
|
+
<p class="last">EXEMPLE : "(%s)" -> devient (1) ... (2) ... (3)</p>
|
621
|
+
</dd>
|
622
|
+
<dt><strong>VFY_URLS</strong></dt>
|
623
|
+
<dd><p class="first">Une constante booléen. Elle détermine si le programme doit essayer de corriger
|
624
|
+
des URLs. Même si les URLs sont identifiables, seulement quelques manipulations
|
625
|
+
sont temptées :</p>
|
626
|
+
<ul class="simple">
|
627
|
+
<li>'<' et '>' sont ajoutés, si manquants</li>
|
628
|
+
<li>Des slashes sont insérés, s'ils manquent après "http(s):"</li>
|
629
|
+
</ul>
|
630
|
+
<p>ATTN! Le programme ne peut pas différencier entre "mailto:" et "news:". Si ni l'un
|
631
|
+
ni l'autre est donné, mais '@' est présent, "news:" est ajouté automatiquement.</p>
|
632
|
+
<p>Si la variable n'est pas défini, la valeur 'yes' est présumée.</p>
|
633
|
+
<p>CONTENU: Un de YES, yes, NO, no, et autres tels variations</p>
|
634
|
+
<p>PAR DÉFAUT: yes</p>
|
635
|
+
<p class="last">EXEMPLE: No</p>
|
636
|
+
</dd>
|
637
|
+
<dt><strong>OVERRIDE_CONFIG</strong></dt>
|
638
|
+
<dd><p class="first">Une constante booléenne. Vous pouvez décider d'ignorer les options suivantes
|
639
|
+
avant qu'un article est posté : GROUP_SIGS, XNAY_GROUPS, CUSTOM_HEADERS,
|
640
|
+
VFY_URLS et DEBUG_LOG. Un dialogue peut être affiché, qui permet la
|
641
|
+
désactivation de chacune de ces options. Les valeurs par défaut, définis pour
|
642
|
+
flnews, vont donc prévaloir.</p>
|
643
|
+
<p>ATTN ! En poussant Esc ou le bouton « Annuler » du dialogue, vous interrompez
|
644
|
+
le programme et flnews ne va rien envoyer.</p>
|
645
|
+
<p>Notez la valeur 'no', 'NO' ou pareil pour désactiver le dialogue.</p>
|
646
|
+
<p>PAR DÉFAUT : yes</p>
|
647
|
+
<p class="last">EXEMPLE: No</p>
|
648
|
+
</dd>
|
649
|
+
</dl>
|
650
|
+
</div>
|
651
|
+
<div class="section" id="autres-informations">
|
652
|
+
<h1>Autres Informations</h1>
|
653
|
+
<div class="section" id="tester">
|
654
|
+
<h2>Tester</h2>
|
655
|
+
<p>L'effet qu'aura l'exécution du programme peut être vérifié de deux manières :</p>
|
656
|
+
<ol class="arabic">
|
657
|
+
<li><p class="first">En fournissant un article, sauvegardé auparavant dans un fichier :</p>
|
658
|
+
<p><strong>:~$ /usr/local/bin/[post-processor] < [test-article]</strong></p>
|
659
|
+
<p>Ceci va vous présenter la nouvelle version de l'article sur l'écran, mais
|
660
|
+
vous pouvez aussi diriger le résultat dans un autre fichier. C'est une
|
661
|
+
excellente technique pour tester un logiciel pendant le développement ou
|
662
|
+
votre configuration avant que vous vous en servez.</p>
|
663
|
+
</li>
|
664
|
+
<li><p class="first">En envoyant un message directement dans un groupe de test ( comme alt.test,
|
665
|
+
fr.test ou similaires ).
|
666
|
+
Ceci est obligatoire avant que vous postez dans des groupes thématiques et
|
667
|
+
si les réglages du post-traitement vont modifier l'article.</p>
|
668
|
+
</li>
|
669
|
+
</ol>
|
670
|
+
</div>
|
671
|
+
<div class="section" id="code-source">
|
672
|
+
<h2>Code source</h2>
|
673
|
+
<p>Le fichier flnews_post_proc.gem, que vous recevez à l'aide de l'outil <em>gem</em> ou
|
674
|
+
directement du site <em>rubygems.org</em>, contient tout le code source du logiciel et
|
675
|
+
de la documentation ( cette page notamment ). Pour lire le code du logiciel,
|
676
|
+
vous devez</p>
|
677
|
+
<ol class="arabic simple">
|
678
|
+
<li>utiliser <em>tar -xf flnews_post_proc-[version].gem</em></li>
|
679
|
+
<li>décomprimer l'archive data.gz : <em>gunzip data.gz</em></li>
|
680
|
+
<li>Extraire le contenu du fichier résultant « data.tar » :
|
681
|
+
<em>tar -xf data.tar</em></li>
|
682
|
+
</ol>
|
683
|
+
<p>À la fin les répertoires bin, doc et lib seront créés.</p>
|
684
|
+
</div>
|
685
|
+
<div class="section" id="license">
|
686
|
+
<h2>License</h2>
|
687
|
+
<p>flnews_post_proc est distribué sous les conditions de la WTFPL-2.0 ou plus
|
688
|
+
récent ( À voir <a class="reference external" href="http://www.wtfpl.net/txt/copying/">http://www.wtfpl.net/txt/copying/</a> ou license-text dans le
|
689
|
+
répertoire « doc » de la gem ).</p>
|
690
|
+
</div>
|
691
|
+
<div class="section" id="auteur">
|
692
|
+
<h2>Auteur</h2>
|
693
|
+
<div class="line-block">
|
694
|
+
<div class="line">flnews_post_proc a été développé par</div>
|
695
|
+
<div class="line">Michael Uplawski <<a class="reference external" href="mailto:michael.uplawski@uplawski.eu">michael.uplawski@uplawski.eu</a>></div>
|
696
|
+
</div>
|
697
|
+
</div>
|
698
|
+
</div>
|
699
|
+
<div class="section" id="section-1">
|
700
|
+
<h1>Ω</h1>
|
701
|
+
</div>
|
702
|
+
</div>
|
703
|
+
</body>
|
704
|
+
</html>
|