Source code for resource_namer.__init__

# This program is free software: you can redistribute it and/or modify it under the
# terms of the Apache License (v2.0) as published by the Apache Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the Apache License for more details.
#
# You should have received a copy of the Apache License along with this program.
# If not, see <https://www.apache.org/licenses/LICENSE-2.0>.


# standard libs
import sys
import random
import logging

# internal libs

from .__meta__ import __version__, __description__, __authors__, __contact__

from .word_lists import adjectives, animals, plants


def _filter_fn(adjective: str, word: str) -> bool:
    """used to filter list of adjectives phonetically

    Args:
        adjective (str): adjective word
        word (str): word to see if should be included in list of alliterationss

    Returns:
        bool: filter or not
    """
    if adjective.startswith("f"):
        return word.startswith("f") or word.startswith("ph")
    elif adjective.startswith("q"):
        return word.startswith("q") or word.startswith("k")
    else:
        return word.startswith(adjective[0])


[docs]def generate_name( joiner: str = "-", prefer_plants: bool = False, seed: int = None ) -> str: """from two lists (`adjectives` and `animals`) return two joined words that form an alliteration pair using phonetics. e.g. frisky-ferret, flamboyant-pheasant, cultured-caribou Returns: str: adjective-animal combination joined on `joiner` """ if seed is not None: random.seed(seed) adjective = random.choice(adjectives) second_set = plants if prefer_plants else animals thing = random.choice( list(filter(lambda x: _filter_fn(adjective, x), second_set)) or second_set ) return f"{adjective}{joiner}{thing}"
def main() -> int: """Entry-point for `generate_name` console application.""" """Generate a random name and print it.""" print(generate_name())