fchauvel / flap

Flattening LaTeX projects
https://fchauvel.github.io/flap
GNU General Public License v3.0
17 stars 2 forks source link

Custom command causes `AttributeError: 'NoneType' object has no attribute 'has_text'` #40

Open MayeulC opened 1 year ago

MayeulC commented 1 year ago

Hello, I use the following snippet as part of my manuscript:

% Overleaf has an outdated inkscape version, try to work around it:
% Inspired from https://tex.stackexchange.com/a/650621
\def\overleafStripPrefix#1>{}
\def\isoverleaf{FF\fi
        \def\predicate{output}%
        \edef\predicate{\expandafter\overleafStripPrefix\meaning\predicate}%
        \edef\job{\jobname}%
        \ifx\job\predicate
}

Including just that in a tex file is enough to make flap abort.

Backtrace ``` $ flap main.tex flaped/ FLaP 0.6.0 Traceback (most recent call last): File "/home/mcantan/.local/bin/flap", line 8, in sys.exit(main()) File "/home/mcantan/.local/lib/python3.10/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/home/mcantan/.local/lib/python3.10/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/home/mcantan/.local/lib/python3.10/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/mcantan/.local/lib/python3.10/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/ui.py", line 117, in main .run(tex_file, output) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/ui.py", line 43, in run request.execute() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/engine.py", line 84, in execute tokens = self._rewrite(self.read_root_tex, File "/home/mcantan/.local/lib/python3.10/site-packages/flap/engine.py", line 94, in _rewrite return parser.rewrite() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 90, in rewrite result += self._rewrite_one() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 98, in _rewrite_one return self._rewrite_command() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 114, in _rewrite_command return macro.rewrite(self) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/core.py", line 32, in rewrite self._execute(parser, invocation) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/core.py", line 43, in _execute self._rewritten_body = parser._spawn(body, dict()).rewrite() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 90, in rewrite result += self._rewrite_one() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 96, in _rewrite_one return self._rewrite_group() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 105, in _rewrite_group tokens += self._rewrite_one() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 96, in _rewrite_one return self._rewrite_group() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 105, in _rewrite_group tokens += self._rewrite_one() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 98, in _rewrite_one return self._rewrite_command() File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 114, in _rewrite_command return macro.rewrite(self) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/commons.py", line 112, in rewrite invocation = self._parse(parser) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/commons.py", line 64, in _parse self._capture_arguments(parser, invocation) File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/commons.py", line 80, in _capture_arguments value = parser._evaluate_until( File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/parser.py", line 186, in _evaluate_until while not is_excluded(self._next_token): File "/home/mcantan/.local/lib/python3.10/site-packages/flap/latex/macros/commons.py", line 81, in lambda token: token.has_text(next_token._text)) AttributeError: 'NoneType' object has no attribute 'has_text' ```

I tried to remove that snippet, but I'm encountering another issue. I'll isolate a reproducer and open a new issue.