user@AL02296676 browserengineering-code % python3 browser.py http://localhost:8000/input.html
Traceback (most recent call last):
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 1000, in <module>
Browser().new_tab(URL(sys.argv[1]))
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 987, in new_tab
new_tab.load(url)
~~~~~~~~~~~~^^^^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 773, in load
self.document.layout()
~~~~~~~~~~~~~~~~~~~~^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 660, in layout
child.layout()
~~~~~~~~~~~~^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 547, in layout
child.layout()
~~~~~~~~~~~~^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 547, in layout
child.layout()
~~~~~~~~~~~~^^
File "/Users/user/workspace/project/browserengineering-code/browser.py", line 397, in layout
max_ascent = max([word.font.metrics("ascent")
for word in self.children])
ValueError: max() iterable argument is empty
LineLayout에서 이런 에러가 나면 빈 리스트에서 최대값을 찾으려고 하기 때문입니다.
max_ascent = max(
(word.font.metrics("ascent") for word in self.children),
default=0
)
max_descent = max(
(word.font.metrics("descent") for word in self.children),
default=0
)
와 같이 기본 값을 줘서 해결할 수 있습니다.
반응형
'browser engineering 관련' 카테고리의 다른 글
| [책소개] "밑바닥부터 시작하는 웹브라우저" 소개 (0) | 2025.09.18 |
|---|---|
| 8장. 서버로 정보 보내기 추가 설명 (0) | 2025.08.31 |
| 5장. 페이지 레이아웃의 추가 설명 (0) | 2025.08.30 |
| 단순링크: 웹개발의 역사 (0) | 2025.08.22 |
| DuckyPy 설치시 externally-managed-environment (0) | 2025.07.19 |