Source code for sknano.core._strings

# -*- coding: utf-8 -*-
"""
=========================================================================
Helper functions for string manipulation (:mod:`sknano.core._strings`)
=========================================================================

.. currentmodule:: sknano.core._strings

"""
from __future__ import absolute_import, division, print_function
from __future__ import unicode_literals
__docformat__ = 'restructuredtext en'

__all__ = ['plural_word_check', 'pluralize', 'ordinal_form']


def plural_word_check(word, count):
    """Alias for :func:`pluralize`"""
    return pluralize(word, count)


[docs]def pluralize(word, count): """Make a word plural by adding an *s* if `count` != 1. Parameters ---------- word : :class:`~python:str` the word count : :class:`~python:int` the word count Returns ------- :class:`~python:str` """ return word if count == 1 else word + 's'
[docs]def ordinal_form(n): """Convert number to ordinal form in English. Parameters ---------- n : :class:`~python:int` Returns ------- :class:`~python:str` Examples -------- >>> from pprint import pprint >>> from sknano.core import ordinal_form >>> pprint([ordinal_form(i) for i in range(200)], width=70, compact=True) ['0th', '1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th', '11th', '12th', '13th', '14th', '15th', '16th', '17th', '18th', '19th', '20th', '21st', '22nd', '23rd', '24th', '25th', '26th', '27th', '28th', '29th', '30th', '31st', '32nd', '33rd', '34th', '35th', '36th', '37th', '38th', '39th', '40th', '41st', '42nd', '43rd', '44th', '45th', '46th', '47th', '48th', '49th', '50th', '51st', '52nd', '53rd', '54th', '55th', '56th', '57th', '58th', '59th', '60th', '61st', '62nd', '63rd', '64th', '65th', '66th', '67th', '68th', '69th', '70th', '71st', '72nd', '73rd', '74th', '75th', '76th', '77th', '78th', '79th', '80th', '81st', '82nd', '83rd', '84th', '85th', '86th', '87th', '88th', '89th', '90th', '91st', '92nd', '93rd', '94th', '95th', '96th', '97th', '98th', '99th', '100th', '101st', '102nd', '103rd', '104th', '105th', '106th', '107th', '108th', '109th', '110th', '111st', '112nd', '113rd', '114th', '115th', '116th', '117th', '118th', '119th', '120th', '121st', '122nd', '123rd', '124th', '125th', '126th', '127th', '128th', '129th', '130th', '131st', '132nd', '133rd', '134th', '135th', '136th', '137th', '138th', '139th', '140th', '141st', '142nd', '143rd', '144th', '145th', '146th', '147th', '148th', '149th', '150th', '151st', '152nd', '153rd', '154th', '155th', '156th', '157th', '158th', '159th', '160th', '161st', '162nd', '163rd', '164th', '165th', '166th', '167th', '168th', '169th', '170th', '171st', '172nd', '173rd', '174th', '175th', '176th', '177th', '178th', '179th', '180th', '181st', '182nd', '183rd', '184th', '185th', '186th', '187th', '188th', '189th', '190th', '191st', '192nd', '193rd', '194th', '195th', '196th', '197th', '198th', '199th'] """ ordinal_suffix = {} ordinal_suffix.update(dict.fromkeys(range(20), 'th')) ordinal_suffix.update({1: 'st', 2: 'nd', 3: 'rd'}) try: return ''.join((str(n), ordinal_suffix[n])) except KeyError: last_digit = int(str(n)[-1]) return ''.join((str(n), ordinal_suffix[last_digit]))