Mercurial > p > roundup > code
annotate roundup/pygettext.py @ 8180:d02ce1d14acd
feat: issue2551068 - Provide way to retrieve file/msg data via rest endpoint.
Use Allow header to change format of /binary_content endpoint. If
Allow header for endpoint is not application/json, it will be matched
against the mime type for the file. */*, text/* are supported and will
return the native mime type if present.
Changes:
move */* mime type from static dict of supported types. It was
hardcoded to return json only. Now it can return a matching
non-json mime type for the /binary_content endpoint.
Edited some errors to explicitly add */* mime type.
Cleanups to use ', ' separation in lists of valid mime types rather
than just space separated.
Remove ETag header when sending raw content. See issue 2551375 for
background.
Doc added to rest.txt.
Small format fix up (add dash) in CHANGES.txt.
Make passing an unset/None/False accept_mime_type to
format_dispatch_output a 500 error. This used to be the fallback
to produce a 406 error after all processing had happened. It
should no longer be possible to take that code path as all 406
errors (with valid accept_mime_types) are generated before
processing takes place.
Make format_dispatch_output handle output other than json/xml so it
can send back binary_content data.
Removed a spurious client.response_code = 400 that seems to not be
used.
Tests added for all code paths.
Database setup for tests msg and file entry. This required a file
upload test to change so it doesn't look for file1 as the link
returned by the upload. Download the link and verify the data
rather than verifying the link.
Multiple formatting changes to error messages to make all lists of
valid mime types ', ' an not just space separated.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 08 Dec 2024 17:22:33 -0500 |
| parents | 78bca158e1e6 |
| children | 185335b2301b |
| rev | line source |
|---|---|
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
8091
586f76eb33e8
fix: keep python2 working a little longer.
John Rouillard <rouilj@ieee.org>
parents:
8083
diff
changeset
|
2 # -*- coding: utf-8 -*- |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
3 # Originally written by Barry Warsaw <barry@python.org> |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
4 # |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
5 # Minimally patched to make it even more xgettext compatible |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
6 # by Peter Funk <pf@artcom-gmbh.de> |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 # |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 # 2002-11-22 J�rgen Hermann <jh@web.de> |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 # Added checks that _() only contains string literals, and |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
10 # command line args are resolved to module lists, i.e. you |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
11 # can now pass a filename, a module or package name, or a |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 # directory (including globbing chars, important for Win32). |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
13 # Made docstring fit in 80 chars wide displays using pydoc. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
14 # |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
15 # 2024-07-13 John Rouillard (rouilj@users.sourceforge.net) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
16 # Converted from python 2. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 from __future__ import print_function |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
19 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
20 # for selftesting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
21 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
22 import fintl |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
23 _ = fintl.gettext |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
24 except ImportError: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
25 _ = lambda s: s |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
26 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
27 import getopt |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
28 import glob |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
29 import importlib |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
30 import operator |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
31 import os |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
32 import sys |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
33 import time |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
34 import token |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
35 import tokenize |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
36 from functools import reduce |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
37 |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
38 __version__ = '1.5' |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
39 |
|
8108
78bca158e1e6
fix: do not translate help text or POT header.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
40 __doc__ = """pygettext -- Python equivalent of xgettext(1) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
41 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
42 Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
43 internationalization of C programs. Most of these tools are independent of |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
44 the programming language and can be used from within Python programs. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
45 Martin von Loewis' work[1] helps considerably in this regard. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
46 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
47 There's one problem though; xgettext is the program that scans source code |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
48 looking for message strings, but it groks only C (or C++). Python |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
49 introduces a few wrinkles, such as dual quoting characters, triple quoted |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
50 strings, and raw strings. xgettext understands none of this. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 Enter pygettext, which uses Python's standard tokenize module to scan |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
53 Python source code, generating .pot files identical to what GNU xgettext[2] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
54 generates for C and C++ code. From there, the standard GNU tools can be |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
55 used. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
56 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
57 A word about marking Python strings as candidates for translation. GNU |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
58 xgettext recognizes the following keywords: gettext, dgettext, dcgettext, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
59 and gettext_noop. But those can be a lot of text to include all over your |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
60 code. C and C++ have a trick: they use the C preprocessor. Most |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
61 internationalized C source includes a #define for gettext() to _() so that |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
62 what has to be written in the source is much less. Thus these are both |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
63 translatable strings: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
64 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
65 gettext("Translatable String") |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
66 _("Translatable String") |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
67 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
68 Python of course has no preprocessor so this doesn't work so well. Thus, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
69 pygettext searches only for _() by default, but see the -k/--keyword flag |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
70 below for how to augment this. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
71 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
72 [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
73 [2] http://www.gnu.org/software/gettext/gettext.html |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
74 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
75 NOTE: pygettext attempts to be option and feature compatible with GNU |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
76 xgettext where ever possible. However some options are still missing or are |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
77 not fully implemented. Also, xgettext's use of command line switches with |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
78 option arguments is broken, and in these cases, pygettext just defines |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
79 additional switches. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
80 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
81 Usage: pygettext [options] inputfile ... |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
82 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
83 Options: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
84 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
85 -a |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
86 --extract-all |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
87 Extract all strings. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
88 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
89 -d name |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
90 --default-domain=name |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
91 Rename the default output file from messages.pot to name.pot. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
92 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
93 -E |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
94 --escape |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
95 Replace non-ASCII characters with octal escape sequences. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
96 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
97 -D |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
98 --docstrings |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
99 Extract module, class, method, and function docstrings. These do |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
100 not need to be wrapped in _() markers, and in fact cannot be for |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
101 Python to consider them docstrings. (See also the -X option). |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
102 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
103 -h |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
104 --help |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
105 Print this help message and exit. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
106 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
107 -k word |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
108 --keyword=word |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
109 Keywords to look for in addition to the default set, which are: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
110 %(DEFAULTKEYWORDS)s |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
111 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
112 You can have multiple -k flags on the command line. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
113 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
114 -K |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
115 --no-default-keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
116 Disable the default set of keywords (see above). Any keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
117 explicitly added with the -k/--keyword option are still recognized. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
118 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
119 --no-location |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
120 Do not write filename/lineno location comments. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
121 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
122 -n |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
123 --add-location |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
124 Write filename/lineno location comments indicating where each |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
125 extracted string is found in the source. These lines appear before |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
126 each msgid. The style of comments is controlled by the -S/--style |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
127 option. This is the default. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
128 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
129 -o filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
130 --output=filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
131 Rename the default output file from messages.pot to filename. If |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
132 filename is `-' then the output is sent to standard out. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
133 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
134 -p dir |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
135 --output-dir=dir |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
136 Output files will be placed in directory dir. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
137 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
138 -S stylename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
139 --style stylename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
140 Specify which style to use for location comments. Two styles are |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
141 supported: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
142 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
143 Solaris # File: filename, line: line-number |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
144 GNU #: filename:line |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
145 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
146 The style name is case insensitive. GNU style is the default. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
147 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
148 -v |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
149 --verbose |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
150 Print the names of the files being processed. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
151 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
152 -V |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
153 --version |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
154 Print the version of pygettext and exit. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
155 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
156 -w columns |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
157 --width=columns |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
158 Set width of output to columns. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
159 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
160 -x filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
161 --exclude-file=filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
162 Specify a file that contains a list of strings that are not be |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
163 extracted from the input files. Each string to be excluded must |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
164 appear on a line by itself in the file. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
165 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
166 -X filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
167 --no-docstrings=filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
168 Specify a file that contains a list of files (one per line) that |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
169 should not have their docstrings extracted. This is only useful in |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
170 conjunction with the -D option above. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
171 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
172 If `inputfile' is -, standard input is read. |
|
8108
78bca158e1e6
fix: do not translate help text or POT header.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
173 """ |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
174 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
175 default_keywords = ['_'] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
176 DEFAULTKEYWORDS = ', '.join(default_keywords) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
177 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
178 EMPTYSTRING = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
179 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
180 # The normal pot-file header. msgmerge and Emacs's po-mode work better if it's |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
181 # there. |
|
8108
78bca158e1e6
fix: do not translate help text or POT header.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
182 pot_header = '''\ |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
183 # SOME DESCRIPTIVE TITLE. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
184 # Copyright (C) YEAR ORGANIZATION |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
185 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
186 # |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
187 msgid "" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
188 msgstr "" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
189 "Project-Id-Version: PACKAGE VERSION\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
190 "POT-Creation-Date: %(time)s\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
191 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
192 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
193 "Language-Team: LANGUAGE <LL@li.org>\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
194 "Language: \\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
195 "MIME-Version: 1.0\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
196 "Content-Type: text/plain; charset=CHARSET\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
197 "Content-Transfer-Encoding: ENCODING\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
198 "Generated-By: pygettext.py %(version)s\\n" |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
199 |
|
8108
78bca158e1e6
fix: do not translate help text or POT header.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
200 ''' |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
201 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
202 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
203 def usage(code, msg=''): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
204 print(__doc__ % globals(), file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
205 if msg: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
206 print(msg, file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
207 sys.exit(code) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
208 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
209 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
210 escapes = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
211 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
212 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
213 def make_escapes(pass_iso8859): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
214 global escapes |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
215 escapes = [chr(i) for i in range(256)] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
216 if pass_iso8859: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
217 # Allow iso-8859 characters to pass through so that e.g. 'msgid |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
218 # "H�he"' would result not result in 'msgid "H\366he"'. Otherwise we |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
219 # escape any character outside the 32..126 range. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
220 mod = 128 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
221 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
222 mod = 256 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
223 for i in range(mod): |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
224 if not (32 <= i <= 126): |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
225 escapes[i] = "\\%03o" % i |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
226 escapes[ord('\\')] = '\\\\' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
227 escapes[ord('\t')] = '\\t' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
228 escapes[ord('\r')] = '\\r' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
229 escapes[ord('\n')] = '\\n' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
230 escapes[ord('\"')] = '\\"' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
231 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
232 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
233 def escape(s): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
234 global escapes |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
235 s = list(s) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
236 for i in range(len(s)): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
237 s[i] = escapes[ord(s[i])] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
238 return EMPTYSTRING.join(s) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
239 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
240 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
241 def safe_eval(s): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
242 # unwrap quotes, safely |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
243 return eval(s, {'__builtins__': {}}, {}) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
244 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
245 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
246 def normalize(s): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
247 # This converts the various Python string types into a format that is |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
248 # appropriate for .po files, namely much closer to C style. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
249 lines = s.split('\n') |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
250 if len(lines) == 1: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
251 s = '"' + escape(s) + '"' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
252 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
253 if not lines[-1]: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
254 del lines[-1] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
255 lines[-1] = lines[-1] + '\n' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
256 for i in range(len(lines)): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
257 lines[i] = escape(lines[i]) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
258 lineterm = '\\n"\n"' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
259 s = '""\n"' + lineterm.join(lines) + '"' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
260 return s |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
261 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
262 |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
263 def containsAny(string, inset): |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
264 """Check whether 'str' contains ANY of the chars in 'set'""" |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
265 return 1 in [c in string for c in inset] |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
266 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
267 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
268 def _get_modpkg_path(dotted_name, pathlist=None): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
269 """Get the filesystem path for a module or a package. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
270 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
271 Return the file system path to a file for a module, and to a directory for |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
272 a package. Return None if the name is not found, or is a builtin or |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
273 extension module. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
274 """ |
|
8082
a4127d7afaa9
fix: remove references to imp in untouched code
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
275 pathname = None |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
276 r = importlib.util.find_spec(dotted_name, pathlist) |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
277 |
|
8082
a4127d7afaa9
fix: remove references to imp in untouched code
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
278 if r.loader.is_package(dotted_name): |
|
a4127d7afaa9
fix: remove references to imp in untouched code
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
279 pathname = r.submodule_search_locations[0] |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
280 elif issubclass(r.loader.__class__, (importlib.abc.SourceLoader)): |
|
8082
a4127d7afaa9
fix: remove references to imp in untouched code
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
281 pathname = r.origin |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
282 return pathname |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
283 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
284 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
285 def getFilesForName(name): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
286 """Get a list of module files for a filename, a module or package name, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
287 or a directory. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
288 """ |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
289 if not os.path.exists(name): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
290 # check for glob chars |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
291 if containsAny(name, "*?[]"): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
292 files = glob.glob(name) |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
293 lst = [] |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
294 for file in files: |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
295 lst.extend(getFilesForName(file)) |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
296 return lst |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
297 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
298 # try to find module or package |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
299 name = _get_modpkg_path(name) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
300 if not name: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
301 return [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
302 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
303 if os.path.isdir(name): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
304 # find all python files in directory |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
305 lst = [] |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
306 # get extension for python source files |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
307 if '_py_ext' not in globals(): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
308 global _py_ext |
|
8082
a4127d7afaa9
fix: remove references to imp in untouched code
John Rouillard <rouilj@ieee.org>
parents:
8080
diff
changeset
|
309 _py_ext = importlib.machinery.SOURCE_SUFFIXES |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
310 for root, dirs, files in os.walk(name): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
311 # don't recurse into CVS directories |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
312 if 'CVS' in dirs: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
313 dirs.remove('CVS') |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
314 # add all *.py files to list |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
315 lst.extend( |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
316 [os.path.join(root, file) for file in files |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
317 if os.path.splitext(file)[1] == _py_ext] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
318 ) |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
319 return lst |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
320 elif os.path.exists(name): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
321 # a single file |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
322 return [name] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
323 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
324 return [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
325 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
326 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
327 class TokenEater: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
328 def __init__(self, options): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
329 self.__options = options |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
330 self.__messages = {} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
331 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
332 self.__data = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
333 self.__lineno = -1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
334 self.__freshmodule = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
335 self.__curfile = None |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
336 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
337 def __call__(self, ttype, tstring, stup, etup, line): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
338 # dispatch |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
339 ## import token |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
340 ## print(('ttype:', token.tok_name[ttype], \ |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
341 ## 'tstring:', tstring), file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
342 self.__state(ttype, tstring, stup[0]) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
343 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
344 def __waiting(self, ttype, tstring, lineno): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
345 opts = self.__options |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
346 # Do docstring extractions, if enabled |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
347 if opts.docstrings and not opts.nodocstrings.get(self.__curfile): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
348 # module docstring? |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
349 if self.__freshmodule: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
350 if ttype == tokenize.STRING: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
351 self.__addentry(safe_eval(tstring), lineno, isdocstring=1) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
352 self.__freshmodule = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
353 elif ttype not in (tokenize.COMMENT, tokenize.NL): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
354 self.__freshmodule = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
355 return |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
356 # class docstring? |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
357 if ttype == tokenize.NAME and tstring in ('class', 'def'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
358 self.__state = self.__suiteseen |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
359 return |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
360 if ttype == tokenize.NAME and tstring in opts.keywords: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
361 self.__state = self.__keywordseen |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
362 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
363 def __suiteseen(self, ttype, tstring, lineno): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
364 # ignore anything until we see the colon |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
365 if ttype == tokenize.OP and tstring == ':': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
366 self.__state = self.__suitedocstring |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
367 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
368 def __suitedocstring(self, ttype, tstring, lineno): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
369 # ignore any intervening noise |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
370 if ttype == tokenize.STRING: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
371 self.__addentry(safe_eval(tstring), lineno, isdocstring=1) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
372 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
373 elif ttype not in (tokenize.NEWLINE, tokenize.INDENT, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
374 tokenize.COMMENT): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
375 # there was no class docstring |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
376 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
377 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
378 def __keywordseen(self, ttype, tstring, lineno): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
379 if ttype == tokenize.OP and tstring == '(': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
380 self.__data = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
381 self.__lineno = lineno |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
382 self.__state = self.__openseen |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
383 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
384 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
385 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
386 def __openseen(self, ttype, tstring, lineno): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
387 if ttype == tokenize.OP and tstring == ')': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
388 # We've seen the last of the translatable strings. Record the |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
389 # line number of the first line of the strings and update the list |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
390 # of messages seen. Reset state for the next batch. If there |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
391 # were no strings inside _(), then just ignore this entry. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
392 if self.__data: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
393 self.__addentry(EMPTYSTRING.join(self.__data)) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
394 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
395 elif ttype == tokenize.STRING: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
396 self.__data.append(safe_eval(tstring)) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
397 elif ttype not in [tokenize.COMMENT, token.INDENT, token.DEDENT, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
398 token.NEWLINE, tokenize.NL]: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
399 # warn if we see anything else than STRING or whitespace |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
400 print(_( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
401 '*** %(file)s:%(lineno)s: Seen unexpected token "%(token)s"' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
402 ) % { |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
403 'token': tstring, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
404 'file': self.__curfile, |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
405 'lineno': self.__lineno, |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
406 }, file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
407 self.__state = self.__waiting |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
408 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
409 def __addentry(self, msg, lineno=None, isdocstring=0): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
410 if lineno is None: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
411 lineno = self.__lineno |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
412 if msg not in self.__options.toexclude: |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
413 entry = (self.__curfile, lineno) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
414 self.__messages.setdefault(msg, {})[entry] = isdocstring |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
415 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
416 def set_filename(self, filename): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
417 self.__curfile = filename |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
418 self.__freshmodule = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
419 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
420 def write(self, fp): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
421 options = self.__options |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
422 timestamp = time.strftime('%Y-%m-%d %H:%M+%Z') |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
423 # The time stamp in the header doesn't have the same format as that |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
424 # generated by xgettext... |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
425 print(pot_header % {'time': timestamp, 'version': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
426 __version__}, file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
427 # Sort the entries. First sort each particular entry's keys, then |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
428 # sort all the entries by their first item. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
429 reverse = {} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
430 for k, v in self.__messages.items(): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
431 keys = v.keys() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
432 keys = sorted(keys) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
433 reverse.setdefault(tuple(keys), []).append((k, v)) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
434 rkeys = reverse.keys() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
435 for rkey in sorted(rkeys): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
436 rentries = reverse[rkey] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
437 rentries.sort() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
438 for k, v in rentries: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
439 isdocstring = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
440 # If the entry was gleaned out of a docstring, then add a |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
441 # comment stating so. This is to aid translators who may wish |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
442 # to skip translating some unimportant docstrings. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
443 if reduce(operator.__add__, v.values()): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
444 isdocstring = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
445 # k is the message string, v is a dictionary-set of (filename, |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
446 # lineno) tuples. We want to sort the entries in v first by |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
447 # file name and then by line number. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
448 v = v.keys() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
449 v = sorted(v) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
450 if not options.writelocations: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
451 pass |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
452 # location comments are different b/w Solaris and GNU: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
453 elif options.locationstyle == options.SOLARIS: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
454 for filename, lineno in v: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
455 d = {'filename': filename, 'lineno': lineno} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
456 print(_( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
457 '# File: %(filename)s, line: %(lineno)d') % d, file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
458 elif options.locationstyle == options.GNU: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
459 # fit as many locations on one line, as long as the |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
460 # resulting line length doesn't exceed 'options.width' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
461 locline = '#:' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
462 for filename, lineno in v: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
463 d = {'filename': filename, 'lineno': lineno} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
464 s = _(' %(filename)s:%(lineno)d') % d |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
465 if len(locline) + len(s) <= options.width: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
466 locline = locline + s |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
467 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
468 print(locline, file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
469 locline = "#:" + s |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
470 if len(locline) > 2: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
471 print(locline, file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
472 if isdocstring: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
473 print('#, docstring', file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
474 print('msgid', normalize(k), file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
475 print('msgstr ""\n', file=fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
476 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
477 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
478 def main(): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
479 global default_keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
480 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
481 opts, args = getopt.getopt( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
482 sys.argv[1:], |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
483 'ad:DEhk:Kno:p:S:Vvw:x:X:', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
484 ['extract-all', 'default-domain=', 'escape', 'help', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
485 'keyword=', 'no-default-keywords', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
486 'add-location', 'no-location', 'output=', 'output-dir=', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
487 'style=', 'verbose', 'version', 'width=', 'exclude-file=', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
488 'docstrings', 'no-docstrings', |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
489 ]) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
490 except getopt.error as msg: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
491 usage(1, msg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
492 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
493 # for holding option values |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
494 class Options: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
495 # constants |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
496 GNU = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
497 SOLARIS = 2 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
498 # defaults |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
499 extractall = 0 # FIXME: currently this option has no effect at all. |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
500 escape = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
501 keywords = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
502 outpath = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
503 outfile = 'messages.pot' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
504 writelocations = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
505 locationstyle = GNU |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
506 verbose = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
507 width = 78 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
508 excludefilename = '' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
509 docstrings = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
510 nodocstrings = {} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
511 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
512 options = Options() |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
513 locations = {'gnu': options.GNU, |
|
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
514 'solaris': options.SOLARIS, |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
515 } |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
516 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
517 # parse options |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
518 for opt, arg in opts: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
519 if opt in ('-h', '--help'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
520 usage(0) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
521 elif opt in ('-a', '--extract-all'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
522 options.extractall = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
523 elif opt in ('-d', '--default-domain'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
524 options.outfile = arg + '.pot' |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
525 elif opt in ('-E', '--escape'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
526 options.escape = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
527 elif opt in ('-D', '--docstrings'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
528 options.docstrings = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
529 elif opt in ('-k', '--keyword'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
530 options.keywords.append(arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
531 elif opt in ('-K', '--no-default-keywords'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
532 default_keywords = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
533 elif opt in ('-n', '--add-location'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
534 options.writelocations = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
535 elif opt in ('--no-location',): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
536 options.writelocations = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
537 elif opt in ('-S', '--style'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
538 options.locationstyle = locations.get(arg.lower()) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
539 if options.locationstyle is None: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
540 usage(1, _('Invalid value for --style: %s') % arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
541 elif opt in ('-o', '--output'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
542 options.outfile = arg |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
543 elif opt in ('-p', '--output-dir'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
544 options.outpath = arg |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
545 elif opt in ('-v', '--verbose'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
546 options.verbose = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
547 elif opt in ('-V', '--version'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
548 print(_('pygettext.py (xgettext for Python) %s') % __version__) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
549 sys.exit(0) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
550 elif opt in ('-w', '--width'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
551 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
552 options.width = int(arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
553 except ValueError: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
554 usage(1, _('--width argument must be an integer: %s') % arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
555 elif opt in ('-x', '--exclude-file'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
556 options.excludefilename = arg |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
557 elif opt in ('-X', '--no-docstrings'): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
558 fp = open(arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
559 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
560 while 1: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
561 line = fp.readline() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
562 if not line: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
563 break |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
564 options.nodocstrings[line[:-1]] = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
565 finally: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
566 fp.close() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
567 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
568 # calculate escapes |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
569 make_escapes(not options.escape) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
570 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
571 # calculate all keywords |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
572 options.keywords.extend(default_keywords) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
573 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
574 # initialize list of strings to exclude |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
575 if options.excludefilename: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
576 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
577 fp = open(options.excludefilename) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
578 options.toexclude = fp.readlines() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
579 fp.close() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
580 except IOError: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
581 print(_( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
582 "Can't read --exclude-file: %s") % options.excludefilename, file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
583 sys.exit(1) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
584 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
585 options.toexclude = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
586 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
587 # resolve args to module lists |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
588 expanded = [] |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
589 for arg in args: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
590 if arg == '-': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
591 expanded.append(arg) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
592 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
593 expanded.extend(getFilesForName(arg)) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
594 args = expanded |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
595 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
596 # slurp through all the files |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
597 eater = TokenEater(options) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
598 for filename in args: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
599 if filename == '-': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
600 if options.verbose: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
601 print(_('Reading standard input')) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
602 fp = sys.stdin |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
603 closep = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
604 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
605 if options.verbose: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
606 print(_('Working on %s') % filename) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
607 fp = open(filename) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
608 closep = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
609 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
610 eater.set_filename(filename) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
611 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
612 for token in tokenize.generate_tokens(fp.readline): |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
613 eater(*token) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
614 except tokenize.TokenError as e: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
615 print('%s: %s, line %d, column %d' % ( |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
616 e[0], filename, e[1][0], e[1][1]), file=sys.stderr) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
617 finally: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
618 if closep: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
619 fp.close() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
620 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
621 # write the output |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
622 if options.outfile == '-': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
623 fp = sys.stdout |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
624 closep = 0 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
625 else: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
626 if options.outpath: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
627 options.outfile = os.path.join(options.outpath, options.outfile) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
628 fp = open(options.outfile, 'w') |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
629 closep = 1 |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
630 try: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
631 eater.write(fp) |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
632 finally: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
633 if closep: |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
634 fp.close() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
635 |
|
8083
60e92a540ca7
chore: some ruff linter cleanups.
John Rouillard <rouilj@ieee.org>
parents:
8082
diff
changeset
|
636 |
|
8080
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
637 if __name__ == '__main__': |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
638 main() |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
639 # some more test strings |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
640 _(u'a unicode string') |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
641 # this one creates a warning |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
642 _('*** Seen unexpected token "%(token)s"') % {'token': 'test'} |
|
d1c29284ccd9
feat: issue2551287 - roundup-gettext extracts strings from detectors/extensions
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
643 _('more' 'than' 'one' 'string') |
