blob: 78efcf5dbe78bab493dee09dacce32f4889e2d1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#!/usr/bin/env ruby
# coding: utf-8
load 'pandoc.rb'
class Translator
def initialize(file)
@file = file
@line = ''
end
def getline
@line = @file.readline
end
def is_md
@line.start_with? "#"
end
def section_md
section = ""
while @line.start_with? "#"
section += @line.sub(/^# ?/, '')
getline
end
puts "\n\n#{Pandoc::load('markdown', section).to('mediawiki')}\n\n"
end
def is_hd
not /(.*)[^<]<<\s*([^<]\S+)/.match(@line).nil?
end
def section_hd
m = /(.*)[^<]<<\s*([^<]\S+)/.match(@line)
return if m.nil?
prefix = m[1]
eot = m[2]
getline
body = ""
while @line != "#{eot}\n"
body += @line
getline
end
getline
puts "\n\n{{hc|#{prefix}|<nowiki>#{body.chomp}</nowiki>}}\n\n"
end
def section_sh
section = ""
while true
if is_md
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
section_md
section = ""
elsif is_hd
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
section_hd
section = ""
elsif @line == "}\n"
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
return
else
if @line.start_with? 'add-unit '
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
puts "f* {{ic|/#{@line.sub('add-unit ', '').chomp}}}"
section = ""
getline
next
end
m = /^ln -s (.*) (\S*)$/.match(@line)
if not m.nil?
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
puts "f* {{ic|/#{m[2]}}}: {{ic|-> #{m[1]}}}"
section = ""
getline
next
end
if @line == "preamble\n" or @line == "postamble" or @line.start_with? 'install -d'
getline
next
end
if @line.start_with? 'netctl-enable '
puts "\n\n{{bc|<nowiki>#{section.chomp}</nowiki>}}\n\n" unless section.gsub("\n", '') == ""
unit="netctl@#{`systemd-escape -- #{@line.sub(/^netctl-enable /, '')}`.chomp}.service"
puts "f* {{ic|/etc/systemd/system/#{unit}}}"
puts "f* {{ic|/etc/systemd/system/multi-user.target.wants/#{unit}}}"
getline
next
end
m = /^depends\+?=\((.*)\)/.match(@line)
if not m.nil?
m[1].split(/\s+/).each do |pkg|
puts "p* {{ic|#{pkg}}"
end
getline
next
end
m = /^conflicts\+?=\((.*)\)/.match(@line)
if not m.nil?
puts "p* group:{{ic|base}} except for {{ic|#{m[1]}}}"
getline
next
end
section += @line
getline
end
end
end
def run
while @line != "package() {\n"
getline
end
getline
section_sh
end
end
Translator.new(STDIN).run()
|