Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
relative = (proj_data['project_url'] == '')
proj_data['relative'] = relative
proj_data['extensions'] += [ext for ext in proj_data['fpp_extensions'] if ext not in proj_data['extensions']]
# Parse file extensions and comment characters for extra filetypes
extdict = {}
for ext in proj_data['extra_filetypes']:
sp = ext.split()
if len(sp) < 2: continue
if (len(sp)==2):
extdict[sp[0]] = (sp[1]) # (comment_char) only
else:
extdict[sp[0]] = (sp[1],sp[2]) # (comment_char and lexer_str)
proj_data['extra_filetypes'] = extdict
# Make sure no src_dir is contained within output_dir
for projdir in proj_data['src_dir']:
proj_path = ford.utils.split_path(projdir)
out_path = ford.utils.split_path(proj_data['output_dir'])
for directory in out_path:
if len(proj_path) == 0:
break
if directory == proj_path[0]:
proj_path.remove(directory)
else:
break
else:
print('Error: directory containing source-code {} a subdirectory of output directory {}.'.format(proj_data['output_dir'],projdir))
sys.exit(1)
# Check that none of the docmarks are the same
if proj_data['docmark'] == proj_data['predocmark'] != '':
print('Error: docmark and predocmark are the same.')
sys.exit(1)
if proj_data['docmark'] == proj_data['docmark_alt'] != '':
def _initialize(self,line):
attribstr = line.group(3)
self.attribs = []
self.deferred = False
if attribstr:
tmp_attribs = ford.utils.paren_split(",",attribstr[1:])
for i in range(len(tmp_attribs)):
tmp_attribs[i] = tmp_attribs[i].strip()
if tmp_attribs[i].lower() == "public": self.permission = "public"
elif tmp_attribs[i].lower() == "private": self.permission = "private"
elif tmp_attribs[i].lower() == "deferred": self.deferred = True
else: self.attribs.append(tmp_attribs[i])
rest = line.group(4)
split = self.POINTS_TO_RE.split(rest)
self.name = split[0].strip()
self.generic = (line.group(1).lower() == "generic")
self.proto = line.group(2)
if self.proto:
self.proto = self.proto[1:-1].strip()
self.bindings = []
if len(split) > 1:
binds = self.SPLIT_RE.split(split[1])
"""
Returns a list of variables declared in the provided line of code. The
line of code should be provided as a string.
"""
vartype, kind, strlen, proto, rest = parse_type(line,parent.strings,parent.settings)
attribs = []
intent = ""
optional = False
permission = inherit_permission
parameter = False
attribmatch = ATTRIBSPLIT_RE.match(rest)
if attribmatch:
attribstr = attribmatch.group(1).strip()
declarestr = attribmatch.group(2).strip()
tmp_attribs = ford.utils.paren_split(",",attribstr)
for i in range(len(tmp_attribs)):
tmp_attribs[i] = tmp_attribs[i].strip()
if tmp_attribs[i].lower() == "public": permission = "public"
elif tmp_attribs[i].lower() == "private": permission = "private"
elif tmp_attribs[i].lower() == "protected": permission = "protected"
elif tmp_attribs[i].lower() == "optional": optional = True
elif tmp_attribs[i].lower() == "parameter": parameter = True
elif tmp_attribs[i].lower().replace(' ','') == "intent(in)":
intent = 'in'
elif tmp_attribs[i].lower().replace(' ','') == "intent(out)":
intent = 'out'
elif tmp_attribs[i].lower().replace(' ','') == "intent(inout)":
intent = 'inout'
else: attribs.append(tmp_attribs[i])
else:
declarestr = ATTRIBSPLIT2_RE.match(rest).group(2)