Skip to content

Commit c4cfadc

Browse files
committed
refactor: move routine outside of FortranObj class
1 parent dc5005d commit c4cfadc

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed

fortls/helper_functions.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,43 @@ def get_var_stack(line: str) -> list[str]:
586586
return None
587587

588588

589+
def get_placeholders(arg_list: list[str]) -> tuple[str, str]:
590+
"""
591+
Function used to generate placeholders for snippets
592+
593+
Parameters
594+
----------
595+
arg_list : list[str]
596+
Method arguments list
597+
598+
Returns
599+
-------
600+
Tuple[str, str]
601+
Tuple of arguments as a string and snippet string
602+
603+
Examples
604+
--------
605+
>>> get_placeholders(['x', 'y'])
606+
('(x, y)', '(${1:x}, ${2:y})')
607+
608+
>>> get_placeholders(['x=1', 'y=2'])
609+
('(x=1, y=2)', '(x=${1:1}, y=${2:2})')
610+
611+
>>> get_placeholders(['x', 'y=2', 'z'])
612+
('(x, y=2, z)', '(${1:x}, y=${2:2}, ${3:z})')
613+
"""
614+
place_holders = []
615+
for i, arg in enumerate(arg_list):
616+
opt_split = arg.split("=")
617+
if len(opt_split) > 1:
618+
place_holders.append(f"{opt_split[0]}=${{{i+1}:{opt_split[1]}}}")
619+
else:
620+
place_holders.append(f"${{{i+1}:{arg}}}")
621+
arg_str = f"({', '.join(arg_list)})"
622+
arg_snip = f"({', '.join(place_holders)})"
623+
return arg_str, arg_snip
624+
625+
589626
def fortran_md(code: str, docs: str | None):
590627
"""Convert Fortran code to markdown
591628

fortls/intrinsics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import os
66
import pathlib
77

8-
from fortls.helper_functions import fortran_md, map_keywords
8+
from fortls.helper_functions import fortran_md, get_placeholders, map_keywords
99
from fortls.objects import (
1010
FortranAST,
1111
FortranObj,
@@ -67,7 +67,7 @@ def get_snippet(self, name_replace=None, drop_arg=-1):
6767
arg_snip = None
6868
else:
6969
arg_list = self.args.split(",")
70-
arg_str, arg_snip = self.get_placeholders(arg_list)
70+
arg_str, arg_snip = get_placeholders(arg_list)
7171
name = name_replace if name_replace is not None else self.name
7272
snippet = name + arg_snip if arg_snip is not None else None
7373
return name + arg_str, snippet

fortls/objects.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
fortran_md,
3333
get_keywords,
3434
get_paren_substring,
35+
get_placeholders,
3536
get_var_stack,
3637
)
3738
from fortls.json_templates import diagnostic_json, location_json, range_json
@@ -497,19 +498,6 @@ def get_desc(self):
497498
def get_snippet(self, name_replace=None, drop_arg=-1):
498499
return None, None
499500

500-
@staticmethod
501-
def get_placeholders(arg_list: list[str]):
502-
place_holders = []
503-
for i, arg in enumerate(arg_list):
504-
opt_split = arg.split("=")
505-
if len(opt_split) > 1:
506-
place_holders.append(f"{opt_split[0]}=${{{i+1}:{opt_split[1]}}}")
507-
else:
508-
place_holders.append(f"${{{i+1}:{arg}}}")
509-
arg_str = f"({', '.join(arg_list)})"
510-
arg_snip = f"({', '.join(place_holders)})"
511-
return arg_str, arg_snip
512-
513501
def get_documentation(self):
514502
return self.doc_str
515503

@@ -1017,7 +1005,7 @@ def get_snippet(self, name_replace=None, drop_arg=-1):
10171005
del arg_list[drop_arg]
10181006
arg_snip = None
10191007
if len(arg_list) > 0:
1020-
arg_str, arg_snip = self.get_placeholders(arg_list)
1008+
arg_str, arg_snip = get_placeholders(arg_list)
10211009
else:
10221010
arg_str = "()"
10231011
name = name_replace if name_replace is not None else self.name

0 commit comments

Comments
 (0)