code: def abbreviate(s):
      """Apply a set of standard transformations to string to produce an
      abbreviation no more than 4 characters long.
      """
      if not s:
          return ""
      # check the cache
      if s in abbreviate.abbreviations:
          return abbreviate.abbreviations[s]
      # anything less than 4 characters doesn't need
      # an abbreviation
      if len(s) < 4:
          # update cache
          abbreviate.abbreviations[s] = s
          return s
      # save the first character in case it's a vowel
      s1 = s[0]
      s2 = s[1:]
      if s.endswith("ing"):
          # strip off the 'ing'
          s2 = s2[:-3]
      # reduce all doubled characters to one
      s2 = "".join(c for c, _ in groupby(s2))
      # remove all vowels
      s2 = s2.translate(None, "AEIOUaeiou")
      # shorten remaining consonants to 4 characters
      # and add the first char back to the front
      s2 = s1 + s2[:4]
      # update cache
      abbreviate.abbreviations[s] = s2
      return s2
  
imports: import bjam
  import re
  import types
  from itertools import groupby
label_desc: Use image node_id 17 for calling a global function with example usage: abbreviate(s) and returns: s2, str, abbreviate, s