2222 for locale_name , availableLocale in available_locales .items ()
2323}
2424
25+ LowerFirstSet : Final [set [String ]] = {String ("System`LowerFirst" ), String ("LowerFirst" )}
2526StringAutomatic : Final [String ] = String ("System`Automatic" )
26- LowerFirst : Final [set [ String ]] = { String ("System`LowerFirst" ), String ( "LowerFirst" )}
27+ StringLanguage : Final [String ] = String ("Language" )
2728StringUpperFirst : Final [String ] = String ("UpperFirst" )
2829SymbolLanguage : Final [String ] = Symbol ("System`$Language" )
2930
@@ -117,7 +118,7 @@ def from_dict(
117118 elif normalized_key == "lowercase_ordering" :
118119 if (option_value is SymbolAutomatic ) or option_value == "Automatic" :
119120 processed_args [normalized_key ] = None
120- elif option_value in LowerFirst :
121+ elif option_value in LowerFirstSet :
121122 processed_args [normalized_key ] = True
122123 elif option_value == StringUpperFirst :
123124 processed_args [normalized_key ] = False
@@ -304,6 +305,10 @@ class AlphabeticOrder(Builtin):
304305 >> AlphabeticOrder["parrot", "parrot"]
305306 = 0
306307
308+ The above done in operator form:
309+ >> AlphabeticOrder[]["parrot", "parrot"]
310+ = 0
311+
307312 When words are the same but only differ in case, usually lowercase letters come first:
308313 >> AlphabeticOrder["A", "a"]
309314 = -1
@@ -329,6 +334,10 @@ class AlphabeticOrder(Builtin):
329334 >> AlphabeticOrder["Papá", "Papagayo", "Spanish"]
330335 = 1
331336
337+ The above done in operator form:
338+ >> AlphabeticOrder["Spanish"]["Papá", "Papagayo"]
339+ = 1
340+
332341 The alphabetic ordering is determined by the value of <url>:$Language:
333342 doc/reference-of-built-in-symbols/global-system-information/$language/</url>. However, \
334343 specify a the language as the third argument:
@@ -348,7 +357,7 @@ class AlphabeticOrder(Builtin):
348357 """
349358
350359 eval_error = Builtin .generic_argument_error
351- expected_args = range (1 , 4 )
360+ expected_args = range (4 )
352361 options = {
353362 "System`CaseOrdering" : "Automatic" ,
354363 "System`IgnoreCase" : "False" ,
@@ -365,6 +374,29 @@ def eval(
365374 lang = String (LANGUAGE )
366375 return self .eval_with_lang (string1 , string2 , lang , options , evaluation )
367376
377+ # FIXME: Figure out out to accomplish as a rule?
378+ def eval_default_lang_operator (
379+ self ,
380+ string1 : String ,
381+ string2 : String ,
382+ options : dict ,
383+ evaluation : Evaluation ,
384+ ):
385+ """AlphabeticOrder[___][string1_String, string2_String, OptionsPattern[%(name)s]]"""
386+ return self .eval_with_lang (string1 , string2 , StringLanguage , options , evaluation )
387+
388+ # FIXME: Figure out out to accomplish as a rule?
389+ def eval_lang_operator (
390+ self ,
391+ string1 : String ,
392+ string2 : String ,
393+ lang : String ,
394+ options : dict ,
395+ evaluation : Evaluation ,
396+ ):
397+ """AlphabeticOrder[lang_String][string1_String, string2_String, OptionsPattern[%(name)s]]"""
398+ return self .eval_with_lang (string1 , string2 , lang , options , evaluation )
399+
368400 def eval_with_lang (
369401 self ,
370402 string1 : String ,
0 commit comments