def get_special_chars(language):
 for char in SPECIAL_CHARS:
  (yield (get_char_description(char), char))
 code = language.code.replace(u'_', u'-').split(u'-')[0]
 if (code in EXTRA_CHARS):
  for char in EXTRA_CHARS[code]:
   (yield (get_char_description(char), char))
 (yield get_quote(code, DOUBLE_OPEN, _(u'Opening double quote')))
 (yield get_quote(code, DOUBLE_CLOSE, _(u'Closing double quote')))
 (yield get_quote(code, SINGLE_OPEN, _(u'Opening single quote')))
 (yield get_quote(code, SINGLE_CLOSE, _(u'Closing single quote')))
 if (code in HYPHEN_LANGS):
  (yield (_(u'Hyphen'), u'-'))
 if (code in EN_DASH_LANGS):
  (yield (_(u'En dash'), u'\u2013'))
 if (code in EM_DASH_LANGS):
  (yield (_(u'Em dash'), u'\u2014'))

def get_special_chars ( language ) : for char in SPECIAL_CHARS : ( yield ( get_char_description ( char ) , char ) ) code = language . code . replace ( u'_' , u'-' ) . split ( u'-' ) [ 0 ] if ( code in EXTRA_CHARS ) : for char in EXTRA_CHARS [ code ] : ( yield ( get_char_description ( char ) , char ) ) ( yield get_quote ( code , DOUBLE_OPEN , _ ( u'Opening double quote' ) ) ) ( yield get_quote ( code , DOUBLE_CLOSE , _ ( u'Closing double quote' ) ) ) ( yield get_quote ( code , SINGLE_OPEN , _ ( u'Opening single quote' ) ) ) ( yield get_quote ( code , SINGLE_CLOSE , _ ( u'Closing single quote' ) ) ) if ( code in HYPHEN_LANGS ) : ( yield ( _ ( u'Hyphen' ) , u'-' ) ) if ( code in EN_DASH_LANGS ) : ( yield ( _ ( u'En dash' ) , u'\u2013' ) ) if ( code in EM_DASH_LANGS ) : ( yield ( _ ( u'Em dash' ) , u'\u2014' ) )
returns list of special characters .