flnews_post_proc 1.48 → 1.52
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -10
- data/lib/_quoting_style_regexp +1 -0
- data/lib/body.rb +23 -8
- data/lib/configuration.rb +1 -0
- data/lib/flnews_post_proc.rb +1 -1
- data/lib/version.rb +2 -3
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce08a05f564e461547838e8be747b716bf319f0e873bdae49032bc11b27bad99
|
4
|
+
data.tar.gz: a7ecf3115645be839b9de3bcb20a503c51558107655c569c86a8e73b9179ce19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3031a8647b65d99a133f2064f839d19441f51babd4bed2df6e9c382fa0d3621584bb005b1b8335dbbb6c864c1714d76008b5698c5a38879ea409740f5f19e266
|
7
|
+
data.tar.gz: e7b68552b48ac5b475b220d5fdf6695e761e1443b0ce214676ca67122dc4ae32d84c6c22ca8a6e89e63ee606d3418dd0c1f2c62dde082fec3e189c6d580c9910
|
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.
|
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
|
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
|
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.
|
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
|
|
data/lib/_quoting_style_regexp
CHANGED
data/lib/body.rb
CHANGED
@@ -17,7 +17,12 @@
|
|
17
17
|
require_relative 'basic_logging'
|
18
18
|
require_relative 'configuration'
|
19
19
|
|
20
|
-
#
|
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
|
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
|
@@ -128,7 +140,7 @@ class Body
|
|
128
140
|
|
129
141
|
# Verify and possibly correct links in the post.
|
130
142
|
# Simple.
|
131
|
-
def
|
143
|
+
def handle_uris()
|
132
144
|
# Determine here or elsewhere if URLs shall be verified.
|
133
145
|
# Default is != no. nil or '' do qualify as default.
|
134
146
|
if @@config.VFY_URLS
|
@@ -144,7 +156,8 @@ class Body
|
|
144
156
|
# <----------------------------
|
145
157
|
|
146
158
|
# BUGFIX : Urls with @
|
147
|
-
|
159
|
+
# BUGFIX : email address in the intro
|
160
|
+
new_line = handle_news(l) if !@intro || l.strip != @intro.strip
|
148
161
|
# http(s)
|
149
162
|
if l.include?('http')
|
150
163
|
new_line = handle_http(l)
|
@@ -172,9 +185,8 @@ class Body
|
|
172
185
|
# to the whole body, over multiple lines, if need be.
|
173
186
|
begin
|
174
187
|
ref = body.match(ref_rx )
|
175
|
-
debug("found reference " << ref.to_s << " (length: " << (ref ? ref.to_s.size.to_s : '0') << ")")
|
188
|
+
debug("found reference " << ref.to_s << " (length: " << (ref ? ref.to_s.size.to_s : '0') << ")") if ref && ref.length > 0
|
176
189
|
if ref
|
177
|
-
debug('ref is ' << ref.to_s)
|
178
190
|
# ... This is some presentation thing and I think
|
179
191
|
# it works, too.
|
180
192
|
r = ref[0].gsub(/[ \t]+/, ' ').strip
|
@@ -184,7 +196,7 @@ class Body
|
|
184
196
|
body.gsub!(ref[0], format(@@config.REFERENCE_FORMAT, index.to_s ))
|
185
197
|
end
|
186
198
|
end until ref == nil
|
187
|
-
debug("all references found:\n" << references.join('\n'))
|
199
|
+
debug("all references found:\n" << references.join('\n')) if !references.empty?
|
188
200
|
else
|
189
201
|
msg = 'The References Delimiter is the same in its reversed form.'
|
190
202
|
msg << "#{$LN}Cannot handle references or footnotes!"
|
@@ -198,6 +210,8 @@ class Body
|
|
198
210
|
r = r.gsub(ref_delim, '').gsub(ref_delim.reverse,'')
|
199
211
|
body << (i + 1 ).to_s << ") " << r.strip << $LN
|
200
212
|
end
|
213
|
+
else
|
214
|
+
debug('no refences found')
|
201
215
|
end
|
202
216
|
end
|
203
217
|
@lines = body.split($LN)
|
@@ -238,7 +252,8 @@ class Body
|
|
238
252
|
url_strs = l_array.collect do |ele|
|
239
253
|
if ele.strip.include?('http') && ele.match(/https?:\S+/)
|
240
254
|
ele.lstrip!
|
241
|
-
|
255
|
+
# ensure last character is alphanumeric or '>' or '/'
|
256
|
+
until ele.match(/([[:alnum:]]|>|\/)$/) do
|
242
257
|
ele.chop!
|
243
258
|
end
|
244
259
|
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
|
data/lib/flnews_post_proc.rb
CHANGED
data/lib/version.rb
CHANGED
@@ -14,9 +14,8 @@
|
|
14
14
|
=end
|
15
15
|
|
16
16
|
PROGNAME = 'flnews_post_proc'
|
17
|
-
PROGVERSION = "1.
|
17
|
+
PROGVERSION = "1.52"
|
18
18
|
AUTHORS = "Michael Uplawski"
|
19
19
|
EMAIL = "michael.uplawski@uplawski.eu"
|
20
20
|
YEARS = "2023 - 2024"
|
21
|
-
SUMMARY = "
|
22
|
-
SUMMARY << "\n\t\"STDOUT\" allowed as log target"
|
21
|
+
SUMMARY = "Configuration backups are no longer hidden files."
|
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.
|
4
|
+
version: '1.52'
|
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-
|
11
|
+
date: 2024-06-09 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
|
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
|
@@ -85,6 +85,5 @@ requirements: []
|
|
85
85
|
rubygems_version: 3.5.3
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
|
-
summary:
|
89
|
-
allowed as log target
|
88
|
+
summary: Configuration backups are no longer hidden files.
|
90
89
|
test_files: []
|