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
|
# File 'src/notam_formatter.rb', line 10
def format(messages, format, request)
case [request, format]
in ['ROUTE', /.*/]
{ messages: messages }
in ['NOTAM', 'SITE']
{ messages: messages }
in ['NOTAM', 'DANGERAREA']
{ messages: messages.empty? ? [] : Oj.load(messages)}
in ['NOTAM', 'AIRWAYS']
{ messages: messages.empty? ? [] : Oj.load(messages)}
in ['NOTAM', 'CLOSED']
{ messages: messages.empty? ? [] : Oj.load(messages)}
in ['NOTAM', 'REGLAMENT']
{ messages: messages.empty? ? [] : Oj.load(messages)}
in ['NOTAM', 'DB' | 'DB+']
{ messages: begin
RawJson.new messages
rescue JSON::ParserError
[]
end
}
in ['NOTAM', 'SNOWTAM']
{ messages: messages.scan(/.*?\)\n\n/m).map(&:rstrip) }
in ['NOTAM','NOTAM']
{ messages: messages.split("\n\n") }
in ['NOTAM', 'TEMPORARY']
messages.gsub! /,\s*,\s*"Text/m, ',"Text'
{ messages: messages.empty? ? {} : Oj.load(messages) }
in ['NOTAM', 'RESTRICTION']
messages.gsub! /,\s*,\s*"Text/m, ',"Text'
{ messages: messages.empty? ? [] : Oj.load(messages) }
in ['NOTAM', 'PIB']
last_body = ''
{ date: messages[/^([^|]*)|/,1],
messages: messages.split(";\n").map do |s|
code, msg, notam = s.split('|')[1..]
date, schedule, body, limits = msg.split '$'
limits ||= ''
if notam =~ /A\d{2}$/
last_body = body
{ date:, schedule:, limits:, code: code[2..], body:, notam: notam[..-4]}
else
last_body << body
nil
end
end.compact
}
else
{ messages: messages.split("\n\n") }
end
end
|