Skip to content

Instantly share code, notes, and snippets.

@YaLTeR
Last active December 20, 2016 10:51
Show Gist options
  • Save YaLTeR/04def95fcbdbf6530555892667f404a5 to your computer and use it in GitHub Desktop.
Save YaLTeR/04def95fcbdbf6530555892667f404a5 to your computer and use it in GitHub Desktop.
extern crate rand;
use rand::{Rand, Rng};
use std::env;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
enum Transformation {
Nothing,
Bold,
Italic,
Monospace,
AddSpaceBefore,
AddSpaceAfter
}
impl Rand for Transformation {
fn rand<R: Rng>(rng: &mut R) -> Self {
rng.choose(&[
Transformation::Nothing,
Transformation::Bold,
Transformation::Italic,
Transformation::Monospace,
Transformation::AddSpaceBefore,
Transformation::AddSpaceAfter,
]).unwrap().clone()
}
}
fn main() {
let input = env::args().nth(1).unwrap();
let mut output = String::new();
for c in input.chars() {
let mut t = rand::random::<Transformation>();
if c == ' ' || c == '\n' || c == '\t' {
if t == Transformation::Bold || t == Transformation::Italic || t == Transformation::Monospace {
t = Transformation::AddSpaceBefore
}
}
let addition = match t {
Transformation::Nothing => format!("{}", c),
Transformation::Bold => format!(" *{}* ", c),
Transformation::Italic => format!(" _{}_ ", c),
Transformation::Monospace => format!(" `{}` ", c),
Transformation::AddSpaceBefore => format!(" {}", c),
Transformation::AddSpaceAfter => format!("{} ", c)
};
output.push_str(&addition);
}
println!("{}", output);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment