Sha256: f08575948d24b2c7c615836202e54ea68d4ae2a2a8731d60f326aa0b7f94050f

Contents?: true

Size: 891 Bytes

Versions: 180

Compression:

Stored size: 891 Bytes

Contents

#[macro_use] extern crate lazy_static;
extern crate regex;

use regex::Regex;

// Regular expressions from Python version of exercism

pub fn translate_word(word: &str) -> String {
    // Prevent creation and compilation at every call.
    // These are compiled exactly once
    lazy_static! {
        // Detects if it starts with a vowel
        static ref VOWEL: Regex = Regex::new(r"^([aeiou]|y[^aeiou]|xr)[a-z]*").unwrap();
        // Detects splits for initial consonants
        static ref CONSONANTS: Regex = Regex::new(r"^([^aeiou]?qu|[^aeiou]+)([a-z]*)").unwrap();
    }

    if VOWEL.is_match(word) {
        String::from(word) + "ay"
    } else {
        let caps = CONSONANTS.captures(word).unwrap();
        String::from(&caps[2]) + &caps[1] + "ay"
    }
}

pub fn translate(text: &str) -> String {
    text.split(" ").map(|w| translate_word(w)).collect::<Vec<_>>().join(" ")
}

Version data entries

180 entries across 180 versions & 1 rubygems

Version Path
trackler-2.2.1.17 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.16 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.15 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.14 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.13 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.12 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.11 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.10 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.9 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.8 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.7 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.6 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.5 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.4 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.3 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.2 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.1 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.1.0 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.0.6 tracks/rust/exercises/pig-latin/example.rs
trackler-2.2.0.5 tracks/rust/exercises/pig-latin/example.rs