flnews_post_proc 1.48 → 1.53

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a019c52dac602a5b00c71131e8b44a61769604a08035b7afad305a27c5d43a0
4
- data.tar.gz: 7f5a69f62df2a18fefe9f0f5f499d7960d40b751b4bda67f26a88f91034ac941
3
+ metadata.gz: bb3c498d2cde3e3c4afcd611006857a9b88db02cd27a05fe04ef1cac4448d6bd
4
+ data.tar.gz: 1fbd7d419082397cb748ad397c168c5ebc55b002e162a2831775677b0289734e
5
5
  SHA512:
6
- metadata.gz: fe1d5fee2fffc214f8aa96b34e4886b3c2e7b16a71dd2ac99b8df214528d53c43df8b425fe4b21d4edf58e691e6cd5f497e09ed12a81129dd0f0e883fcf9ab76
7
- data.tar.gz: 40f0b45424e01cc6b034aeeb4a7729bb0a499e231eb0001a60d762e4f1952964090dacda102fb87215ed66786e7e2887c471c95cc930018b469df669d16915b1
6
+ metadata.gz: 547bfbcea62f28654150632b088ad3f9ff7a48b2df3893fff5849e94f865f1ed2c7c39d97f493320f1a1687247118864a242f760ae8c032f4817c43d70bdc43c
7
+ data.tar.gz: 34ad4b1054b1308f391a4207222ffd39b407e62184cf38012e46d60cfbe3a375b598477e50ff92d9bec8181cbd15ea79d249bb6d0c535b2bf4e884ba7cea9460
data/README.md CHANGED
@@ -56,7 +56,7 @@ The flnews newsreader is sufficient for Usenet access, i.e. to receive and read
56
56
  articles from -, as well as to write and post articles to newsgroups.
57
57
 
58
58
  When you compare news-clients, you will always notice the differences and
59
- choose the software that you prefer. Flnews however, has the charm that you can
59
+ choose the software that you prefer. flnews however, has the charm that you can
60
60
  influence how the program itself works but also modify posts that flnews
61
61
  produces, just before the program will transmit them to the chosen nntp-server.
62
62
 
@@ -93,13 +93,13 @@ some users may not always agree with the result and for arbitrary reasons:
93
93
  Custom headers may be defined in the configuration file for the program
94
94
  and will then be added to each outgoing post.
95
95
 
96
- * The Archive- and X-No-Archive headers are sometimes set to avoid that an
97
- article be saved and stays available to search-engines (Google, notably).
98
- Test- postings, for example, do probably not justify at all that they would
99
- be referenced in search results. The post-processor program can impose the
100
- Archive- and X-No-Archive header for all posts to certain newsgroups.
96
+ * The Archive- and X-No-Archive headers are sometimes set to avoid that an
97
+ article be saved and stays available to search-engines (Google, notably).
98
+ Test- postings, for example, do probably not justify at all that they would
99
+ be referenced in search results. The post-processor program can impose the
100
+ Archive- and X-No-Archive header for all posts to certain newsgroups.
101
101
 
102
- **ATTN** As of 2024, the header “X-No-Archive“ has lost most of its utility
102
+ **ATTN** As of 2024, the header “X-No-Archive“ has lost most of its utility
103
103
  and it is the decision of server operators to honor it or not.
104
104
 
105
105
  * If a news post contains many references to either other posts or Web
@@ -166,7 +166,7 @@ Ruby, noted as a String. Beware to mask a backslash '\\' by another one,
166
166
  ike in the example. A capture-group '()' serves to extract the name from the
167
167
  match result.
168
168
 
169
- Leave this field empty to keep the default from the FLNews configuration
169
+ Leave this field empty to keep the default from the flnews configuration
170
170
  intact.
171
171
 
172
172
  CONTENT: A String equivalent of a regular expression.
@@ -199,7 +199,7 @@ intact.
199
199
 
200
200
  CONTENT: A newsgroup or regexp per line, followed by a colon, a space and a String
201
201
 
202
- DEFAULT: As configured in FLNews
202
+ DEFAULT: As configured in flnews
203
203
 
204
204
  EXAMPLE: _alt.test: "Thus spoke #\{fup_name\} on that baleful #\{fup_date\}:"_
205
205
 
@@ -320,7 +320,7 @@ A dialog may be displayed which allows you to disable any of these
320
320
  four options, so that the defaults from flnews prevail.
321
321
 
322
322
  ATTN! Canceling the dialog or pushing the Esc-key does interrupt
323
- the process. Flnews will not post the article.
323
+ the process. flnews will not post the article.
324
324
 
325
325
  Set this option to no, NO or similar to disable the dialog.
326
326
 
@@ -4,7 +4,7 @@
4
4
  <head>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  <meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
7
- <title>Flnews_post_proc_fr</title>
7
+ <title>Flnews_post_proc</title>
8
8
  <style type="text/css">
9
9
 
10
10
  /*
@@ -429,6 +429,9 @@ parmi les résultats des recherches.</p>
429
429
  <p>Avec flnews_post_proc vous pouvez décider et imposer que vos articles dans
430
430
  certains newsgroups contiendront d'office les deux entêtes <strong>Archive: no</strong> et
431
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>
432
435
  </li>
433
436
  <li><p class="first">Certains messages mentionnent d'autres articles ou des URLs de pages Web.
434
437
  S'ils sont nombreux, ces références peuvent déranger la lecture à cause de
Binary file
Binary file
@@ -83,6 +83,10 @@ et ce pour des raisons arbitraires :
83
83
  certains newsgroups contiendront d'office les deux entêtes **Archive: no** et
84
84
  **X-No-Archive: Yes**.
85
85
 
86
+ **ATTENTION**: Dès 2024, l'entête « X-No-Archive » a perdu beaucoup de son
87
+ utilité. Les opérateurs des serveurs peuvent décider s'ils veulent le prendre
88
+ en considération ou non.
89
+
86
90
  * Certains messages mentionnent d'autres articles ou des URLs de pages Web.
87
91
  S'ils sont nombreux, ces références peuvent déranger la lecture à cause de
88
92
  leur syntaxe spécifique.
@@ -390,33 +390,39 @@ own creations.</p>
390
390
  <h2>The limits of a basic newsreader — what the program can do</h2>
391
391
  <p>While the articles that flnews creates, are complete and ready to be posted,
392
392
  some users may not always agree with the result and for arbitrary reasons:</p>
393
- <ul class="simple">
394
- <li>There may be inconveniences when you post to different newsgroups in
393
+ <ul>
394
+ <li><p class="first">There may be inconveniences when you post to different newsgroups in
395
395
  different languages, as an introductory line which refers to a previous
396
396
  post can only be set once in the flnews-configuration. The consequence
397
397
  can be that your post to a french newsgroup begins with an introduction
398
398
  in English.
399
399
  My post-processor program can set an introductory line specifically
400
- chosen for one or several newsgroups.</li>
401
- <li>The same conflict arises, when you have set a standard signature-text and
400
+ chosen for one or several newsgroups.</p>
401
+ </li>
402
+ <li><p class="first">The same conflict arises, when you have set a standard signature-text and
402
403
  would like to replace it against another, based on the newsgroup you are
403
404
  about to post to.
404
405
  The post-processor program sets specific signatures as configured for one
405
- or several newsgroups.</li>
406
- <li>Some custom headers may serve to convey additional information to
406
+ or several newsgroups.</p>
407
+ </li>
408
+ <li><p class="first">Some custom headers may serve to convey additional information to
407
409
  interested readers of your post, like GnuPG key IDs, your language skills
408
410
  or the like. The signature may be a better choice than custom headers.
409
411
  You are free. I just mention face and x-face but prefer that you do not
410
412
  remember I did.
411
413
  Custom-headers may be defined in the configuration file for the program
412
- and will then be added to each outgoing post.</li>
413
- <li>The Archive- and the X-No-Archive header are sometimes set to avoid that an
414
+ and will then be added to each outgoing post.</p>
415
+ </li>
416
+ <li><p class="first">The Archive- and the X-No-Archive header are sometimes set to avoid that an
414
417
  article be saved and stays available to search-engines (Google, notably).
415
418
  Test- postings, for example, do probably not justify at all that they would
416
419
  be referenced in search-results.
417
420
  The post-processor program can impose both headers for all posts to certain
418
- newsgroups.</li>
419
- <li>If a news post contains many references to either other posts or Web
421
+ newsgroups.</p>
422
+ <p><strong>ATTN</strong> As of 2024, the header “X-No-Archive“ has lost most of its utility
423
+ and it is the decision of server operators to honor it or not.</p>
424
+ </li>
425
+ <li><p class="first">If a news post contains many references to either other posts or Web
420
426
  pages, the text can be cluttered with URLs.
421
427
  The post-processor can identify marked text fragments and transform them
422
428
  into footnotes, which will be attached as a list at the bottom of the
@@ -425,7 +431,8 @@ This works almost like the &lt;ref/&gt; link in Wikipedia, but the delimiter
425
431
  can be determined in the configuration file.
426
432
  Example (with %=):
427
433
  This is an object %=and this becomes the footnote, describing the object
428
- further=%</li>
434
+ further=%</p>
435
+ </li>
429
436
  </ul>
430
437
  </div>
431
438
  <div class="section" id="dialog-to-override-settings">
Binary file
Binary file
@@ -67,6 +67,9 @@ some users may not always agree with the result and for arbitrary reasons:
67
67
  The post-processor program can impose both headers for all posts to certain
68
68
  newsgroups.
69
69
 
70
+ **ATTN** As of 2024, the header “X-No-Archive“ has lost most of its utility
71
+ and it is the decision of server operators to honor it or not.
72
+
70
73
  * If a news post contains many references to either other posts or Web
71
74
  pages, the text can be cluttered with URLs.
72
75
  The post-processor can identify marked text fragments and transform them
@@ -1 +1,2 @@
1
+ # UNUSED
1
2
  " > >> > testerei ei ei".strip.gsub( /^>+(\s+>+)*/) {|m| m.to_s.delete(" ")}
data/lib/body.rb CHANGED
@@ -17,7 +17,12 @@
17
17
  require_relative 'basic_logging'
18
18
  require_relative 'configuration'
19
19
 
20
- # an object of this class represents the body of a news-article.
20
+ # An object of this class represents the body of a news-article.
21
+ # It processes the original text and changes some details:
22
+ # intro-lines
23
+ # signatures
24
+ # URI formats
25
+ # Footnotes (and/or a list of references) are created
21
26
  class Body
22
27
  # a class-level configuration instance.
23
28
  @@config = Configuration.instance
@@ -99,6 +104,13 @@ class Body
99
104
  # exchange original intro-line against the new one
100
105
  @lines[@lines.index(ointro)] = intro.strip
101
106
  # looked complicated because it is.
107
+
108
+ # keep this line for reference.
109
+ @intro = intro
110
+ else
111
+ wmsg = 'Text following the intro is not a citation!'
112
+ wmsg << "\n\tIntro will NOT be modified: \"#{ointro}\"!"
113
+ warn wmsg
102
114
  end
103
115
  end
104
116
  end # fn.strip.empty?
@@ -111,7 +123,7 @@ class Body
111
123
  # remove any signature(s) from
112
124
  # the current article
113
125
  sigpos = @lines.index('-- ')
114
- debug('found signature at position ' << sigpos) if sigpos
126
+ debug('found signature in line ' << sigpos.to_s) if sigpos
115
127
  @lines = @lines.slice(0, sigpos ) if sigpos
116
128
  debug('setting signature ' << signature) if signature
117
129
  @lines << "-- " << signature if signature
@@ -119,8 +131,12 @@ class Body
119
131
  end
120
132
 
121
133
  def join
122
- return @lines.join("\r\n") << "\r\n"
134
+ new_body = @lines.join("\r\n") << "\r\n"
135
+ # replace ellipsis
136
+ new_body.gsub!('...', '…')
137
+ return new_body
123
138
  end
139
+
124
140
  # ------->
125
141
  # TODO : Concentrate all URL/URI munging functionality in 1 or 2 helper
126
142
  # classes, e.g. Body::News and Body::Http
@@ -128,7 +144,7 @@ class Body
128
144
 
129
145
  # Verify and possibly correct links in the post.
130
146
  # Simple.
131
- def handle_urls()
147
+ def handle_uris()
132
148
  # Determine here or elsewhere if URLs shall be verified.
133
149
  # Default is != no. nil or '' do qualify as default.
134
150
  if @@config.VFY_URLS
@@ -144,7 +160,8 @@ class Body
144
160
  # <----------------------------
145
161
 
146
162
  # BUGFIX : Urls with @
147
- new_line = handle_news(l)
163
+ # BUGFIX : email address in the intro
164
+ new_line = handle_news(l) if !@intro || l.strip != @intro.strip
148
165
  # http(s)
149
166
  if l.include?('http')
150
167
  new_line = handle_http(l)
@@ -172,9 +189,8 @@ class Body
172
189
  # to the whole body, over multiple lines, if need be.
173
190
  begin
174
191
  ref = body.match(ref_rx )
175
- debug("found reference " << ref.to_s << " (length: " << (ref ? ref.to_s.size.to_s : '0') << ")")
192
+ debug("found reference " << ref.to_s << " (length: " << (ref ? ref.to_s.size.to_s : '0') << ")") if ref && ref.length > 0
176
193
  if ref
177
- debug('ref is ' << ref.to_s)
178
194
  # ... This is some presentation thing and I think
179
195
  # it works, too.
180
196
  r = ref[0].gsub(/[ \t]+/, ' ').strip
@@ -184,7 +200,7 @@ class Body
184
200
  body.gsub!(ref[0], format(@@config.REFERENCE_FORMAT, index.to_s ))
185
201
  end
186
202
  end until ref == nil
187
- debug("all references found:\n" << references.join('\n'))
203
+ debug("all references found:\n" << references.join('\n')) if !references.empty?
188
204
  else
189
205
  msg = 'The References Delimiter is the same in its reversed form.'
190
206
  msg << "#{$LN}Cannot handle references or footnotes!"
@@ -198,6 +214,8 @@ class Body
198
214
  r = r.gsub(ref_delim, '').gsub(ref_delim.reverse,'')
199
215
  body << (i + 1 ).to_s << ") " << r.strip << $LN
200
216
  end
217
+ else
218
+ debug('no refences found')
201
219
  end
202
220
  end
203
221
  @lines = body.split($LN)
@@ -238,7 +256,8 @@ class Body
238
256
  url_strs = l_array.collect do |ele|
239
257
  if ele.strip.include?('http') && ele.match(/https?:\S+/)
240
258
  ele.lstrip!
241
- while !ele.match(/([[:alnum:]]|>)$/) do
259
+ # ensure last character is alphanumeric or '>' or '/'
260
+ until ele.match(/([[:alnum:]]|>|\/)$/) do
242
261
  ele.chop!
243
262
  end
244
263
  ele
data/lib/configuration.rb CHANGED
@@ -91,6 +91,7 @@ class Configuration
91
91
  end
92
92
  @conf[:CONFIG_VERSION] = PROGVERSION.to_f
93
93
  bak_conf = @config_file.dup << '_' << conf_version.to_s
94
+ bak_conf.gsub!('.' << PROGNAME, 'bak_' << PROGNAME)
94
95
  info('Old configuration is saved to ' << bak_conf )
95
96
  info('New configuration is saved to ' << @config_file )
96
97
  begin
@@ -55,7 +55,7 @@ class PostProcessor
55
55
  body.set_signature(newsgroups.signature)
56
56
 
57
57
  # verify and eventually correct URLs
58
- body.handle_urls
58
+ body.handle_uris
59
59
 
60
60
  # get the headers and the body as a string.
61
61
  # Assemble.
data/lib/version.rb CHANGED
@@ -14,9 +14,8 @@
14
14
  =end
15
15
 
16
16
  PROGNAME = 'flnews_post_proc'
17
- PROGVERSION = "1.48"
17
+ PROGVERSION = "1.53"
18
18
  AUTHORS = "Michael Uplawski"
19
19
  EMAIL = "michael.uplawski@uplawski.eu"
20
20
  YEARS = "2023 - 2024"
21
- SUMMARY = "\tConcurrent access to the log file\n\tLog cleared upon setting log target"
22
- SUMMARY << "\n\t\"STDOUT\" allowed as log target"
21
+ SUMMARY = "Ellipsis is replaced against '…', French documentation in sub-folder doc/fr"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flnews_post_proc
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.48'
4
+ version: '1.53'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Uplawski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-30 00:00:00.000000000 Z
11
+ date: 2024-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy
@@ -30,7 +30,7 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.4.2
33
- description: Post-processor for Usenet-articles created in FLNews
33
+ description: Post-processor for Usenet-articles created in flnews
34
34
  email: michael.uplawski@uplawski.eu
35
35
  executables:
36
36
  - flnews_post_proc
@@ -39,15 +39,15 @@ extra_rdoc_files: []
39
39
  files:
40
40
  - README.md
41
41
  - bin/flnews_post_proc
42
+ - doc/fr/html/flnews_post_proc.html
43
+ - doc/fr/man/flnews_post_proc.1.gz
44
+ - doc/fr/pdf/flnews_post_proc.pdf
45
+ - doc/fr/rst/flnews_post_proc.rst
42
46
  - doc/html/flnews_post_proc.html
43
- - doc/html/flnews_post_proc_fr.html
44
47
  - doc/license.txt
45
48
  - doc/man/flnews_post_proc.1.gz
46
- - doc/man/flnews_post_proc_fr.1.gz
47
49
  - doc/pdf/flnews_post_proc.pdf
48
- - doc/pdf/flnews_post_proc_fr.pdf
49
50
  - doc/rst/flnews_post_proc.rst
50
- - doc/rst/flnews_post_proc_fr.rst
51
51
  - lib/_quoting_style_regexp
52
52
  - lib/basic_logging.rb
53
53
  - lib/body.rb
@@ -85,6 +85,5 @@ requirements: []
85
85
  rubygems_version: 3.5.3
86
86
  signing_key:
87
87
  specification_version: 4
88
- summary: Concurrent access to the log file Log cleared upon setting log target "STDOUT"
89
- allowed as log target
88
+ summary: Ellipsis is replaced against '…', French documentation in sub-folder doc/fr
90
89
  test_files: []
Binary file
Binary file