Rewrite in CoffeeScript
This commit is contained in:
parent
ee39c1daee
commit
f60d547ea0
|
@ -0,0 +1 @@
|
|||
/genregen.js
|
|
@ -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
285
gg.pl
|
@ -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;
|
||||
}
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue