Rewrite in CoffeeScript

This commit is contained in:
Maximilian Gaß 2011-10-09 20:14:57 +02:00
parent ee39c1daee
commit f60d547ea0
5 changed files with 258 additions and 285 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/genregen.js

195
genregen.coffee Normal file
View File

@ -0,0 +1,195 @@
genres = [
'Aggrotech',
'Ambient',
'Beat',
'Bluegrass',
'Blues',
'Chiptune',
'Core',
'Country',
'Cumbia',
'Dance',
'Dancehall',
'Drum and Bass',
'Dub',
'Dubstep',
'EBM',
'Flamenco',
'Grunge',
'Goa',
'Gospel',
'Hardstyle',
'Hip-hop',
'House',
'Humppa',
'Industrial',
'Jazz',
'Metal',
'Oi!',
'Polka',
'Pop',
'Punk',
'Rap',
'Rave',
'Reggae',
'Rockabilly',
'Samba',
'Schranz',
'Ska',
'Soul',
'Techhouse',
'Techno',
'Tekkno',
'Trance',
'Triphop',
'Twostep',
'Western',
]
subgenres = [
'30s',
'40s',
'50s',
'60s',
'70s',
'80s',
'Acid',
'Alternative',
'Ambient',
'Anatolian',
'Arena',
'Art',
'Australian',
'Australian',
'Avantgarde',
'Balearic',
'Balkan',
'Battle',
'Black',
'Body',
'Bossa nova',
'Brit',
'Celtic',
'Chinese',
'Christian',
'Comedy',
'Conscious',
'Cow',
'Crust',
'Dark',
'Death',
'Dirty',
'Doom',
'Drone',
'East Coast',
'Electroclash',
'Electronic',
'Emo',
'Euro',
'Experimental',
'Extreme',
'Flower',
'Folk',
'Free',
'Freestyle',
'Fucking',
'Fun',
'Funk',
'Fusion',
'Future',
'Gangsta',
'Garage',
'Ghetto',
'Glam',
'Gospel',
'Gothic',
'Grind',
'Groove',
'Happy',
'Hard',
'Hardcore',
'Harmonica',
'Handsup',
'Heavy',
'Horror',
'Indian',
'Indie',
'Independent',
'Industrial',
'Instrumental',
'Latin',
'Lounge',
'Mainstream',
'Medieval',
'Melodic',
'Minimal',
'Neo',
'New age',
'Ninja',
'Nintendo',
'Noise',
'Nu',
'Pagan',
'Pirate',
'Post',
'Power',
'Progressive',
'Psychedelic',
'Skate',
'Sludge',
'Southern',
'Space',
'Speed',
'Stoner',
'Street',
'Sunshine',
'Surf',
'Swedish',
'Swing',
'Symphonic',
'Synth',
'Teutonic',
'Traditional',
'Trash',
'Viking',
'Vocal',
'Wave',
'West Coast',
'World',
]
cities = [
'Berlin',
'Bakersfield',
'Detroit',
'Frankfurt',
'Gothenburg',
'Ibiza',
'London',
'New Orleans',
'Rio',
'Rotterdam',
'San Francisco',
]
rand_choose = (array) ->
array[Math.floor(Math.random() * array.length)]
chance = (percent) ->
Math.floor(Math.random() * 100) < percent
generate_genre = ->
parts = []
parts.push rand_choose(cities) if chance 20
parts.push rand_choose(subgenres) if chance 70
parts.push rand_choose(subgenres)
parts.push rand_choose(genres)
genre = parts.join(' ')
$('#genre a').text(genre)
$('title').text('Listen to ' + genre)
$(document).ready ->
$('#genre a').click(generate_genre)
generate_genre()

285
gg.pl
View File

@ -1,285 +0,0 @@
#!/usr/bin/env perl
use Mojolicious::Lite;
use Data::Random qw(rand_enum);
my @genres = (
'Aggrotech',
'Ambient',
'Beat',
'Bluegrass',
'Blues',
'Chiptune',
'Core',
'Country',
'Cumbia',
'Dance',
'Dancehall',
'Drum and Bass',
'Dub',
'Dubstep',
'EBM',
'Flamenco',
'Grunge',
'Goa',
'Gospel',
'Hardstyle',
'Hip-hop',
'House',
'Humppa',
'Industrial',
'Jazz',
'Metal',
'Oi!',
'Polka',
'Pop',
'Punk',
'Rap',
'Rave',
'Reggae',
'Rockabilly',
'Samba',
'Schranz',
'Ska',
'Soul',
'Techhouse',
'Techno',
'Tekkno',
'Trance',
'Triphop',
'Twostep',
'Western',
);
my @subgenres = (
'30s',
'40s',
'50s',
'60s',
'70s',
'80s',
'Acid',
'Alternative',
'Ambient',
'Anatolian',
'Arena',
'Art',
'Australian',
'Australian',
'Avantgarde',
'Balearic',
'Balkan',
'Battle',
'Black',
'Body',
'Bossa nova',
'Brit',
'Celtic',
'Chinese',
'Christian',
'Comedy',
'Conscious',
'Cow',
'Crust',
'Dark',
'Death',
'Dirty',
'Doom',
'Drone',
'East Coast',
'Electroclash',
'Electronic',
'Emo',
'Euro',
'Experimental',
'Extreme',
'Flower',
'Folk',
'Free',
'Freestyle',
'Fucking',
'Fun',
'Funk',
'Fusion',
'Future',
'Gangsta',
'Garage',
'Ghetto',
'Glam',
'Gospel',
'Gothic',
'Grind',
'Groove',
'Happy',
'Hard',
'Hardcore',
'Harmonica',
'Handsup',
'Heavy',
'Horror',
'Indian',
'Indie',
'Independent',
'Industrial',
'Instrumental',
'Latin',
'Lounge',
'Mainstream',
'Medieval',
'Melodic',
'Minimal',
'Neo',
'New age',
'Ninja',
'Nintendo',
'Noise',
'Nu',
'Pagan',
'Pirate',
'Post',
'Power',
'Progressive',
'Psychedelic',
'Skate',
'Sludge',
'Southern',
'Space',
'Speed',
'Stoner',
'Street',
'Sunshine',
'Surf',
'Swedish',
'Swing',
'Symphonic',
'Synth',
'Teutonic',
'Traditional',
'Trash',
'Viking',
'Vocal',
'Wave',
'West Coast',
'World',
);
my @cities = (
'Berlin',
'Bakersfield',
'Detroit',
'Frankfurt',
'Gothenburg',
'Ibiza',
'London',
'New Orleans',
'Rio',
'Rotterdam',
'San Francisco',
);
sub chance {
my ($percent) = @_;
return int(rand 101) <= $percent;
}
sub generate {
my @genre;
push @genre, rand_enum(set => \@cities) if chance 10;
push @genre, rand_enum(set => \@subgenres) if chance 70;
push @genre, rand_enum(set => \@subgenres);
push @genre, rand_enum(set => \@genres);
return join ' ', @genre;
}
get '/' => sub {
my ($self) = @_;
$self->render('index', genre => generate());
};
get '/plain' => sub {
my ($self) = @_;
$self->render(text => generate());
};
app->start;
__DATA__
@@ index.html.ep
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>
Listen to <%= $genre %>
</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/style.css" />
</head>
<body>
<div id="title"> Listen to </div>
<div id="genre"> <a href="/"><%= $genre %></a> </div>
<div id="twitter">
<a href="http://twitter.com/share" class="twitter-share-button"
data-text="I listen to <%= $genre %> data-count="horizontal">
Tweet
</a>
<script type="text/javascript"
src="http://platform.twitter.com/widgets.js"> </script>
<br />
</div>
<div id="impressum">
Created by
<a href="http://www.thehappy.de/~xeno/"> xeno </a>
and
<a href="http://mxey.net"> mxey </a>
|
<a href="https://github.com/mxey/genregenerator"> fork me on github </a>
</div>
</body>
</html>
@@ style.css
* {
margin: 0px;
padding: 0px;
}
body, html {
font-family: sans-serif;
text-align: center;
}
#title {
margin-top: 50px;
font-size: 50px;
}
#genre {
margin-top: 50px;
font-size: 50px;
font-weight: bold;
color: #666;
}
#twitter {
margin-top: 80px;
margin-left: 18px;
}
#impressum {
margin-top: 5px;
font-size: 10px;
color: #999;
}
a {
color: #666;
text-decoration: none;
}

25
index.html Normal file
View File

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title> </title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="genregen.js"></script>
</head>
<body>
<div id="title"> Listen to </div>
<div id="genre"> <a href="javascript:void(0)"></a> </div>
<div id="impressum">
Created by
<a href="http://www.thehappy.de/~xeno/"> xeno </a>
and
<a href="http://mxey.net"> mxey </a>
|
<a href="https://github.com/mxey/genregenerator"> fork me on github </a>
</div>
</body>
</html>

37
style.css Normal file
View File

@ -0,0 +1,37 @@
* {
margin: 0px;
padding: 0px;
}
body, html {
font-family: sans-serif;
text-align: center;
}
#title {
margin-top: 50px;
font-size: 50px;
}
#genre {
margin-top: 50px;
font-size: 50px;
font-weight: bold;
color: #666;
}
#twitter {
margin-top: 80px;
margin-left: 18px;
}
#impressum {
margin-top: 5px;
font-size: 10px;
color: #999;
}
a {
color: #666;
text-decoration: none;
}