forked from nasa/astrobee
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommon.py
More file actions
100 lines (90 loc) · 2.95 KB
/
Copy pathcommon.py
File metadata and controls
100 lines (90 loc) · 2.95 KB
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
#!/usr/bin/env python
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
import sys
from os.path import basename
def typerlink(typ):
tok = typ.replace("[", "")
tok = tok.replace("]", "")
tok = tok.split("/")
if len(tok) == 1:
return typ
package = tok[0].replace("_", "__")
message = tok[1].replace("_", "__")
if tok[0].strip() in ("ff_msgs", "ff_hw_msgs", "vpp_msgs"):
return '<a href="./group__%s__%s.html">%s</a>' % (package, message, typ)
return typ
# Load and return a message template
def split_into_chunks(filename):
chunks = []
buff = ""
for line in open(filename):
if line.startswith("---"):
chunks.append(buff)
buff = ""
else:
buff += line
chunks.append(buff)
return chunks
def extract_message(str):
variables = []
constants = []
desc = ""
for line in str.splitlines():
rec = line.strip()
if len(rec) == 0:
continue
if rec[0] == "#":
desc += line.replace("#", "").strip() + " "
else:
idx = rec.find("#")
if idx >= 0:
desc = rec[idx + 1 :].strip()
rec = rec[:idx]
lst = rec.split("=")
tok = (" ".join(lst[0].split())).split()
dtype = tok[0].strip()
dname = tok[1].strip()
if len(lst) > 1:
dname += " = " + lst[1].strip()
constants.append(
"| %s | **%s** | %s |" % (typerlink(dtype), dname, desc)
)
desc = ""
else:
variables.append("| %s | `%s` | %s |" % (typerlink(dtype), dname, desc))
desc = ""
buff = ""
for line in variables:
buff += line + "\n"
for line in constants:
buff += line + "\n"
if len(buff) == 0:
buff = "| | | |"
return buff
# Load and return a message template
def load_file(filename):
if not os.path.isfile(filename):
sys.stderr.write("Cannot locate file '%s'\n" % (filename))
sys.exit(1)
with open(filename, "r") as f:
content = f.read()
if not content:
sys.stderr.write("File '%s' is empty\n" % (filename))
sys.exit(1)
return content