#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Extract all string litterals from our code base.

Useful to check if an API function is used in a generated web page !

Usage:
    extract_code_strings.py source.py ... > string-constants.txt


Résultat utilisé par check_zope_usage.py

E. Viennet 2021-01-09
"""
from __future__ import print_function

import sys
import ast
import types

# L = []
for srcfilename in sys.argv[1:]:
    # print("processing %s" % srcfilename, file=sys.stderr)
    with open(srcfilename) as f:
        p = ast.parse(f.read())
        # L.extend(x.s.strip() for x in ast.walk(p) if x.__class__ == ast.Str)
        for x in ast.walk(p):
            if x.__class__ == ast.Str:
                if isinstance(x.s, str):
                    s = x.s
                else:
                    s = x.s.encode("UTF-8")
                # remove tabs and cr
                s = s.translate(None, "\t\n")
                if len(s):
                    print("%s\t%s" % (srcfilename, s))

# L = sorted(set(L))  # uniq | sort
# print("\n".join(L))
