LanguageConverter tweaks to Pig Latin converter
authorC. Scott Ananian <cscott@cscott.net>
Mon, 2 Apr 2018 03:50:58 +0000 (23:50 -0400)
committerC. Scott Ananian <cscott@cscott.net>
Mon, 2 Apr 2018 03:50:58 +0000 (23:50 -0400)
Add apostrophe to the set of valid word characters for the en-x-piglatin
converter, so that "don't" and "can't" are properly converted to Pig
Latin (eg, to "on'tday" and "an'tcay").

Add an optional `s` before `qu` so that "squish" is properly converted
to "ishsquay".

Change-Id: Ibc5cf2c007a42d9447688b857aa75f9a3d8ae152

languages/classes/LanguageEn.php

index 709ce1b..6d603f5 100644 (file)
@@ -47,12 +47,12 @@ class EnConverter extends LanguageConverter {
                        // Only process words composed of standard English alphabet, leave the rest unchanged.
                        // This skips some English words like 'naïve' or 'résumé', but we can live with that.
                        // Ignore single letters and words which aren't lowercase or uppercase-first.
-                       return preg_replace_callback( '/[A-Za-z][a-z]+/', function ( $matches ) {
+                       return preg_replace_callback( '/[A-Za-z][a-z\']+/', function ( $matches ) {
                                $word = $matches[0];
                                if ( preg_match( '/^[aeiou]/i', $word ) ) {
                                        return $word . 'way';
                                } else {
-                                       return preg_replace_callback( '/^(qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
+                                       return preg_replace_callback( '/^(s?qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
                                                $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
                                                if ( $ucfirst ) {
                                                        return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';