striplog/lexicon.py
def expand_abbreviations(self, text):
        """
        Parse a piece of text and replace any abbreviations with their full
        word equivalents. Uses the lexicon.abbreviations dictionary to find
        abbreviations.

        Args:
            text (str): The text to parse.

        Returns:
            str: The text with abbreviations replaced.
        """
        if not self.abbreviations:
            raise LexiconError("No abbreviations in lexicon.")

        def chunks(data, SIZE=25):
            """
            Regex only supports 100 groups for munging callbacks. So we have to
            chunk the abbreviation dicitonary.
            """
            it = iter(data)
            for i in range(0, len(data), SIZE):
                yield {k: data[k] for k in islice(it, SIZE)}

        def cb(g):
            """Regex callback"""
            return self.abbreviations.get(g.group(0)) or g.group(0)

        # Special cases.

        # TODO: We should handle these with a special set of
        # replacements that are made before the others.
        text = re.sub(r'w/', r'wi', text)

        # Main loop.
        for subdict in chunks(self.abbreviations):
            regex = r'(\b' + r'\b)|(\b'.join(subdict.keys()) + r'\b)'
            text = re.sub(regex, cb, text)

        return text
def expand_abbreviations(self, text):
        if not self.abbreviations:
            raise LexiconError("No abbreviations in lexicon.")

        def chunks(data, SIZE=25):
            """
            Regex only supports 100 groups for munging callbacks. So we have to
            chunk the abbreviation dicitonary.
            """
            it = iter(data)
            for i in range(0, len(data), SIZE):
                yield {k: data[k] for k in islice(it, SIZE)}

        def cb(g):
            """Regex callback"""
            return self.abbreviations.get(g.group(0)) or g.group(0)

        # Special cases.

        # TODO: We should handle these with a special set of
        # replacements that are made before the others.
        text = re.sub(r'w/', r'wi', text)

        # Main loop.
        for subdict in chunks(self.abbreviations):
            regex = r'(\b' + r'\b)|(\b'.join(subdict.keys()) + r'\b)'
            text = re.sub(regex, cb, text)

        return text
def expand_abbreviations ( self , text ) : if not self . abbreviations : raise LexiconError ( "No abbreviations in lexicon." ) def chunks ( data , SIZE = 25 ) : """
            Regex only supports 100 groups for munging callbacks. So we have to
            chunk the abbreviation dicitonary.
            """ it = iter ( data ) for i in range ( 0 , len ( data ) , SIZE ) : yield { k : data [ k ] for k in islice ( it , SIZE ) } def cb ( g ) : """Regex callback""" return self . abbreviations . get ( g . group ( 0 ) ) or g . group ( 0 ) # Special cases. # TODO: We should handle these with a special set of # replacements that are made before the others. text = re . sub ( r'w/' , r'wi' , text ) # Main loop. for subdict in chunks ( self . abbreviations ) : regex = r'(\b' + r'\b)|(\b' . join ( subdict . keys ( ) ) + r'\b)' text = re . sub ( regex , cb , text ) return text
Parse a piece of text and replace any abbreviations with their full
        word equivalents. Uses the lexicon.abbreviations dictionary to find
        abbreviations.

        Args:
            text (str): The text to parse.

        Returns:
            str: The text with abbreviations replaced.
Parse a piece of text and replace any abbreviations with their full word equivalents . Uses the lexicon . abbreviations dictionary to find abbreviations .