elexis-wiki-interface 0.5.2 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/history.textile +5 -0
- data/lib/elexis/wiki/images.rb +79 -18
- data/lib/elexis/wiki/version.rb +1 -1
- data/spec/images_spec.rb +43 -20
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9d72d912fd4a22ecaf2edbf49da976269fc25e8
|
4
|
+
data.tar.gz: fb88d025c7dfedd98f704a8cbf3fa3a3013dc457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 805a7d07ade2e96a7500819ae6a83c0cb13db5fc0b48eff63da2b59e05385924e2fb634f7bdee8a76eb00c4a801c3af5ffeac1fd96c0dff97dc6519420a3bcb5
|
7
|
+
data.tar.gz: e4b562ca6ea1278aa1e9f4c313147d6843494e2ad97d571a476ce6c336e4a032fa64c7e958504c83e67e0b1191c9c512067eba913125493d86579bd3bec10cff
|
data/Gemfile.lock
CHANGED
data/history.textile
CHANGED
data/lib/elexis/wiki/images.rb
CHANGED
@@ -22,7 +22,8 @@ end
|
|
22
22
|
|
23
23
|
module Elexis
|
24
24
|
module Wiki
|
25
|
-
|
25
|
+
ImageWithSlashPattern = /(\[File:|Datei:|\[Image:)([^\/:\]]*[:\/])([\w.-]+)/
|
26
|
+
ImagePattern = /(\[File:|\[Datei:|\[Image:)((?:.+:|)[^\/:|]*)/
|
26
27
|
|
27
28
|
#
|
28
29
|
# This helper class collect information about all images used in
|
@@ -190,8 +191,9 @@ module Elexis
|
|
190
191
|
|
191
192
|
def get_name_with_project(path)
|
192
193
|
prefix =Images.get_project_abbreviation(path)
|
193
|
-
|
194
|
-
result
|
194
|
+
basename = File.basename(path)
|
195
|
+
result = /^#{prefix}/i.match(basename) ? basename : (prefix + '-' + basename).gsub(':', '-')
|
196
|
+
result.downcase
|
195
197
|
end
|
196
198
|
|
197
199
|
def Images.get_small_name(path)
|
@@ -307,6 +309,7 @@ module Elexis
|
|
307
309
|
run_git_cmd("git rm -f --ignore-unmatch #{picture[:path]}", true) if picture[:path] != new_path
|
308
310
|
}
|
309
311
|
@actions.uniq!
|
312
|
+
cleanup_mediawikis
|
310
313
|
puts @actions.join("\n")
|
311
314
|
ensure
|
312
315
|
Dir.chdir(savedDir)
|
@@ -332,32 +335,90 @@ module Elexis
|
|
332
335
|
lines = IO.readlines(mediawiki_file)
|
333
336
|
lines.each{
|
334
337
|
|line|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
338
|
+
image_name = nil
|
339
|
+
if m = ImageWithSlashPattern.match(line)
|
340
|
+
image_name = m[2] + m[3]
|
341
|
+
elsif m = ImagePattern.match(line)
|
342
|
+
image_name = m[2]
|
343
|
+
end
|
344
|
+
unless image_name
|
345
|
+
newLines << fix_line(line)
|
346
|
+
next;
|
347
|
+
end
|
348
|
+
if old_image_name.downcase.eql?(image_name.downcase) or/\/#{old_image_name}/i.match(image_name)
|
342
349
|
dirName = File.dirname(mediawiki_file)
|
343
350
|
simpleName = File.join(dirName, File.basename(new_image_name))
|
351
|
+
raise "Could not find image" unless File.exists?(new_image_name)
|
344
352
|
if files = Dir.glob(simpleName, File::FNM_CASEFOLD) and files.size >= 1
|
345
|
-
|
346
|
-
new_line = line.sub(m[2], new_image_name)
|
347
|
-
new_line = new_line.sub(m[3], '') if m[3]
|
348
|
-
puts "change_image_name_in_mediawiki #{__LINE__} #{line} aus #{m[2]} mit #{new_image_name}" if $VERBOSE
|
349
|
-
newLines << new_line
|
353
|
+
newLines << fix_line(line, old_image_name, new_image_name)
|
350
354
|
else
|
351
|
-
|
352
|
-
raise msg
|
355
|
+
newLines << fix_line(line)
|
353
356
|
end
|
354
|
-
|
357
|
+
else
|
358
|
+
newLines << fix_line(line)
|
355
359
|
end
|
356
360
|
}
|
357
361
|
File.open(mediawiki_file, "w") {|f| f.write newLines.join.gsub(/\[\[Datei:|\[\[Image:/i, '[[File:')}
|
358
362
|
run_git_cmd("git add #{mediawiki_file}")
|
359
363
|
ensure Dir.chdir(savedDir)
|
360
364
|
end
|
365
|
+
def fix_line(line, old_file=nil, new_file=nil)
|
366
|
+
line.gsub!(/(<U\+\h\h\h\h>)/,'') # remove pseudo UTF-8
|
367
|
+
old_ref = 'unknown'
|
368
|
+
unless old_file
|
369
|
+
image_name = nil
|
370
|
+
if m = ImageWithSlashPattern.match(line)
|
371
|
+
old_file = m[2] + m[3]
|
372
|
+
old_ref = m[3].downcase
|
373
|
+
elsif m = ImagePattern.match(line)
|
374
|
+
old_file = m[2]
|
375
|
+
old_ref = m[2].downcase
|
376
|
+
end
|
377
|
+
return line unless m
|
378
|
+
end
|
379
|
+
new_file ||= Images.get_small_name(old_file)
|
380
|
+
proj = Images.get_project_abbreviation(Dir.pwd)
|
381
|
+
change_to = nil
|
382
|
+
if File.exists?(new_file)
|
383
|
+
change_to ||= new_file
|
384
|
+
else
|
385
|
+
[ old_ref,
|
386
|
+
old_file.sub(/^#{proj}[_]/i, proj+'-'),
|
387
|
+
new_file.sub(/^#{proj}/i, ''),
|
388
|
+
proj + '-' + new_file.sub(/^#{proj}/i, ''),
|
389
|
+
new_file.sub(/^#{proj}-#{proj}/i, proj + '-'),
|
390
|
+
new_file.sub(/^#{proj}-(.*)/i, proj + '\1'),
|
391
|
+
(proj + '-' + new_file).downcase,
|
392
|
+
].each{
|
393
|
+
|try_this|
|
394
|
+
if File.exists?(try_this.downcase)
|
395
|
+
change_to ||= try_this.downcase
|
396
|
+
break
|
397
|
+
end
|
398
|
+
}
|
399
|
+
end
|
400
|
+
return line unless change_to
|
401
|
+
line.sub(old_file, change_to)
|
402
|
+
end
|
403
|
+
|
404
|
+
def cleanup_mediawikis
|
405
|
+
savedDir = Dir.pwd
|
406
|
+
@docs.each do
|
407
|
+
|docDir|
|
408
|
+
Dir.chdir(File.join(@rootDir, docDir))
|
409
|
+
wikis = Dir.glob('*.mediawiki')
|
410
|
+
wikis.each{
|
411
|
+
|file|
|
412
|
+
output = ''
|
413
|
+
lines = IO.readlines(file)
|
414
|
+
lines.each{|line| output << fix_line(line) }
|
415
|
+
File.open(file, 'w+') { |f| f.write(output) }
|
416
|
+
}
|
417
|
+
end
|
418
|
+
ensure
|
419
|
+
Dir.chdir(savedDir)
|
420
|
+
end
|
421
|
+
|
361
422
|
end
|
362
423
|
end
|
363
424
|
end
|
data/lib/elexis/wiki/version.rb
CHANGED
data/spec/images_spec.rb
CHANGED
@@ -4,8 +4,9 @@ require 'spec_helper'
|
|
4
4
|
require "elexis/wiki/images"
|
5
5
|
|
6
6
|
describe 'Images' do
|
7
|
-
NR_PICTURES =
|
8
|
-
NR_ELEMS_IN_IMAGE_PATTERN =
|
7
|
+
NR_PICTURES = 24
|
8
|
+
NR_ELEMS_IN_IMAGE_PATTERN = 3
|
9
|
+
NR_ELEMS_IN_IMAGE_WITH_SLASH_PATTERN = 4
|
9
10
|
|
10
11
|
before :all do
|
11
12
|
@subdir = 'images'
|
@@ -21,6 +22,14 @@ describe 'Images' do
|
|
21
22
|
# FileUtils.rm_rf(@dataDir)
|
22
23
|
end
|
23
24
|
|
25
|
+
it "should refuse to change the image name in a mediawiki file when we find no corresponding image file" do
|
26
|
+
wiki_file = File.join(@dataDir, @subdir, 'ch.elexis.icpc', 'doc', 'test2.mediawiki')
|
27
|
+
old_picture_name = 'ch.elexis.icpc:icpc4.png'
|
28
|
+
expect(IO.read(wiki_file)).to include old_picture_name
|
29
|
+
expect(File.exist?(wiki_file)).to eq true
|
30
|
+
expect { @images.change_image_name_in_mediawiki(wiki_file, old_picture_name, 'icpc_should_not_exist.png')}.to raise_error(RuntimeError, /Could not find image/)
|
31
|
+
end
|
32
|
+
|
24
33
|
it "should create the pictures.yml and .csv file" do
|
25
34
|
expect(@images.yml).to eq File.join(@images.rootDir, 'pictures.yml')
|
26
35
|
expect(@images.csv).to eq File.join(@images.rootDir, 'pictures.csv')
|
@@ -42,15 +51,17 @@ describe 'Images' do
|
|
42
51
|
end
|
43
52
|
|
44
53
|
it "should match picture names with a /" do
|
45
|
-
res = Elexis::Wiki::
|
46
|
-
expect(res.size).to eq
|
47
|
-
expect(res[2]).to eq '
|
54
|
+
res = Elexis::Wiki::ImageWithSlashPattern.match('[[File:At.medevit.elexis.dbcheck/dbcleaningui.png|frame|none]]')
|
55
|
+
expect(res.size).to eq NR_ELEMS_IN_IMAGE_WITH_SLASH_PATTERN
|
56
|
+
expect(res[2]).to eq 'At.medevit.elexis.dbcheck/'
|
57
|
+
expect(res[3]).to eq 'dbcleaningui.png'
|
48
58
|
end
|
49
59
|
|
50
60
|
it "should match picture doc_de/settings_agenda-druck1.png" do
|
51
|
-
res = Elexis::Wiki::
|
52
|
-
expect(res.size).to eq
|
53
|
-
expect(res[2]).to eq '
|
61
|
+
res = Elexis::Wiki::ImageWithSlashPattern.match('[[File:doc_de/settings_agenda-druck1.png|image]]<br />')
|
62
|
+
expect(res.size).to eq NR_ELEMS_IN_IMAGE_WITH_SLASH_PATTERN
|
63
|
+
expect(res[2]).to eq 'doc_de/'
|
64
|
+
expect(res[3]).to eq 'settings_agenda-druck1.png'
|
54
65
|
end
|
55
66
|
|
56
67
|
it "should match picture File:dbcleaningui.png" do
|
@@ -61,6 +72,7 @@ describe 'Images' do
|
|
61
72
|
|
62
73
|
examples = { 'doc_de/settings_agenda-druck1.png' => 'settings_agenda-druck1.png',
|
63
74
|
'doc_de/settingsAgendaDruck1.png' => 'settings_agenda_druck1.png',
|
75
|
+
'Ch.elexis.privatrechnung/doc/privatrechnung-3.png' => 'privatrechnung-3.png',
|
64
76
|
'CurabillWarning1.png' => 'curabill_warning1.png',
|
65
77
|
'ch.elexis.icpc/Icpc1.png' => 'icpc-1.png',
|
66
78
|
}
|
@@ -79,7 +91,6 @@ describe 'Images' do
|
|
79
91
|
end
|
80
92
|
|
81
93
|
def check_rename(wiki_file, old_picture_name, new_picture_name, expected_new_line)
|
82
|
-
expect(IO.read(wiki_file)).to include old_picture_name
|
83
94
|
@images.change_image_name_in_mediawiki(wiki_file, old_picture_name, new_picture_name)
|
84
95
|
changed = IO.read(wiki_file)
|
85
96
|
expect(changed).to include "tag_one"
|
@@ -100,6 +111,7 @@ describe 'Images' do
|
|
100
111
|
'org.iatrix.tests/doc/test.png' => 'iatrix-test.png',
|
101
112
|
'org.iatrix.tests/doc/test.jpg' => 'iatrix-test.jpg',
|
102
113
|
'org.iatrix_tests/doc/test.gif' => 'iatrix-test.gif',
|
114
|
+
'ch.elexis.connect.abxmicros/doc/abxmicros-kabel.png' => 'abxmicros-kabel.png',
|
103
115
|
}
|
104
116
|
tests.each {
|
105
117
|
|path, expected|
|
@@ -113,9 +125,10 @@ describe 'Images' do
|
|
113
125
|
rename_tests = {
|
114
126
|
# 'Ch.elexis.icpc:Icpc2.png' => [ 'icpc2.png', 'tag_two [[File:icpc-2.png|image]]'],
|
115
127
|
'Ch.elexis.icpc:icpc5.png' => [ 'icpc5.png', 'tag_frame_none [[File:icpc5.png|frame|none]]'],
|
116
|
-
'
|
117
|
-
'Ch.elexis.icpc:icpc6.png' => [ 'elexis_logo.jpg', 'tag_jpg [[File:
|
118
|
-
'Ch.elexis.icpc:icpc7.png' => [ 'disposan.gif', 'tag_gif [[File:
|
128
|
+
'ch.elexis.icpc:icpc5.png' => [ 'icpc5.png', 'tag_png [[File:icpc5.png|image]]<br />'],
|
129
|
+
'Ch.elexis.icpc:icpc6.png' => [ 'elexis_logo.jpg', 'tag_jpg [[File:icpc6.png|image]]'],
|
130
|
+
'Ch.elexis.icpc:icpc7.png' => [ 'disposan.gif', 'tag_gif [[File:icpc7.png|image]]'],
|
131
|
+
'Ch.elexis.icpc/favicon_green.png' => [ 'favicon_green.png', 'tag_slash [[File:favicon_green.png|image]]<br />'],
|
119
132
|
}
|
120
133
|
rename_tests.each {
|
121
134
|
|old_picture_name, params|
|
@@ -136,14 +149,6 @@ describe 'Images' do
|
|
136
149
|
expect(content).to include 'kabel.png]'
|
137
150
|
end
|
138
151
|
|
139
|
-
it "should refuse to change the image name in a mediawiki file when we find no corresponding image file" do
|
140
|
-
wiki_file = File.join(@dataDir, @subdir, 'ch.elexis.icpc', 'doc', 'test2.mediawiki')
|
141
|
-
expect(File.exist?(wiki_file)).to eq true
|
142
|
-
old_picture_name = 'ch.elexis.icpc:icpc4.png'
|
143
|
-
expect(IO.read(wiki_file)).to include old_picture_name
|
144
|
-
expect { @images.change_image_name_in_mediawiki(wiki_file, old_picture_name, 'icpc_should_not_exist.png')}.to raise_error(RuntimeError, /Could not find image/)
|
145
|
-
end
|
146
|
-
|
147
152
|
checks = {
|
148
153
|
'at.medevit.elexis.swissmedic/fixmedikationaufruf.png' => 'swissmedic',
|
149
154
|
'at.medevit.elexis.swissmedic/doc/fixmedikationaufruf.png' => 'swissmedic',
|
@@ -220,6 +225,23 @@ describe 'ImagesCleanup' do
|
|
220
225
|
@images.execute_cleanup(true)
|
221
226
|
end
|
222
227
|
|
228
|
+
it "should fix old names in" do
|
229
|
+
wiki_file = File.join(@dataDir, @subdir, 'ch.elexis.agenda', 'doc', 'agenda.mediawiki')
|
230
|
+
expect(File.exist?(wiki_file)).to eq true
|
231
|
+
@images.cleanup_mediawikis
|
232
|
+
content = IO.read(wiki_file)
|
233
|
+
expect(content).to include 'tag_one [[File:agenda-2.png|image]]<br />'
|
234
|
+
expect(content).to include 'tag_three [[File:agenda-2.png|image]]<br />'
|
235
|
+
expect(content).to include 'tag_two [[File:agenda-2.png|frame|none]]<br />'
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should remove pseudo UTF-8 chars like <U+200E>" do
|
239
|
+
wiki_file = File.join(@dataDir, @subdir, 'ch.elexis.icpc', 'doc', 'test2.mediawiki')
|
240
|
+
content = IO.read(wiki_file)
|
241
|
+
expect(File.exist?(wiki_file)).to eq true
|
242
|
+
expect(/(<U\+\h\h\h\h>)/.match(content)).to be nil
|
243
|
+
end
|
244
|
+
|
223
245
|
it "should add icpc-8.png and icpc-1.png" do
|
224
246
|
expect(@images.actions.index("git add -f images/ch.elexis.icpc/doc/icpc-1.png")).not_to eq nil
|
225
247
|
expect(@images.actions.index("git add -f images/ch.elexis.icpc/doc/icpc1.png")).to eq nil
|
@@ -243,6 +265,7 @@ describe 'ImagesCleanup' do
|
|
243
265
|
it 'should add a "-" if the image name starts with the abbrev' do
|
244
266
|
expect(@images.actions.index("git add -f images/ch.elexis.icpc/doc/icpc-1.png")).not_to eq nil
|
245
267
|
end
|
268
|
+
|
246
269
|
end
|
247
270
|
|
248
271
|
describe "execute_cleanup" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elexis-wiki-interface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Niklaus Giger
|
@@ -166,6 +166,8 @@ files:
|
|
166
166
|
- spec/data/doc/doc_de/.project
|
167
167
|
- spec/data/images/ch.elexis.agenda/.project
|
168
168
|
- spec/data/images/ch.elexis.agenda/META-INF/MANIFEST.MF
|
169
|
+
- spec/data/images/ch.elexis.agenda/doc/agenda.mediawiki
|
170
|
+
- spec/data/images/ch.elexis.agenda/doc/agenda2.png
|
169
171
|
- spec/data/images/ch.elexis.agenda/doc/fixmedikationaufruf.png
|
170
172
|
- spec/data/images/ch.elexis.agenda/plugin.properties
|
171
173
|
- spec/data/images/ch.elexis.agenda/plugin.xml
|
@@ -283,6 +285,8 @@ test_files:
|
|
283
285
|
- spec/data/doc/doc_de/.project
|
284
286
|
- spec/data/images/ch.elexis.agenda/.project
|
285
287
|
- spec/data/images/ch.elexis.agenda/META-INF/MANIFEST.MF
|
288
|
+
- spec/data/images/ch.elexis.agenda/doc/agenda.mediawiki
|
289
|
+
- spec/data/images/ch.elexis.agenda/doc/agenda2.png
|
286
290
|
- spec/data/images/ch.elexis.agenda/doc/fixmedikationaufruf.png
|
287
291
|
- spec/data/images/ch.elexis.agenda/plugin.properties
|
288
292
|
- spec/data/images/ch.elexis.agenda/plugin.xml
|