example-code-2e/04-text-byte/charfinder
2021-08-07 00:44:01 -03:00
..
cf.py updated from Atlas 2021-08-07 00:44:01 -03:00
README.rst updated from Atlas 2021-08-07 00:44:01 -03:00
test.sh sync with Atlas 2021-07-10 11:58:24 -03:00

========================
Character Finder Utility
========================

Usage tips
==========

`cf.py` works as an executable on Unix-like systems,
if you have `python3` on your `$PATH`::

    $ chmod +x cf.py
    $ ./cf.py cat eyes
    U+1F638	😸	GRINNING CAT FACE WITH SMILING EYES
    U+1F63B	😻	SMILING CAT FACE WITH HEART-SHAPED EYES
    U+1F63D	😽	KISSING CAT FACE WITH CLOSED EYES

Use `wc -l` to count the number of hits::

    $ ./cf.py hieroglyph | wc -l
    1663

With `tee` you can get the output and the count::

    $ ./cf.py trigram | tee >(wc -l)
    U+2630	☰	TRIGRAM FOR HEAVEN
    U+2631	☱	TRIGRAM FOR LAKE
    U+2632	☲	TRIGRAM FOR FIRE
    U+2633	☳	TRIGRAM FOR THUNDER
    U+2634	☴	TRIGRAM FOR WIND
    U+2635	☵	TRIGRAM FOR WATER
    U+2636	☶	TRIGRAM FOR MOUNTAIN
    U+2637	☷	TRIGRAM FOR EARTH
    8


Running the tests
=================

Run the ``doctest`` module from the command line on 
this README.rst file (using ``-v`` to make tests visible)::

    $ python3 -m doctest README.rst -v

That's what the ``test.sh`` script does.


Tests
-----

Import functions for testing::

    >>> from cf import find, main

Test ``find`` with single result::

    >>> find('sign', 'registered')  # doctest:+NORMALIZE_WHITESPACE
    U+00AE	®	REGISTERED SIGN

Test ``find`` with two results::

    >>> find('chess', 'queen', end=0xFFFF)  # doctest:+NORMALIZE_WHITESPACE
    U+2655	♕	WHITE CHESS QUEEN
    U+265B	♛	BLACK CHESS QUEEN

Test ``find`` with no results::

    >>> find('no_such_character')

Test ``main`` with no words::

    >>> main([])
    Please provide words to find.