Coverage for pyquickhelper/pycode/readme_helper.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-03 02:21 +0200

1""" 

2@file 

3@brief Helpers about readme. 

4""" 

5 

6 

7def clean_readme(content): 

8 """ 

9 Clean instructions such as ``.. only:: html``. 

10 

11 @param content content of an rst file 

12 @return cleaned content 

13 """ 

14 lines = content.split("\n") 

15 indent = None 

16 less = None 

17 rows = [] 

18 for i, line in enumerate(lines): 

19 sline = line.lstrip() 

20 if sline.startswith(".. only:: html"): 

21 indent = len(line) - len(sline) 

22 continue 

23 if indent is None: 

24 rows.append(line) 

25 continue 

26 exp = indent * " " 

27 if len(line) > indent + 1 and line[:indent] == exp: 

28 if line[indent] == " ": 

29 blank = sline.strip() 

30 if len(blank) == 0: 

31 rows.append("") # pragma: no cover 

32 continue # pragma: no cover 

33 if less is None: 

34 less = len(line) - len(sline) 

35 if less == indent: 

36 raise ValueError( # pragma: no cover 

37 f"Wrong format at line {i}\n{content}") 

38 new_line = line[less - indent:] 

39 rows.append(new_line) 

40 else: 

41 rows.append(line) 

42 indent = None 

43 less = None 

44 else: 

45 rows.append(line) 

46 return "\n".join(rows)