flnews_post_proc 1.91 → 1.93b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e17e4be42296bfb10faf914f36e8453ef54cdab18174a5c069b145fbe75f4976
4
- data.tar.gz: d0c0de705ac9cc26595952ee32a113dc2d2b7f66850d2232bc63aa96eb2f43af
3
+ metadata.gz: f6fe16934baacc6cd321805179264c34fd2b47d2de48452130d753f5bed342f1
4
+ data.tar.gz: 13c5c2ae66d07cbcfc16f7133322aa94478c07de788649c56b69ed28d91933e4
5
5
  SHA512:
6
- metadata.gz: 0a93b95e176331607537ab17ab6739bfc02283133662402df8db6b05eb5b0c6f36252ff6dd49d8dc4b45b34cf18c3181c6b363834a60dbe59d823465c2f5b7c1
7
- data.tar.gz: e4517634172349c97fd9062b5044b8b7982aa1a034c3fdef9e47d5fe754fd0f5cef662d8b0c677ce06ed1cfed6b20caaf99f8d181a0a8b1b333d07e29e5baa34
6
+ metadata.gz: 3a20c7a6685869a15e9559a56b31d92e966452d7608fe9ce7e5f899a82247b00149569805ad7b12ad498d931c133ffb92b48b3160b5c259aa45f0aaa8c4f7f04
7
+ data.tar.gz: 46161bd2b67b5763d6f22d19b92d7bd3c4f0ad3ffe2e9da6d157bca2315864fa585e51305653f4461047c36289146e3ab02e34fa0a718ae80890b0cee79f9779
Binary file
Binary file
@@ -1,377 +1,705 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE html>
3
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
3
  <head>
5
- <meta charset="utf-8" />
6
- <meta name="generator" content="Docutils 0.22.4: https://docutils.sourceforge.io/" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1" />
8
- <title>Flnews_post_proc</title>
9
- <style type="text/css">
4
+ <meta name="generator" content=
5
+ "HTML Tidy for HTML5 for Linux version 5.8.0" />
6
+ <meta charset="utf-8" />
7
+ <meta name="generator" content=
8
+ "Docutils 0.22.4: https://docutils.sourceforge.io/" />
9
+ <meta name="viewport" content=
10
+ "width=device-width, initial-scale=1" />
11
+ <title>Flnews_post_proc</title>
12
+ <style type="text/css">
13
+ /*<![CDATA[*/
10
14
 
11
- /*
12
- :Author: Michael Uplawski
13
- :Contact: michael.uplawski@uplawski.eu
14
- :License: WTFPL 2.0, see http://www.wtfpl.net/about/
15
+ /*
16
+ :Author: Michael Uplawski
17
+ :Contact: michael.uplawski@uplawski.eu
18
+ :License: WTFPL 2.0, see http://www.wtfpl.net/about/
15
19
 
16
- Stylesheet for use with Docutils.
17
- */
20
+ Stylesheet for use with Docutils.
21
+ */
18
22
 
19
- body {
23
+ body {
20
24
  background-color:#e0f0c0;
21
25
  font-family: Verdana,Helvetica,Univers;
22
- }
26
+ }
23
27
 
24
- p {width: 80%;}
28
+ p {width: 80%;}
25
29
 
26
- h1.title {color:#800080;font-size:2em;}
27
- h2 {color:darkblue;font-size:1.5em;}
28
- h3 {color:#3030f0;font-size:1em;}
30
+ h1.title {color:#800080;font-size:2em;}
31
+ h2 {color:darkblue;font-size:1.5em;}
32
+ h3 {color:#3030f0;font-size:1em;}
29
33
 
30
- nav:before {
34
+ nav:before {
31
35
  content:'Contents';
32
36
  font-weight:bold;
33
37
  color:darkblue;
34
38
  font-size:1.5em;
35
- }
39
+ }
36
40
 
37
- p, ul.simple, ol.simple, dt {margin-left:2em;}
38
- dd {margin-left:4em;}
41
+ p, ul.simple, ol.simple, dt {margin-left:2em;}
42
+ dd {margin-left:4em;}
39
43
 
40
- /* correct left margin of nested block tags*/
41
- dd p, li p {margin-left:0;}
42
- dd * ul {margin-left:0 ! important; }
43
- dd ul {margin-left:0 ! important; }
44
- dd dl dt, dd dl dd {margin-left:0 ! important;}
44
+ /* correct left margin of nested block tags*/
45
+ dd p, li p {margin-left:0;}
46
+ dd * ul {margin-left:0 ! important; }
47
+ dd ul {margin-left:0 ! important; }
48
+ dd dl dt, dd dl dd {margin-left:0 ! important;}
45
49
 
46
- em {color:#000080;
50
+ em {color:#000080;
47
51
  background-color:#ffffa0;
48
- }
52
+ }
49
53
 
50
- pre.literal-block {
54
+ pre.literal-block {
51
55
  margin-left:2em;
52
56
  font-family:Verdana,Helvetica,Univers;
53
- }8
54
- blockquote {background-color:#ffc090;
57
+ }8
58
+ blockquote {background-color:#ffc090;
55
59
  padding:0.5em;
56
60
  width:80%;
57
61
  border-radius:0.5em;
58
- }
62
+ }
59
63
 
60
64
 
61
- </style>
65
+ /*]]>*/
66
+ </style>
62
67
  </head>
63
68
  <body class="with-toc">
64
- <main id="flnews-post-proc">
65
- <h1 class="title">flnews_post_proc</h1>
66
- <p class="subtitle" id="post-processor-for-the-flnews-newsreader">Post-Processor for the flnews Newsreader</p>
67
-
68
- <nav class="contents local" id="contents" role="doc-toc">
69
- <ul class="simple">
70
- <li><p><a class="reference internal" href="#synopsis-1" id="toc-entry-1">SYNOPSIS</a></p></li>
71
- <li><p><a class="reference internal" href="#description-1" id="toc-entry-2">DESCRIPTION</a></p>
72
- <ul>
73
- <li><p><a class="reference internal" href="#limitations-of-basic-newsreaders-1" id="toc-entry-3">Limitations of Basic Newsreaders</a></p></li>
74
- <li><p><a class="reference internal" href="#dialog-for-overriding-settings-1" id="toc-entry-4">Dialog for Overriding Settings</a></p></li>
75
- </ul>
76
- </li>
77
- <li><p><a class="reference internal" href="#configuration-1" id="toc-entry-5">CONFIGURATION</a></p>
78
- <ul>
79
- <li><p><a class="reference internal" href="#configuration-options" id="toc-entry-6">Configuration Options</a></p></li>
80
- </ul>
81
- </li>
82
- <li><p><a class="reference internal" href="#other-information-1" id="toc-entry-7">Other Information</a></p>
83
- <ul>
84
- <li><p><a class="reference internal" href="#signatures-in-supersedes-1" id="toc-entry-8">Signatures in Supersedes</a></p></li>
85
- <li><p><a class="reference internal" href="#testing-1" id="toc-entry-9">Testing</a></p></li>
86
- <li><p><a class="reference internal" href="#source-code-1" id="toc-entry-10">Source Code</a></p></li>
87
- <li><p><a class="reference internal" href="#license-1" id="toc-entry-11">License</a></p></li>
88
- <li><p><a class="reference internal" href="#author-1" id="toc-entry-12">Author</a></p></li>
89
- </ul>
90
- </li>
91
- <li><p><a class="reference internal" href="#section-1" id="toc-entry-13">Ω</a></p></li>
92
- </ul>
93
- </nav>
94
- <section id="synopsis-1">
95
- <span id="synopsis"></span><h2>SYNOPSIS</h2>
96
- <p>The post-processor is invoked by piping an article into it. This typically
97
- occurs automatically when the &quot;post_proc&quot; variable is set to <strong>flnews_post_proc</strong>
98
- in the flnews <a class="reference internal" href="#configuration">configuration</a> file.</p>
99
- <p>For testing purposes, you can also pipe locally stored articles into the
100
- post-processor using a command like:</p>
101
- <blockquote>
102
- <p><strong>flnews_post_proc</strong> &lt; article</p>
103
- </blockquote>
104
- <p>.or:</p>
105
- <blockquote>
106
- <p>cat article.txt | <strong>flnews_post_proc</strong></p>
107
- </blockquote>
108
- </section>
109
- <section id="description-1">
110
- <span id="description"></span><h2>DESCRIPTION</h2>
111
- <p>The flnews newsreader fully supports Usenet access, enabling the reception and
112
- reading of articles from newsgroups, as well as composing and posting them.</p>
113
- <p>When comparing various news clients, differences will often influence your
114
- choice of preferred client. Flnews distinguishes itself by not only offering
115
- control over its internal behavior, but also by allowing you to modify outgoing
116
- posts just before they are sent to the configured NNTP server.</p>
117
- <p>The <strong>flnews_post_proc</strong> program can be used to modify and enhance a post in ways
118
- that flnews alone cannot. It is configurable and may meet the needs of some
119
- Usenet users, though it is primarily intended as a starting point for creating
120
- your own custom solutions.</p>
121
- <section id="limitations-of-basic-newsreaders-1">
122
- <span id="limitations-of-basic-newsreaders"></span><h3>Limitations of Basic Newsreaders</h3>
123
- <p>While flnews creates posts that are generally complete and ready for
124
- submission, there are instances where users might find the output
125
- unsatisfactory for arbitrary reasons:</p>
126
- <ul>
127
- <li><p>If you're posting to different newsgroups in multiple languages, the
128
- introductory line referencing a prior post can only be set once in the flnews
129
- <a class="reference internal" href="#configuration">configuration</a> file. As a result, posts to a French newsgroup, for example,
130
- may start with an introduction in English. The post-processor can address
131
- this by setting specific introductory lines for each newsgroup.</p></li>
132
- <li><p>Similar issues arise when you set a standard signature and want it to vary
133
- based on the newsgroup. The post-processor allows different signatures to be
134
- used for different newsgroups, and you can even randomize the selection from
135
- a list of signatures stored in a file.</p></li>
136
- <li><p>Custom headers, such as GnuPG key IDs or your language proficiency, can also
137
- be added to posts, though signatures may be a better alternative. Custom
138
- headers can be defined in the <a class="reference internal" href="#configuration">configuration</a> file and will be added to
139
- outgoing posts.</p></li>
140
- <li><p>Headers like &quot;Archive&quot; and &quot;X-No-Archive&quot; are sometimes set to prevent an
141
- article from being indexed by search engines (e.g., Google). For example,
142
- test posts likely don't need to be included in search results. The
143
- post-processor can apply both headers to all posts sent to certain
144
- newsgroups.</p>
145
- <p><strong>NOTE</strong>: As of 2024, the &quot;X-No-Archive&quot; header has limited effectiveness,
146
- and it is up to server operators whether or not to honor it.</p>
147
- </li>
148
- <li><p>Posts that include many references to other posts or URLs can become
149
- cluttered. The post-processor can convert marked text into footnotes, similar
150
- to the &lt;ref/&gt; link format used in Wikipedia, with the delimiter configurable
151
- in the <a class="reference internal" href="#configuration">configuration</a> file.
152
- Example (using %=): &quot;This is an object %=and this becomes the footnote,
153
- describing the object further=%&quot;</p></li>
154
- </ul>
155
- </section>
156
- <section id="dialog-for-overriding-settings-1">
157
- <span id="dialog-for-overriding-settings"></span><h3>Dialog for Overriding Settings</h3>
158
- <p><strong>IMPORTANT</strong>: As of version 1.72, YAD or Zenity cannot be used for the dialog
159
- interface.</p>
160
- <p>Before the post-processor runs, a dialog can be displayed to allow users to
161
- <strong>disable</strong> certain <a class="reference internal" href="#configuration">configuration</a> options. If Whiptail or xterm are available,
162
- you can choose to disable the following options. You <strong>cannot</strong> enable options
163
- that haven't already been set in the <a class="reference internal" href="#configuration">configuration</a>.</p>
164
- <ul class="simple">
165
- <li><p>Signatures (if set in the <a class="reference internal" href="#configuration">configuration</a>) can be <strong>ignored</strong>. A default
166
- signature will be used, or no signature at all.</p></li>
167
- <li><p>Custom headers can be <strong>omitted</strong>.</p></li>
168
- <li><p>The &quot;Archive&quot; and &quot;X-No-Archive&quot; headers can be <strong>ignored</strong> if set for the
169
- current newsgroup.</p></li>
170
- <li><p>Logging can be <strong>disabled</strong>, if enabled.</p></li>
171
- </ul>
172
- <p>Pressing Esc or the Cancel button on the dialog will interrupt the process, and
173
- flnews will not post the article.</p>
174
- <p>To disable the dialog entirely (and apply all configured options without
175
- further interaction), set the <strong>OVERRIDE_CONFIG</strong> option.</p>
176
- </section>
177
- </section>
178
- <section id="configuration-1">
179
- <span id="configuration"></span><h2>CONFIGURATION</h2>
180
- <p>Upon first execution of the program, a copy of the original configuration file
181
- is created in <em>/home/[user]/.flnews_post_proc.conf</em>. This file is used
182
- thereafter. Deleting it will cause the file to be recreated, but any custom
183
- changes will be lost.</p>
184
- <p>The configuration file uses YAML syntax and includes detailed explanations. The
185
- variables within it fall into two categories:</p>
186
- <ol class="arabic simple">
187
- <li><p>Variables that represent values originally set by flnews, which can be used
188
- or replaced. These elements are typically captured using regular
189
- expressions.</p></li>
190
- <li><p>Variables that define new or modified content.</p></li>
191
- </ol>
192
- <section id="configuration-options">
193
- <h3>Configuration Options</h3>
194
- <!-- empty lines in the following definition list are in reality '\ ' -->
195
- <p><strong>FUP_NAME</strong></p>
196
- <blockquote>
197
- <p>A regular expression that matches the name of the previous poster in a
198
- quoted post. This string is recognized in the original article and used
199
- with the matching element from <a class="reference internal" href="#group-intros">GROUP_INTROS</a>.</p>
200
- <p>Leave this field empty to retain the default value from the FLNews
201
- configuration.</p>
202
- <p>CONTENT: A string representing a regular expression.</p>
203
- <p>DEFAULT: EMPTY</p>
204
- <p>EXAMPLE1: &quot;On \\d+.\\d+.\\d{2,4} at \\d+:\\d+ <strong>(.*)</strong> wrote:&quot;</p>
205
- <p>EXAMPLE2: &quot;<strong>(.*)</strong> wrote:&quot;</p>
206
- </blockquote>
207
- <p id="fup-group"><strong>FUP_GROUP</strong></p>
208
- <blockquote>
209
- <p>A regular expression that matches the newsgroup where the quoted post was
210
- published.</p>
211
- <p>Leave this field empty to ignore the exact group.</p>
212
- <p>CONTENT: A string representing a regular expression.</p>
213
- <p>DEFAULT: EMPTY</p>
214
- <p>EXAMPLE: &quot;wrote in <strong>(.*)</strong>:&quot;</p>
215
- </blockquote>
216
- <p id="group-intros"><strong>GROUP_INTROS</strong></p>
217
- <blockquote>
218
- <p>Introductory strings referring to the previous poster in a quoted post.
219
- When the newsgroup matches <a class="reference internal" href="#fup-group">FUP_GROUP</a>, these variables are used in the
220
- resulting introduction.</p>
221
- <p>CONTENT: A newsgroup or regular expression per line, followed by a colon,
222
- space, and string.</p>
223
- <p>DEFAULT: As configured in FLNews.</p>
224
- <p>EXAMPLE: alt.test: &quot;Thus spoke %fup_name% on that baleful %fup_date%:&quot;</p>
225
- </blockquote>
226
- <p><strong>GROUP_SIGS</strong></p>
227
- <blockquote>
228
- <p>Signature lines for each newsgroup or a path to a file containing
229
- signatures, which should be formatted and separated by one empty line. A
230
- random signature is picked from the file for each newsgroup. You can also
231
- source another file within the signature file by starting a line with
232
- &quot;. /path/to/other/file&quot;.</p>
233
- <p>CONTENT: A newsgroup or regular expression per line, followed by a colon,
234
- space, and string.</p>
235
- <p>DEFAULT: As configured in flnews.</p>
236
- <p>EXAMPLE:</p>
237
- <pre class="literal-block">alt.test: &quot;Signature for alt.test\\r\\nsecond line&quot;
69
+ <main id="flnews-post-proc">
70
+ <h1 class="title">flnews_post_proc</h1>
71
+
72
+ <p class="subtitle" id=
73
+ "post-processor-for-the-flnews-newsreader">Post-Processor for
74
+ the <a class="reference external" href=
75
+ "https://micha.freeshell.org/flnews/">flnews</a> Newsreader</p>
76
+
77
+ <nav class="contents local" id="contents" role="doc-toc">
78
+ <ul class="simple">
79
+ <li>
80
+ <p><a class="reference internal" href="#synopsis-1" id=
81
+ "toc-entry-1">SYNOPSIS</a>
82
+ </p>
83
+ </li>
84
+
85
+ <li>
86
+ <p><a class="reference internal" href="#description-1"
87
+ id="toc-entry-2">DESCRIPTION</a>
88
+ </p>
89
+
90
+ <ul>
91
+ <li>
92
+ <p><a class="reference internal" href=
93
+ "#limitations-of-basic-newsreaders-1" id=
94
+ "toc-entry-3">Limitations of Basic Newsreaders</a>
95
+ </p>
96
+ </li>
97
+
98
+ <li>
99
+ <p><a class="reference internal" href=
100
+ "#dialog-for-overriding-settings-1" id=
101
+ "toc-entry-4">Dialog for Overriding Settings</a>
102
+ </p>
103
+ </li>
104
+ </ul>
105
+ </li>
106
+
107
+ <li>
108
+ <p><a class="reference internal" href="#configuration-1"
109
+ id="toc-entry-5">CONFIGURATION</a>
110
+ </p>
111
+
112
+ <ul>
113
+ <li>
114
+ <p><a class="reference internal" href=
115
+ "#configuration-options" id=
116
+ "toc-entry-6">Configuration Options</a>
117
+ </p>
118
+ </li>
119
+ </ul>
120
+ </li>
121
+
122
+ <li>
123
+ <p><a class="reference internal" href=
124
+ "#other-information-1" id="toc-entry-7">Other
125
+ Information</a>
126
+ </p>
127
+
128
+ <ul>
129
+ <li>
130
+ <p><a class="reference internal" href=
131
+ "#signatures-in-supersedes-1" id=
132
+ "toc-entry-8">Signatures in Supersedes</a>
133
+ </p>
134
+ </li>
135
+
136
+ <li>
137
+ <p><a class="reference internal" href="#testing-1"
138
+ id="toc-entry-9">Testing</a>
139
+ </p>
140
+ </li>
141
+
142
+ <li>
143
+ <p><a class="reference internal" href=
144
+ "#source-code-1" id="toc-entry-10">Source Code</a>
145
+ </p>
146
+ </li>
147
+
148
+ <li>
149
+ <p><a class="reference internal" href="#license-1"
150
+ id="toc-entry-11">License</a>
151
+ </p>
152
+ </li>
153
+
154
+ <li>
155
+ <p><a class="reference internal" href="#author-1" id=
156
+ "toc-entry-12">Author</a>
157
+ </p>
158
+ </li>
159
+ </ul>
160
+ </li>
161
+ </ul>
162
+ </nav>
163
+
164
+ <section id="synopsis-1">
165
+ <span id="synopsis"></span>
166
+ <h2>SYNOPSIS</h2>
167
+
168
+ <p>The post-processor is invoked by piping an article into
169
+ it. This typically occurs automatically when the "post_proc"
170
+ variable is set to <strong>flnews_post_proc</strong> in the
171
+ flnews <a class="reference internal" href=
172
+ "#configuration">configuration</a> file.</p>
173
+
174
+ <p>For testing purposes, you can also pipe locally stored
175
+ articles into the post-processor using a command like:</p>
176
+
177
+ <blockquote>
178
+ <p><strong>flnews_post_proc</strong> &lt; article</p>
179
+ </blockquote>
180
+
181
+ <p>.or:</p>
182
+
183
+ <blockquote>
184
+ <p>cat article.txt | <strong>flnews_post_proc</strong></p>
185
+ </blockquote>
186
+ </section>
187
+
188
+ <section id="description-1">
189
+ <span id="description"></span>
190
+ <h2>DESCRIPTION</h2>
191
+
192
+ <p>The flnews newsreader fully supports Usenet access,
193
+ enabling the reception and reading of articles from
194
+ newsgroups, as well as composing and posting them.</p>
195
+
196
+ <p>When comparing various news clients, differences will
197
+ often influence your choice of preferred client. Flnews
198
+ distinguishes itself by not only offering control over its
199
+ internal behavior, but also by allowing you to modify
200
+ outgoing posts just before they are sent to the configured
201
+ NNTP server.</p>
202
+
203
+ <p>The <strong>flnews_post_proc</strong> program can be used
204
+ to modify and enhance a post in ways that flnews alone
205
+ cannot. It is configurable and may meet the needs of some
206
+ Usenet users, though it is primarily intended as a starting
207
+ point for creating your own custom solutions.</p>
208
+
209
+ <section id="limitations-of-basic-newsreaders-1">
210
+ <span id="limitations-of-basic-newsreaders"></span>
211
+ <h3>Limitations of Basic Newsreaders</h3>
212
+
213
+ <p>While flnews creates posts that are generally complete
214
+ and ready for submission, there are instances where users
215
+ might find the output unsatisfactory for arbitrary
216
+ reasons:</p>
217
+
218
+ <ul>
219
+ <li>
220
+ <p>If you're posting to different newsgroups in
221
+ multiple languages, the introductory line referencing a
222
+ prior post can only be set once in the flnews <a class=
223
+ "reference internal" href=
224
+ "#configuration">configuration</a> file. As a result,
225
+ posts to a French newsgroup, for example, may start
226
+ with an introduction in English. The post-processor can
227
+ address this by setting specific introductory lines for
228
+ each newsgroup.</p>
229
+ </li>
230
+
231
+ <li>
232
+ <p>Similar issues arise when you set a standard
233
+ signature and want it to vary based on the newsgroup.
234
+ The post-processor allows different signatures to be
235
+ used for different newsgroups, and you can even
236
+ randomize the selection from a list of signatures
237
+ stored in a file.</p>
238
+ </li>
239
+
240
+ <li>
241
+ <p>Custom headers, such as GnuPG key IDs or your
242
+ language proficiency, can also be added to posts,
243
+ though signatures may be a better alternative. Custom
244
+ headers can be defined in the <a class=
245
+ "reference internal" href=
246
+ "#configuration">configuration</a> file and will be
247
+ added to outgoing posts.</p>
248
+ </li>
249
+
250
+ <li>
251
+ <p>Headers like "Archive" and "X-No-Archive" are
252
+ sometimes set to prevent an article from being indexed
253
+ by search engines (e.g., Google). For example, test
254
+ posts likely don't need to be included in search
255
+ results. The post-processor can apply both headers to
256
+ all posts sent to certain newsgroups.</p>
257
+
258
+ <p><strong>NOTE</strong>: As of 2024, the
259
+ "X-No-Archive" header has limited effectiveness, and it
260
+ is up to server operators whether or not to honor
261
+ it.</p>
262
+ </li>
263
+
264
+ <li>
265
+ <p>Posts that include many references to other posts or
266
+ URLs can become cluttered. The post-processor can
267
+ convert marked text into footnotes, similar to the
268
+ &lt;ref/&gt; link format used in Wikipedia, with the
269
+ delimiter configurable in the <a class=
270
+ "reference internal" href=
271
+ "#configuration">configuration</a> file. Example (using
272
+ %=): "This is an object %=and this becomes the
273
+ footnote, describing the object further=%"</p>
274
+ </li>
275
+ </ul>
276
+ </section>
277
+
278
+ <section id="dialog-for-overriding-settings-1">
279
+ <span id="dialog-for-overriding-settings"></span>
280
+ <h3>Dialog for Overriding Settings</h3>
281
+
282
+ <p><strong>IMPORTANT</strong>: As of version 1.72, YAD or
283
+ Zenity cannot be used for the dialog interface.</p>
284
+
285
+ <p>Before the post-processor runs, a dialog can be
286
+ displayed to allow users to <strong>disable</strong>
287
+ certain <a class="reference internal" href=
288
+ "#configuration">configuration</a> options. If Whiptail or
289
+ xterm are available, you can choose to disable the
290
+ following options. You <strong>cannot</strong> enable
291
+ options that haven't already been set in the <a class=
292
+ "reference internal" href=
293
+ "#configuration">configuration</a>.</p>
294
+
295
+ <ul class="simple">
296
+ <li>
297
+ <p>Signatures (if set in the <a class=
298
+ "reference internal" href=
299
+ "#configuration">configuration</a>) can be
300
+ <strong>ignored</strong>. A default signature will be
301
+ used, or no signature at all.</p>
302
+ </li>
303
+
304
+ <li>
305
+ <p>Custom headers can be <strong>omitted</strong>.</p>
306
+ </li>
307
+
308
+ <li>
309
+ <p>The "Archive" and "X-No-Archive" headers can be
310
+ <strong>ignored</strong> if set for the current
311
+ newsgroup.</p>
312
+ </li>
313
+
314
+ <li>
315
+ <p>Logging can be <strong>disabled</strong>, if
316
+ enabled.</p>
317
+ </li>
318
+ </ul>
319
+
320
+ <p>Pressing Esc or the Cancel button on the dialog will
321
+ interrupt the process, and flnews will not post the
322
+ article.</p>
323
+
324
+ <p>To disable the dialog entirely (and apply all configured
325
+ options without further interaction), set the
326
+ <strong>OVERRIDE_CONFIG</strong> option.</p>
327
+ </section>
328
+ </section>
329
+
330
+ <section id="configuration-1">
331
+ <span id="configuration"></span>
332
+ <h2>CONFIGURATION</h2>
333
+
334
+ <p>Upon first execution of the program, a copy of the
335
+ original configuration file is created in
336
+ <em>/home/[user]/.flnews_post_proc.conf</em>. This file is
337
+ used thereafter. Deleting it will cause the file to be
338
+ recreated, but any custom changes will be lost.</p>
339
+
340
+ <p>The configuration file uses YAML syntax and includes
341
+ detailed explanations. The variables within it fall into two
342
+ categories:</p>
343
+
344
+ <ol class="arabic simple">
345
+ <li>
346
+ <p>Variables that represent values originally set by
347
+ flnews, which can be used or replaced. These elements are
348
+ typically captured using regular expressions.</p>
349
+ </li>
350
+
351
+ <li>
352
+ <p>Variables that define new or modified content.</p>
353
+ </li>
354
+ </ol>
355
+
356
+ <section id="configuration-options">
357
+ <h3>Configuration Options</h3>
358
+ <!-- empty lines in the following definition list are in reality '\ ' -->
359
+
360
+ <p><strong>FUP_NAME</strong>
361
+ </p>
362
+
363
+ <blockquote>
364
+ <p>A regular expression that matches the name of the
365
+ previous poster in a quoted post. This string is
366
+ recognized in the original article and used with the
367
+ matching element from <a class="reference internal" href=
368
+ "#group-intros">GROUP_INTROS</a>.</p>
369
+
370
+ <p>Leave this field empty to retain the default value
371
+ from the FLNews configuration.</p>
372
+
373
+ <p>CONTENT: A string representing a regular
374
+ expression.</p>
375
+
376
+ <p>DEFAULT: EMPTY</p>
377
+
378
+ <p>EXAMPLE1: "On \\d+.\\d+.\\d{2,4} at \\d+:\\d+
379
+ <strong>(.*)</strong> wrote:"</p>
380
+
381
+ <p>EXAMPLE2: "<strong>(.*)</strong> wrote:"</p>
382
+ </blockquote>
383
+
384
+ <p id="fup-group"><strong>FUP_GROUP</strong>
385
+ </p>
386
+
387
+ <blockquote>
388
+ <p>A regular expression that matches the newsgroup where
389
+ the quoted post was published.</p>
390
+
391
+ <p>Leave this field empty to ignore the exact group.</p>
392
+
393
+ <p>CONTENT: A string representing a regular
394
+ expression.</p>
395
+
396
+ <p>DEFAULT: EMPTY</p>
397
+
398
+ <p>EXAMPLE: "wrote in <strong>(.*)</strong>:"</p>
399
+ </blockquote>
400
+
401
+ <p id="group-intros"><strong>GROUP_INTROS</strong>
402
+ </p>
403
+
404
+ <blockquote>
405
+ <p>Introductory strings referring to the previous poster
406
+ in a quoted post. When the newsgroup matches <a class=
407
+ "reference internal" href="#fup-group">FUP_GROUP</a>,
408
+ these variables are used in the resulting
409
+ introduction.</p>
410
+
411
+ <p>CONTENT: A newsgroup or regular expression per line,
412
+ followed by a colon, space, and string.</p>
413
+
414
+ <p>DEFAULT: As configured in FLNews.</p>
415
+
416
+ <p>EXAMPLE: alt.test: "Thus spoke %fup_name% on that
417
+ baleful %fup_date%:"</p>
418
+ </blockquote>
419
+
420
+ <p><strong>GROUP_SIGS</strong>
421
+ </p>
422
+
423
+ <blockquote>
424
+ <p>Signature lines for each newsgroup or a path to a file
425
+ containing signatures, which should be formatted and
426
+ separated by one empty line. A random signature is picked
427
+ from the file for each newsgroup. You can also source
428
+ another file within the signature file by starting a line
429
+ with ". /path/to/other/file".</p>
430
+
431
+ <p>CONTENT: A newsgroup or regular expression per line,
432
+ followed by a colon, space, and string.</p>
433
+
434
+ <p>DEFAULT: As configured in flnews.</p>
435
+
436
+ <p>EXAMPLE:</p>
437
+
438
+ <pre class=
439
+ "literal-block">alt.test: "Signature for alt.test\\r\\nsecond line"
238
440
  comp.*: /home/[user]/.my_sigs</pre>
239
- </blockquote>
240
- <p><strong>CUSTOM_HEADERS</strong></p>
241
- <blockquote>
242
- <p>Additional custom headers to be added to outgoing articles.</p>
243
- <p>CONTENT: One line per header, starting with a dash and space, followed by
244
- the header name and value.</p>
245
- <p>DEFAULT: Undefined</p>
246
- <p>EXAMPLE:</p>
247
- <pre class="literal-block">- 'X-My-Header: nothing fancy'
441
+ </blockquote>
442
+
443
+ <p><strong>CUSTOM_HEADERS</strong>
444
+ </p>
445
+
446
+ <blockquote>
447
+ <p>Additional custom headers to be added to outgoing
448
+ articles.</p>
449
+
450
+ <p>CONTENT: One line per header, starting with a dash and
451
+ space, followed by the header name and value.</p>
452
+
453
+ <p>DEFAULT: Undefined</p>
454
+
455
+ <p>EXAMPLE:</p>
456
+
457
+ <pre class="literal-block">- 'X-My-Header: nothing fancy'
248
458
  - 'X-Another-Header: care not!'</pre>
249
- </blockquote>
250
- <p><strong>NO_ARCHIVE_GROUPS</strong></p>
251
- <blockquote>
252
- <p>Newsgroups where the &quot;Archive: no&quot; and &quot;X-No-Archive: YES&quot; headers should
253
- be set.</p>
254
- <p>CONTENT: A line with a dash and space, followed by the group name or a
255
- regular expression.</p>
256
- <p>DEFAULT: Empty</p>
257
- <p>EXAMPLE:</p>
258
- <pre class="literal-block">- &quot;alt.test&quot;
259
- - &quot;^news.*&quot;</pre>
260
- </blockquote>
261
- <p><strong>DEBUG_LOG</strong></p>
262
- <blockquote>
263
- <p>The name of the file where debug messages are logged. If specified, logging
264
- will be enabled. If empty, logging is disabled.</p>
265
- <p>CONTENT: The name of a writable file, which will be created if it doesn't
266
- exist and overwritten if necessary.</p>
267
- <p>DEFAULT: Empty</p>
268
- <p>EXAMPLE: '/tmp/a_log-file.txt'</p>
269
- </blockquote>
270
- <p><strong>LOG LEVEL</strong></p>
271
- <blockquote>
272
- <p>One of: debug, fatal, error, info, warn.</p>
273
- </blockquote>
274
- <p><strong>REFERENCES_SEPARATOR</strong></p>
275
- <blockquote>
276
- <p>A symbol or sequence marking the end of the message body and the beginning
277
- of a footnote list. If not defined, footnotes are appended directly after
278
- the message body.</p>
279
- <p>CONTENT: A quoted symbol or sequence.</p>
280
- <p>DEFAULT: Empty</p>
281
- <p>EXAMPLE: '---------'</p>
282
- </blockquote>
283
- <p><strong>REFERENCES_DELIMITER</strong></p>
284
- <blockquote>
285
- <p>A sequence marking the beginning and end of text to be used as a footnote
286
- or reference. The reversed sequence is used to mark the end.</p>
287
- <p>CONTENT: A quoted symbol or sequence.</p>
288
- <p>DEFAULT: None (empty)</p>
289
- <p>EXAMPLE: '%?'</p>
290
- </blockquote>
291
- <p><strong>REFERENCE_FORMAT</strong></p>
292
- <blockquote>
293
- <p>A format string using <cite>%s</cite> for a number to replace the reference text in
294
- the body.</p>
295
- <p>DEFAULT: &quot; %s)&quot; → becomes 1) ... 2) ... 3)</p>
296
- <p>EXAMPLE: &quot;(%s)&quot; → becomes (1) ... (2) ... (3)</p>
297
- </blockquote>
298
- <p><strong>VFY_URLS</strong></p>
299
- <blockquote>
300
- <p>A boolean constant determining whether URLs should be verified and
301
- corrected if necessary. URL manipulations include adding angular brackets
302
- ('&lt;', '&gt;') and slashes after &quot;http(s):&quot;.</p>
303
- <p>CONTENT: One of YES, yes, NO, no (case insensitive).</p>
304
- <p>DEFAULT: yes</p>
305
- <p>EXAMPLE: ... I leave this to your discretion.</p>
306
- </blockquote>
307
- <p id="override-dialog"><strong>OVERRIDE_CONFIG</strong></p>
308
- <blockquote>
309
- <p>A boolean constant that controls whether configuration options can be
310
- overridden before posting.</p>
311
- <p>Set this to &quot;no&quot; to disable the dialog.</p>
312
- <p>DEFAULT: yes</p>
313
- <p>EXAMPLE: No</p>
314
- </blockquote>
315
- </section>
316
- </section>
317
- <section id="other-information-1">
318
- <span id="other-information"></span><h2>Other Information</h2>
319
- <section id="signatures-in-supersedes-1">
320
- <span id="signatures-in-supersedes"></span><h3>Signatures in Supersedes</h3>
321
- <p>When superseding an existing post, the post-processor will NOT automatically add a signature.
322
- This preserves the original post content as much as possible.</p>
323
- <p>To retain the signature from the original post:</p>
324
- <ol class="arabic simple">
325
- <li><p>In flnews, select the entire article body with the mouse—from the first line
326
- (including any introductions) down to the last line of the signature.</p></li>
327
- <li><p>From the Article menu, select <strong>Supersede</strong>.</p></li>
328
- <li><p>Edit the article text as needed. The signature will be included in the
329
- editable text (normally, flnews strips signatures before opening the editor).</p></li>
330
- <li><p>Send the article.</p></li>
331
- </ol>
332
- <p><strong>Note:</strong> The <a class="reference internal" href="#override-dialog">override dialog</a> (see above) does not affect signatures in superseding posts.</p>
333
- </section>
334
- <section id="testing-1">
335
- <span id="testing"></span><h3>Testing</h3>
336
- <p>You can verify the post-processor’s effect by using one of two methods:</p>
337
- <ol class="arabic">
338
- <li><p>Pipe a saved post into the program:</p>
339
- <p><strong>:~$ /usr/local/bin/[post-processor] &lt; [test-article]</strong></p>
340
- <p>This will show the modified article, and you can pipe it into another file
341
- for further testing.</p>
342
- </li>
343
- <li><p>Post directly to a test newsgroup (e.g., alt.test). This is essential before
344
- posting to real newsgroups, especially when the post-processor will alter
345
- the article.</p></li>
346
- </ol>
347
- </section>
348
- <section id="source-code-1">
349
- <span id="source-code"></span><h3>Source Code</h3>
350
- <p>The gem file for the program, available via the gem utility or <a class="reference external" href="https://rubygems.org/gems/flnews_post_proc">rubygems.org</a>,
351
- contains all the source code and documentation (this page included). To extract
352
- it, do the following:</p>
353
- <ol class="arabic simple">
354
- <li><p>Extract the gem file: <cite>tar -xf flnews_post_proc-0.1.gem</cite></p></li>
355
- <li><p>Uncompress the data archive: <cite>gunzip data.gz</cite></p></li>
356
- <li><p>Extract the data archive: <cite>tar -xf data.tar</cite></p></li>
357
- </ol>
358
- <p>This will create the directories <cite>bin</cite>, <cite>doc</cite>, and <cite>lib</cite>.</p>
359
- </section>
360
- <section id="license-1">
361
- <span id="license"></span><h3>License</h3>
362
- <p>The <strong>flnews_post_proc</strong> is distributed under the <a class="reference external" href="https://www.wtfpl.net/about/">WTFPL-2.0</a> or later License. For
363
- the complete license text, visit <a class="reference external" href="http://www.wtfpl.net/txt/copying/">http://www.wtfpl.net/txt/copying/</a> or refer to
364
- the license file in the documentation directory of the gem.</p>
365
- </section>
366
- <section id="author-1">
367
- <span id="author"></span><h3>Author</h3>
368
- <p><strong>flnews_post_proc</strong> has been developed by
369
- Michael Uplawski &lt;<a class="reference external" href="mailto:michael.uplawski&#64;uplawski.eu">michael.uplawski&#64;uplawski.eu</a>&gt;</p>
370
- </section>
371
- </section>
372
- <section id="section-1">
373
- <h2>Ω</h2>
374
- </section>
375
- </main>
459
+ </blockquote>
460
+
461
+ <p><strong>NO_ARCHIVE_GROUPS</strong>
462
+ </p>
463
+
464
+ <blockquote>
465
+ <p>Newsgroups where the "Archive: no" and "X-No-Archive:
466
+ YES" headers should be set.</p>
467
+
468
+ <p>CONTENT: A line with a dash and space, followed by the
469
+ group name or a regular expression.</p>
470
+
471
+ <p>DEFAULT: Empty</p>
472
+
473
+ <p>EXAMPLE:</p>
474
+
475
+ <pre class="literal-block">- "alt.test"
476
+ - "^news.*"</pre>
477
+ </blockquote>
478
+
479
+ <p><strong>DEBUG_LOG</strong>
480
+ </p>
481
+
482
+ <blockquote>
483
+ <p>The name of the file where debug messages are logged.
484
+ If specified, logging will be enabled. If empty, logging
485
+ is disabled.</p>
486
+
487
+ <p>CONTENT: The name of a writable file, which will be
488
+ created if it doesn't exist and overwritten if
489
+ necessary.</p>
490
+
491
+ <p>DEFAULT: Empty</p>
492
+
493
+ <p>EXAMPLE: '/tmp/a_log-file.txt'</p>
494
+ </blockquote>
495
+
496
+ <p><strong>LOG LEVEL</strong>
497
+ </p>
498
+
499
+ <blockquote>
500
+ <p>One of: debug, fatal, error, info, warn.</p>
501
+ </blockquote>
502
+
503
+ <p><strong>REFERENCES_SEPARATOR</strong>
504
+ </p>
505
+
506
+ <blockquote>
507
+ <p>A symbol or sequence marking the end of the message
508
+ body and the beginning of a footnote list. If not
509
+ defined, footnotes are appended directly after the
510
+ message body.</p>
511
+
512
+ <p>CONTENT: A quoted symbol or sequence.</p>
513
+
514
+ <p>DEFAULT: Empty</p>
515
+
516
+ <p>EXAMPLE: '---------'</p>
517
+ </blockquote>
518
+
519
+ <p><strong>REFERENCES_DELIMITER</strong>
520
+ </p>
521
+
522
+ <blockquote>
523
+ <p>A sequence marking the beginning and end of text to be
524
+ used as a footnote or reference. The reversed sequence is
525
+ used to mark the end.</p>
526
+
527
+ <p>CONTENT: A quoted symbol or sequence.</p>
528
+
529
+ <p>DEFAULT: None (empty)</p>
530
+
531
+ <p>EXAMPLE: '%?'</p>
532
+ </blockquote>
533
+
534
+ <p><strong>REFERENCE_FORMAT</strong>
535
+ </p>
536
+
537
+ <blockquote>
538
+ <p>A format string using <cite>%s</cite> for a number to
539
+ replace the reference text in the body.</p>
540
+
541
+ <p>DEFAULT: " %s)" → becomes 1) ... 2) ... 3)</p>
542
+
543
+ <p>EXAMPLE: "(%s)" → becomes (1) ... (2) ... (3)</p>
544
+ </blockquote>
545
+
546
+ <p><strong>VFY_URLS</strong>
547
+ </p>
548
+
549
+ <blockquote>
550
+ <p>A boolean constant determining whether URLs should be
551
+ verified and corrected if necessary. URL manipulations
552
+ include adding angular brackets ('&lt;', '&gt;') and
553
+ slashes after "http(s):".</p>
554
+
555
+ <p>CONTENT: One of YES, yes, NO, no (case
556
+ insensitive).</p>
557
+
558
+ <p>DEFAULT: yes</p>
559
+
560
+ <p>EXAMPLE: ... I leave this to your discretion.</p>
561
+ </blockquote>
562
+
563
+ <p id="override-dialog"><strong>OVERRIDE_CONFIG</strong>
564
+ </p>
565
+
566
+ <blockquote>
567
+ <p>A boolean constant that controls whether configuration
568
+ options can be overridden before posting.</p>
569
+
570
+ <p>Set this to "no" to disable the dialog.</p>
571
+
572
+ <p>DEFAULT: yes</p>
573
+
574
+ <p>EXAMPLE: No</p>
575
+ </blockquote>
576
+ </section>
577
+ </section>
578
+
579
+ <section id="other-information-1">
580
+ <span id="other-information"></span>
581
+ <h2>Other Information</h2>
582
+
583
+ <section id="signatures-in-supersedes-1">
584
+ <span id="signatures-in-supersedes"></span>
585
+ <h3>Signatures in Supersedes</h3>
586
+
587
+ <p>When superseding an existing post, the post-processor
588
+ will NOT automatically add a signature. This preserves the
589
+ original post content as much as possible.</p>
590
+
591
+ <p>To retain the signature from the original post:</p>
592
+
593
+ <ol class="arabic simple">
594
+ <li>
595
+ <p>In flnews, select the entire article body with the
596
+ mouse—from the first line (including any introductions)
597
+ down to the last line of the signature.</p>
598
+ </li>
599
+
600
+ <li>
601
+ <p>From the Article menu, select
602
+ <strong>Supersede</strong>.</p>
603
+ </li>
604
+
605
+ <li>
606
+ <p>Edit the article text as needed. The signature will
607
+ be included in the editable text (normally, flnews
608
+ strips signatures before opening the editor).</p>
609
+ </li>
610
+
611
+ <li>
612
+ <p>Send the article.</p>
613
+ </li>
614
+ </ol>
615
+
616
+ <p><strong>Note:</strong> The <a class="reference internal"
617
+ href="#override-dialog">override dialog</a> (see above)
618
+ does not affect signatures in superseding posts.</p>
619
+ </section>
620
+
621
+ <section id="testing-1">
622
+ <span id="testing"></span>
623
+ <h3>Testing</h3>
624
+
625
+ <p>You can verify the post-processor’s effect by using one
626
+ of two methods:</p>
627
+
628
+ <ol class="arabic">
629
+ <li>
630
+ <p>Pipe a saved post into the program:</p>
631
+
632
+ <p><strong>:~$ /usr/local/bin/[post-processor] &lt;
633
+ [test-article]</strong>
634
+ </p>
635
+
636
+ <p>This will show the modified article, and you can
637
+ pipe it into another file for further testing.</p>
638
+ </li>
639
+
640
+ <li>
641
+ <p>Post directly to a test newsgroup (e.g., alt.test).
642
+ This is essential before posting to real newsgroups,
643
+ especially when the post-processor will alter the
644
+ article.</p>
645
+ </li>
646
+ </ol>
647
+ </section>
648
+
649
+ <section id="source-code-1">
650
+ <span id="source-code"></span>
651
+ <h3>Source Code</h3>
652
+
653
+ <p>The gem file for the program, available via the gem
654
+ utility or <a class="reference external" href=
655
+ "https://rubygems.org/gems/flnews_post_proc">rubygems.org</a>,
656
+ contains all the source code and documentation (this page
657
+ included). To extract it, do the following:</p>
658
+
659
+ <ol class="arabic simple">
660
+ <li>
661
+ <p>Extract the gem file: <cite>tar -xf
662
+ flnews_post_proc-0.1.gem</cite></p>
663
+ </li>
664
+
665
+ <li>
666
+ <p>Uncompress the data archive: <cite>gunzip
667
+ data.gz</cite></p>
668
+ </li>
669
+
670
+ <li>
671
+ <p>Extract the data archive: <cite>tar -xf
672
+ data.tar</cite></p>
673
+ </li>
674
+ </ol>
675
+
676
+ <p>This will create the directories <cite>bin</cite>,
677
+ <cite>doc</cite>, and <cite>lib</cite>.</p>
678
+ </section>
679
+
680
+ <section id="license-1">
681
+ <span id="license"></span>
682
+ <h3>License</h3>
683
+
684
+ <p>The <strong>flnews_post_proc</strong> is distributed
685
+ under the <a class="reference external" href=
686
+ "https://www.wtfpl.net/about/">WTFPL-2.0</a> or later
687
+ License. For the complete license text, visit <a class=
688
+ "reference external" href=
689
+ "http://www.wtfpl.net/txt/copying/">http://www.wtfpl.net/txt/copying/</a>
690
+ or refer to the license file in the documentation directory
691
+ of the gem.</p>
692
+ </section>
693
+
694
+ <section id="author-1">
695
+ <span id="author"></span>
696
+ <h3>Author</h3>
697
+
698
+ <p><strong>flnews_post_proc</strong> has been developed by
699
+ Michael Uplawski &lt;<a class="reference external" href=
700
+ "mailto:michael.uplawski@uplawski.eu">michael.uplawski@uplawski.eu</a>&gt;</p>
701
+ </section>
702
+ </section>
703
+ </main>
376
704
  </body>
377
705
  </html>
Binary file
Binary file
@@ -4,8 +4,10 @@ flnews_post_proc
4
4
 
5
5
  .. |program| replace:: **flnews_post_proc**
6
6
 
7
+ .. _flnews: https://micha.freeshell.org/flnews/
8
+
7
9
  ------------------------------------------
8
- Post-Processor for the flnews Newsreader
10
+ Post-Processor for the flnews_ Newsreader
9
11
  ------------------------------------------
10
12
 
11
13
  .. contents::
@@ -34,6 +36,7 @@ post-processor using a command like:
34
36
 
35
37
  DESCRIPTION
36
38
  ===========================
39
+
37
40
  The flnews newsreader fully supports Usenet access, enabling the reception and
38
41
  reading of articles from newsgroups, as well as composing and posting them.
39
42
 
@@ -380,6 +383,4 @@ Author
380
383
  |program| has been developed by
381
384
  Michael Uplawski <michael.uplawski@uplawski.eu>
382
385
 
383
- Ω
384
- ==
385
386
 
data/lib/body.rb CHANGED
@@ -254,17 +254,40 @@ class Body
254
254
  msg << "#{$LN}Cannot handle references or footnotes!"
255
255
  error(msg)
256
256
  end
257
-
257
+ # Now append them to the body... or find the right spot
258
+ # where they belong... good luck with that.
258
259
  if(references && !references.empty?)
259
- # a line, separating the footnotes from the body of the article
260
- body << $LN << @@config.REFERENCES_SEPARATOR << $LN
260
+
261
+ # concatenate references.
262
+ refs = ''
261
263
  references.each_with_index do |r, i|
262
264
  r = r.gsub(ref_delim, '').gsub(ref_delim.reverse,'')
263
265
  num = (i + 1).to_s << ") "
264
266
  r.strip!
265
267
  r.wrap!(WRAP_LENGTH, num.length)
266
- body << num << r << $LN
268
+ refs << num << r << $LN
269
+ end
270
+
271
+ # a previously set signature must stay intact
272
+ # in a supersedes.
273
+ # Either insert the references ...
274
+ sigpos = body.index('-- ')
275
+ if @@config.SUPERSEDES && sigpos
276
+ debug 'inserting references'
277
+ # a line, separating the footnotes from the body of the article
278
+ body.insert(sigpos, $LN.dup << @@config.REFERENCES_SEPARATOR.strip << $LN)
279
+ # move the position lower than the separator
280
+ sigpos = body.index('-- ')
281
+ body.insert(sigpos, refs)
282
+ else
283
+ # ... or append references.
284
+ debug 'appending references'
285
+ # a line, separating the footnotes from the body of the article
286
+ body << $LN << @@config.REFERENCES_SEPARATOR.strip << $LN
287
+ body << refs
267
288
  end
289
+
290
+
268
291
  else
269
292
  debug('no refences found')
270
293
  end
data/lib/version.rb CHANGED
@@ -14,9 +14,8 @@
14
14
  =end
15
15
 
16
16
  PROGNAME = 'flnews_post_proc'
17
- PROGVERSION = "1.91"
17
+ PROGVERSION = "1.93b"
18
18
  AUTHORS = "Michael Uplawski"
19
19
  EMAIL = "michael.uplawski@uplawski.eu"
20
- YEARS = "2023 - 2025"
21
- SUMMARY = "Bugfix: signatures in crossposts"
22
-
20
+ YEARS = "2023 - 2026"
21
+ SUMMARY = "Ruby 4.x References precede a signature, also in Supersedes"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flnews_post_proc
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.91'
4
+ version: 1.93b
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Uplawski
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-11 00:00:00.000000000 Z
10
+ date: 2026-01-24 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: diffy
@@ -94,14 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: '3.0'
97
+ version: '4.0'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubygems_version: 3.6.7
104
+ rubygems_version: 4.0.4
105
105
  specification_version: 4
106
- summary: 'Bugfix: signatures in crossposts'
106
+ summary: Ruby 4.x References precede a signature, also in Supersedes
107
107
  test_files: []