namey 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +22 -1
- data/README.markdown +105 -0
- data/Rakefile +54 -0
- data/api/Gemfile +10 -0
- data/api/config.ru +8 -0
- data/api/namey_app.rb +50 -0
- data/api/public/LICENSE +176 -0
- data/api/public/Makefile +30 -0
- data/api/public/README.md +105 -0
- data/api/public/api.js +76 -0
- data/api/public/bootstrap.css +2467 -0
- data/api/public/bootstrap.min.css +356 -0
- data/api/public/docs/assets/css/docs.css +317 -0
- data/api/public/docs/assets/ico/bootstrap-apple-114x114.png +0 -0
- data/api/public/docs/assets/ico/bootstrap-apple-57x57.png +0 -0
- data/api/public/docs/assets/ico/bootstrap-apple-72x72.png +0 -0
- data/api/public/docs/assets/ico/favicon.ico +0 -0
- data/api/public/docs/assets/img/bird.png +0 -0
- data/api/public/docs/assets/img/browsers.png +0 -0
- data/api/public/docs/assets/img/example-diagram-01.png +0 -0
- data/api/public/docs/assets/img/example-diagram-02.png +0 -0
- data/api/public/docs/assets/img/example-diagram-03.png +0 -0
- data/api/public/docs/assets/img/grid-18px.png +0 -0
- data/api/public/docs/assets/img/twitter-logo-no-bird.png +0 -0
- data/api/public/docs/assets/js/application.js +52 -0
- data/api/public/docs/assets/js/google-code-prettify/prettify.css +94 -0
- data/api/public/docs/assets/js/google-code-prettify/prettify.js +28 -0
- data/api/public/docs/index.html +2037 -0
- data/api/public/docs/javascript.html +798 -0
- data/api/public/examples/container-app.html +119 -0
- data/api/public/examples/fluid.html +122 -0
- data/api/public/examples/hero.html +79 -0
- data/api/public/js/bootstrap-alerts.js +113 -0
- data/api/public/js/bootstrap-buttons.js +62 -0
- data/api/public/js/bootstrap-dropdown.js +55 -0
- data/api/public/js/bootstrap-modal.js +260 -0
- data/api/public/js/bootstrap-popover.js +86 -0
- data/api/public/js/bootstrap-scrollspy.js +107 -0
- data/api/public/js/bootstrap-tabs.js +80 -0
- data/api/public/js/bootstrap-twipsy.js +310 -0
- data/api/public/js/tests/index.html +40 -0
- data/api/public/js/tests/unit/bootstrap-alerts.js +41 -0
- data/api/public/js/tests/unit/bootstrap-buttons.js +42 -0
- data/api/public/js/tests/unit/bootstrap-dropdown.js +52 -0
- data/api/public/js/tests/unit/bootstrap-modal.js +151 -0
- data/api/public/js/tests/unit/bootstrap-popover.js +76 -0
- data/api/public/js/tests/unit/bootstrap-scrollspy.js +31 -0
- data/api/public/js/tests/unit/bootstrap-tabs.js +77 -0
- data/api/public/js/tests/unit/bootstrap-twipsy.js +81 -0
- data/api/public/js/tests/vendor/qunit.css +232 -0
- data/api/public/js/tests/vendor/qunit.js +1510 -0
- data/api/public/lib/bootstrap.less +26 -0
- data/api/public/lib/forms.less +479 -0
- data/api/public/lib/mixins.less +222 -0
- data/api/public/lib/patterns.less +1060 -0
- data/api/public/lib/reset.less +141 -0
- data/api/public/lib/scaffolding.less +137 -0
- data/api/public/lib/tables.less +224 -0
- data/api/public/lib/type.less +187 -0
- data/api/public/lib/variables.less +60 -0
- data/api/public/ui.js +42 -0
- data/api/views/index.erb +211 -0
- data/bin/{load-data → namey-load-data} +7 -1
- data/bin/random-name +4 -1
- data/data/dist.all.last +88799 -0
- data/data/names.db +0 -0
- data/lib/namey.rb +12 -5
- data/lib/namey/generator.rb +79 -10
- data/lib/namey/parser.rb +79 -16
- data/lib/namey/version.rb +2 -1
- data/namey.gemspec +8 -2
- data/spec/generator_spec.rb +54 -0
- data/spec/spec_helper.rb +19 -0
- metadata +95 -9
@@ -0,0 +1,187 @@
|
|
1
|
+
/* Typography.less
|
2
|
+
* Headings, body text, lists, code, and more for a versatile and durable typography system
|
3
|
+
* ---------------------------------------------------------------------------------------- */
|
4
|
+
|
5
|
+
|
6
|
+
// BODY TEXT
|
7
|
+
// ---------
|
8
|
+
|
9
|
+
p {
|
10
|
+
#font > .shorthand(normal,@basefont,@baseline);
|
11
|
+
margin-bottom: @baseline / 2;
|
12
|
+
small {
|
13
|
+
font-size: @basefont - 2;
|
14
|
+
color: @grayLight;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
// HEADINGS
|
20
|
+
// --------
|
21
|
+
|
22
|
+
h1, h2, h3, h4, h5, h6 {
|
23
|
+
font-weight: bold;
|
24
|
+
color: @grayDark;
|
25
|
+
small {
|
26
|
+
color: @grayLight;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
h1 {
|
30
|
+
margin-bottom: @baseline;
|
31
|
+
font-size: 30px;
|
32
|
+
line-height: @baseline * 2;
|
33
|
+
small {
|
34
|
+
font-size: 18px;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
h2 {
|
38
|
+
font-size: 24px;
|
39
|
+
line-height: @baseline * 2;
|
40
|
+
small {
|
41
|
+
font-size: 14px;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
h3, h4, h5, h6 {
|
45
|
+
line-height: @baseline * 2;
|
46
|
+
}
|
47
|
+
h3 {
|
48
|
+
font-size: 18px;
|
49
|
+
small {
|
50
|
+
font-size: 14px;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
h4 {
|
54
|
+
font-size: 16px;
|
55
|
+
small {
|
56
|
+
font-size: 12px;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
h5 {
|
60
|
+
font-size: 14px;
|
61
|
+
}
|
62
|
+
h6 {
|
63
|
+
font-size: 13px;
|
64
|
+
color: @grayLight;
|
65
|
+
text-transform: uppercase;
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
// COLORS
|
70
|
+
// ------
|
71
|
+
|
72
|
+
// Unordered and Ordered lists
|
73
|
+
ul, ol {
|
74
|
+
margin: 0 0 @baseline 25px;
|
75
|
+
}
|
76
|
+
ul ul,
|
77
|
+
ul ol,
|
78
|
+
ol ol,
|
79
|
+
ol ul {
|
80
|
+
margin-bottom: 0;
|
81
|
+
}
|
82
|
+
ul {
|
83
|
+
list-style: disc;
|
84
|
+
}
|
85
|
+
ol {
|
86
|
+
list-style: decimal;
|
87
|
+
}
|
88
|
+
li {
|
89
|
+
line-height: @baseline;
|
90
|
+
color: @gray;
|
91
|
+
}
|
92
|
+
ul.unstyled {
|
93
|
+
list-style: none;
|
94
|
+
margin-left: 0;
|
95
|
+
}
|
96
|
+
|
97
|
+
// Description Lists
|
98
|
+
dl {
|
99
|
+
margin-bottom: @baseline;
|
100
|
+
dt, dd {
|
101
|
+
line-height: @baseline;
|
102
|
+
}
|
103
|
+
dt {
|
104
|
+
font-weight: bold;
|
105
|
+
}
|
106
|
+
dd {
|
107
|
+
margin-left: @baseline / 2;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
// MISC
|
112
|
+
// ----
|
113
|
+
|
114
|
+
// Horizontal rules
|
115
|
+
hr {
|
116
|
+
margin: 20px 0 19px;
|
117
|
+
border: 0;
|
118
|
+
border-bottom: 1px solid #eee;
|
119
|
+
}
|
120
|
+
|
121
|
+
// Emphasis
|
122
|
+
strong {
|
123
|
+
font-style: inherit;
|
124
|
+
font-weight: bold;
|
125
|
+
}
|
126
|
+
em {
|
127
|
+
font-style: italic;
|
128
|
+
font-weight: inherit;
|
129
|
+
line-height: inherit;
|
130
|
+
}
|
131
|
+
.muted {
|
132
|
+
color: @grayLight;
|
133
|
+
}
|
134
|
+
|
135
|
+
// Blockquotes
|
136
|
+
blockquote {
|
137
|
+
margin-bottom: @baseline;
|
138
|
+
border-left: 5px solid #eee;
|
139
|
+
padding-left: 15px;
|
140
|
+
p {
|
141
|
+
#font > .shorthand(300,14px,@baseline);
|
142
|
+
margin-bottom: 0;
|
143
|
+
}
|
144
|
+
small {
|
145
|
+
display: block;
|
146
|
+
#font > .shorthand(300,12px,@baseline);
|
147
|
+
color: @grayLight;
|
148
|
+
&:before {
|
149
|
+
content: '\2014 \00A0';
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
// Addresses
|
155
|
+
address {
|
156
|
+
display: block;
|
157
|
+
line-height: @baseline;
|
158
|
+
margin-bottom: @baseline;
|
159
|
+
}
|
160
|
+
|
161
|
+
// Inline and block code styles
|
162
|
+
code, pre {
|
163
|
+
padding: 0 3px 2px;
|
164
|
+
font-family: Monaco, Andale Mono, Courier New, monospace;
|
165
|
+
font-size: 12px;
|
166
|
+
.border-radius(3px);
|
167
|
+
}
|
168
|
+
code {
|
169
|
+
background-color: lighten(@orange, 40%);
|
170
|
+
color: rgba(0,0,0,.75);
|
171
|
+
padding: 1px 3px;
|
172
|
+
}
|
173
|
+
pre {
|
174
|
+
background-color: #f5f5f5;
|
175
|
+
display: block;
|
176
|
+
padding: (@baseline - 1) / 2;
|
177
|
+
margin: 0 0 @baseline;
|
178
|
+
line-height: @baseline;
|
179
|
+
font-size: 12px;
|
180
|
+
border: 1px solid #ccc;
|
181
|
+
border: 1px solid rgba(0,0,0,.15);
|
182
|
+
.border-radius(3px);
|
183
|
+
white-space: pre;
|
184
|
+
white-space: pre-wrap;
|
185
|
+
word-wrap: break-word;
|
186
|
+
|
187
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/* Variables.less
|
2
|
+
* Variables to customize the look and feel of Bootstrap
|
3
|
+
* ----------------------------------------------------- */
|
4
|
+
|
5
|
+
|
6
|
+
// Links
|
7
|
+
@linkColor: #0069d6;
|
8
|
+
@linkColorHover: darken(@linkColor, 15);
|
9
|
+
|
10
|
+
// Grays
|
11
|
+
@black: #000;
|
12
|
+
@grayDark: lighten(@black, 25%);
|
13
|
+
@gray: lighten(@black, 50%);
|
14
|
+
@grayLight: lighten(@black, 75%);
|
15
|
+
@grayLighter: lighten(@black, 90%);
|
16
|
+
@white: #fff;
|
17
|
+
|
18
|
+
// Accent Colors
|
19
|
+
@blue: #049CDB;
|
20
|
+
@blueDark: #0064CD;
|
21
|
+
@green: #46a546;
|
22
|
+
@red: #9d261d;
|
23
|
+
@yellow: #ffc40d;
|
24
|
+
@orange: #f89406;
|
25
|
+
@pink: #c3325f;
|
26
|
+
@purple: #7a43b6;
|
27
|
+
|
28
|
+
// Baseline grid
|
29
|
+
@basefont: 13px;
|
30
|
+
@baseline: 18px;
|
31
|
+
|
32
|
+
// Griditude
|
33
|
+
// Modify the grid styles in mixins.less
|
34
|
+
@gridColumns: 16;
|
35
|
+
@gridColumnWidth: 40px;
|
36
|
+
@gridGutterWidth: 20px;
|
37
|
+
@extraSpace: (@gridGutterWidth * 2); // For our grid calculations
|
38
|
+
@siteWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
|
39
|
+
|
40
|
+
// Color Scheme
|
41
|
+
// Use this to roll your own color schemes if you like (unused by Bootstrap by default)
|
42
|
+
@baseColor: @blue; // Set a base color
|
43
|
+
@complement: spin(@baseColor, 180); // Determine a complementary color
|
44
|
+
@split1: spin(@baseColor, 158); // Split complements
|
45
|
+
@split2: spin(@baseColor, -158);
|
46
|
+
@triad1: spin(@baseColor, 135); // Triads colors
|
47
|
+
@triad2: spin(@baseColor, -135);
|
48
|
+
@tetra1: spin(@baseColor, 90); // Tetra colors
|
49
|
+
@tetra2: spin(@baseColor, -90);
|
50
|
+
@analog1: spin(@baseColor, 22); // Analogs colors
|
51
|
+
@analog2: spin(@baseColor, -22);
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
// More variables coming soon:
|
56
|
+
// - @basefont to @baseFontSize
|
57
|
+
// - @baseline to @baseLineHeight
|
58
|
+
// - @baseFontFamily
|
59
|
+
// - @primaryButtonColor
|
60
|
+
// - anything else? File an issue on GitHub
|
data/api/public/ui.js
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
$(document).ready(function() {
|
2
|
+
$("input[name=frequency]").change(function() {
|
3
|
+
console.log("HI!");
|
4
|
+
if ( $("input[name=frequency]:checked").val() == "custom" ) {
|
5
|
+
$("#min_freq,#max_freq").removeClass("disabled").removeAttr("disabled");
|
6
|
+
}
|
7
|
+
else {
|
8
|
+
$("#min_freq,#max_freq").addClass("disabled").attr("disabled", true); ;
|
9
|
+
}
|
10
|
+
|
11
|
+
});
|
12
|
+
|
13
|
+
$('#name-params').submit(function() {
|
14
|
+
|
15
|
+
var opts = {
|
16
|
+
count: $("select[name=count]").val(),
|
17
|
+
with_surname: $("input[name=with_surname]:checked").val() === "true"
|
18
|
+
};
|
19
|
+
|
20
|
+
var frequency = $("input[name=frequency]:checked").val();
|
21
|
+
if ( frequency == "custom" ) {
|
22
|
+
opts.min_freq = $("input[name=min_freq]").val();
|
23
|
+
opts.max_freq = $("input[name=max_freq]").val();
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
opts.frequency = frequency;
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
var type = $("input[name=type]:checked").val();
|
31
|
+
if ( type != "both" ) {
|
32
|
+
opts.type = type;
|
33
|
+
}
|
34
|
+
|
35
|
+
opts.callback = function(r) {
|
36
|
+
$("#nameList").val(r);
|
37
|
+
}
|
38
|
+
namey.get(opts);
|
39
|
+
|
40
|
+
return false;
|
41
|
+
});
|
42
|
+
});
|
data/api/views/index.erb
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<!-- shamelessly stolen from view-source:http://twitter.github.com/bootstrap/examples/hero.html -->
|
4
|
+
<head>
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<title>Namey</title>
|
7
|
+
<meta name="description" content="">
|
8
|
+
<meta name="author" content="">
|
9
|
+
|
10
|
+
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
|
11
|
+
<!--[if lt IE 9]>
|
12
|
+
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
13
|
+
<![endif]-->
|
14
|
+
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
15
|
+
<script>
|
16
|
+
google.load("jquery", "1.6.4");
|
17
|
+
</script>
|
18
|
+
<script type="text/javascript" src="/api.js"></script>
|
19
|
+
<script type="text/javascript" src="/ui.js"></script>
|
20
|
+
|
21
|
+
<!-- Le styles -->
|
22
|
+
<link href="/bootstrap.css" rel="stylesheet">
|
23
|
+
<style type="text/css">
|
24
|
+
body {
|
25
|
+
padding-top: 10px;
|
26
|
+
}
|
27
|
+
.hero-unit {
|
28
|
+
padding-top: 10px;
|
29
|
+
padding-bottom: 10px;
|
30
|
+
}
|
31
|
+
.hero-unit h1 {
|
32
|
+
font-size: 48px;
|
33
|
+
}
|
34
|
+
.hero-unit p {
|
35
|
+
font-size: 16px;
|
36
|
+
line-height: 18px;
|
37
|
+
font-weight: 100;
|
38
|
+
}
|
39
|
+
|
40
|
+
</style>
|
41
|
+
|
42
|
+
<!---
|
43
|
+
<link rel="shortcut icon" href="images/favicon.ico">
|
44
|
+
--->
|
45
|
+
</head>
|
46
|
+
|
47
|
+
<body>
|
48
|
+
<div class="container">
|
49
|
+
|
50
|
+
<!-- Main hero unit for a primary marketing message or call to action -->
|
51
|
+
<div class="hero-unit">
|
52
|
+
<h1>Namey!</h1>
|
53
|
+
<h2>A random name generator</h1>
|
54
|
+
<p>Welcome to Namey, the random name generator, powered by the ruby
|
55
|
+
gem of the same name. It uses the
|
56
|
+
<a href="http://www.census.gov/genealogy/names/">US Census
|
57
|
+
Bureau database</a> of first and last names to generate random
|
58
|
+
names. You can specify gender, whether you want a common or
|
59
|
+
rare name, and so on. It's pretty easy, so...</p>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<section id="forms">
|
63
|
+
<div class="page-header">
|
64
|
+
<h1>Lets make some names!</h1>
|
65
|
+
</div>
|
66
|
+
<div class="row">
|
67
|
+
<div>
|
68
|
+
<form id="name-params">
|
69
|
+
<fieldset>
|
70
|
+
<div class="clearfix">
|
71
|
+
<label id="type-opts">Name Type</label>
|
72
|
+
<div class="input">
|
73
|
+
<ul class="inputs-list">
|
74
|
+
<li>
|
75
|
+
<label>
|
76
|
+
<input type="radio" checked name="type" value="both" />
|
77
|
+
<span>Any Gender</span>
|
78
|
+
</label>
|
79
|
+
</li>
|
80
|
+
<li>
|
81
|
+
<label>
|
82
|
+
<input type="radio" name="type" value="female" />
|
83
|
+
<span>Female</span>
|
84
|
+
</label>
|
85
|
+
</li>
|
86
|
+
<li>
|
87
|
+
<label>
|
88
|
+
<input type="radio" name="type" value="male" />
|
89
|
+
<span>Male</span>
|
90
|
+
</label>
|
91
|
+
</li>
|
92
|
+
<li>
|
93
|
+
<label>
|
94
|
+
<input type="radio" name="type" value="surname" />
|
95
|
+
<span>Just a surname</span>
|
96
|
+
</label>
|
97
|
+
</li>
|
98
|
+
</ul>
|
99
|
+
</div>
|
100
|
+
</div><!-- /clearfix -->
|
101
|
+
|
102
|
+
<div class="clearfix">
|
103
|
+
<div class="input">
|
104
|
+
<ul class="inputs-list">
|
105
|
+
<li>
|
106
|
+
<label>
|
107
|
+
<input type="checkbox" name="with_surname" value="true" checked />
|
108
|
+
<span>Include a surname?</span>
|
109
|
+
</label>
|
110
|
+
</li>
|
111
|
+
</ul>
|
112
|
+
<span class="help-block">
|
113
|
+
<strong>Note:</strong> If you uncheck this, you'll only get a first name.
|
114
|
+
</span>
|
115
|
+
</div>
|
116
|
+
</div><!-- /clearfix -->
|
117
|
+
|
118
|
+
<div class="clearfix">
|
119
|
+
<label id="optionsRadio">Name Frequency</label>
|
120
|
+
<div class="input">
|
121
|
+
<ul class="inputs-list">
|
122
|
+
<li>
|
123
|
+
<label>
|
124
|
+
<input type="radio" checked name="frequency" value="common" />
|
125
|
+
<span>'Common' names</span>
|
126
|
+
</label>
|
127
|
+
</li>
|
128
|
+
<li>
|
129
|
+
<label>
|
130
|
+
<input type="radio" name="frequency" value="rare" />
|
131
|
+
<span>Rare names</span>
|
132
|
+
</label>
|
133
|
+
</li>
|
134
|
+
<li>
|
135
|
+
<label>
|
136
|
+
<input type="radio" name="frequency" value="all" />
|
137
|
+
<span>All names</span>
|
138
|
+
</label>
|
139
|
+
</li>
|
140
|
+
<li>
|
141
|
+
<label>
|
142
|
+
<input type="radio" name="frequency" value="custom" />
|
143
|
+
<span>Custom range: </span>
|
144
|
+
From: <input class="span2 disabled" id="min_freq" name="min_freq" type="text" placeholder="(0-100)" disabled />
|
145
|
+
To: <input class="span2 disabled" id="max_freq" name="max_freq" type="text" placeholder="(0-100)" disabled />
|
146
|
+
</label>
|
147
|
+
</li>
|
148
|
+
</ul>
|
149
|
+
</div>
|
150
|
+
</div><!-- /clearfix -->
|
151
|
+
|
152
|
+
|
153
|
+
<div class="clearfix">
|
154
|
+
<label for="count">How many names to generate?</label>
|
155
|
+
<div class="input">
|
156
|
+
<select name="count" id="count">
|
157
|
+
<option>1</option>
|
158
|
+
<option>2</option>
|
159
|
+
<option>3</option>
|
160
|
+
<option>4</option>
|
161
|
+
<option>5</option>
|
162
|
+
</select>
|
163
|
+
</div>
|
164
|
+
</div><!-- /clearfix -->
|
165
|
+
|
166
|
+
<div class="clearfix">
|
167
|
+
<label for="disabledInput">Results:</label>
|
168
|
+
<div class="input">
|
169
|
+
<textarea class="xxlarge" name="nameList" id="nameList" rows="5"></textarea>
|
170
|
+
</div>
|
171
|
+
</div><!-- /clearfix -->
|
172
|
+
|
173
|
+
<div class="actions">
|
174
|
+
<input type="submit" class="btn primary" value="Gimme a name!">
|
175
|
+
</div>
|
176
|
+
</fieldset>
|
177
|
+
</form>
|
178
|
+
</div>
|
179
|
+
</div><!-- /row -->
|
180
|
+
|
181
|
+
</section>
|
182
|
+
|
183
|
+
<!-- Example row of columns -->
|
184
|
+
<div class="row">
|
185
|
+
<div class="span5">
|
186
|
+
<h2>Open Source</h2>
|
187
|
+
<p>The code for namey is totally open source, do what you
|
188
|
+
like with it! <a href="https://github.com/muffinista/namey">Check it out on github</a></p>
|
189
|
+
</div>
|
190
|
+
<div class="span6">
|
191
|
+
<h2>API Available</h2>
|
192
|
+
<p>Are you a nerd? Do you like APIs? You're in luck! Namey
|
193
|
+
has a <a href="/api.js">Javascript API</a> available so
|
194
|
+
you can generate names however you would like.</p>
|
195
|
+
</div>
|
196
|
+
<div class="span5">
|
197
|
+
<h2>Muffinlabs</h2>
|
198
|
+
<p>Namey is
|
199
|
+
a <a href="http://muffinlabs.com">muffinlabs</a>
|
200
|
+
production. Please visit!</p>
|
201
|
+
</div>
|
202
|
+
</div>
|
203
|
+
|
204
|
+
<footer>
|
205
|
+
<p>© Colin Mitchell 2011, <a href="http://muffinlabs.com">http://muffinlabs.com</a></p>
|
206
|
+
</footer>
|
207
|
+
|
208
|
+
</div> <!-- /container -->
|
209
|
+
|
210
|
+
</body>
|
211
|
+
</html>
|