dang 1.0.0 → 2.0.0
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.
- checksums.yaml +6 -14
- data/Gemfile +2 -0
- data/Gemfile.lock +15 -6
- data/History.md +29 -0
- data/Manifest.txt +24 -3
- data/README.md +5 -5
- data/Rakefile +1 -1
- data/bin/dang +2 -4
- data/dang.gemspec +15 -15
- data/lib/dang/dang.rb +2 -2
- data/lib/dang/parser.kpeg +5 -5
- data/lib/dang/parser.rb +50 -32
- data/spectory/attribute_spec.rb +35 -0
- data/spectory/comment_spec.rb +23 -0
- data/spectory/conditional_comment_spec.rb +56 -0
- data/spectory/data_attribute_spec.rb +11 -0
- data/spectory/doctype_spec.rb +38 -0
- data/spectory/embedded_ruby_spec.rb +33 -0
- data/spectory/file_spec.rb +13 -0
- data/spectory/files/iamshane-com.html +229 -0
- data/spectory/files/iamshane-com.html.dang +231 -0
- data/spectory/filter_spec.rb +27 -0
- data/spectory/helper.rb +5 -0
- data/spectory/sanity_spec.rb +11 -0
- data/spectory/script_spec.rb +32 -0
- data/spectory/selector_spec.rb +26 -0
- data/spectory/style_spec.rb +29 -0
- data/spectory/tag_spec.rb +71 -0
- data/spectory/v2/array_classes_spec.rb +12 -0
- data/spectory/v2/filters/markdown_spec.rb +21 -0
- data/spectory/v2/hash_attribute_spec.rb +20 -0
- data/spectory/v2/interpolation_spec.rb +11 -0
- data/spectory/v2/script_exception_spec.rb +8 -0
- data/spectory/v2/style_exception_spec.rb +8 -0
- data/spectory/well_formedness_spec.rb +15 -0
- data/spectory/whitespace_spec.rb +16 -0
- metadata +48 -30
- data/.autotest +0 -12
- data/.gitignore +0 -9
- data/.travis.yml +0 -9
@@ -0,0 +1,35 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "attributes" do
|
4
|
+
it "transforms Dang tag[attr=value] into HTML tag with an attribute and value" do
|
5
|
+
Dang.it("<time[datetime=1979-09-18] a while ago time>").must_equal "<time datetime='1979-09-18'>a while ago</time>"
|
6
|
+
end
|
7
|
+
|
8
|
+
it "transforms data attributes" do
|
9
|
+
Dang.it("<span[data-lon=-104.6982][data-lat=44.5889] Devil's Tower span>").must_equal "<span data-lon='-104.6982' data-lat='44.5889'>Devil's Tower</span>"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "transforms nested data attributes" do
|
13
|
+
Dang.it("<span[data[lon=-104.6982][lat=44.5889]] Devil's Tower span>").must_equal "<span data-lon='-104.6982' data-lat='44.5889'>Devil's Tower</span>"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "transforms boolean attributes" do
|
17
|
+
Dang.it("<option[selected] California option>").must_equal "<option selected>California</option>"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "transforms attributes with whitespace in attribute values" do
|
21
|
+
Dang.it("<a[href=/][title=Internet Homesite Webpage] Home a>").must_equal "<a href='/' title='Internet Homesite Webpage'>Home</a>"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "allows brackets in quoted values" do
|
25
|
+
Dang.it("<textarea[name='user[bio]'] super awesome dude, right? textarea>").must_equal "<textarea name='user[bio]'>super awesome dude, right?</textarea>"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "allows quoted attributes" do
|
29
|
+
Dang.it("<html[xmlns=http://www.w3.org/1999/xhtml]['xml:lang'=en][lang=en] ... html>").must_equal "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>...</html>"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "allows quoted attribute values" do
|
33
|
+
Dang.it("<html[xmlns='http://www.w3.org/1999/xhtml'][xml:lang='en'][lang='en'] ... html>").must_equal "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>...</html>"
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "comments" do
|
4
|
+
it "transforms Dang <! comment !> comments into html comments" do
|
5
|
+
Dang.it("<! comment !>").must_equal "<!-- comment -->"
|
6
|
+
end
|
7
|
+
|
8
|
+
it "transforms multiline Dang <! comment !> comments into multiline html comments" do
|
9
|
+
Dang.it("<!
|
10
|
+
comment
|
11
|
+
!>").must_equal "<!--
|
12
|
+
comment
|
13
|
+
-->"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "transforms trailing <! comments !> into html comments" do
|
17
|
+
Dang.it("<html markups html> <! html !>").must_equal "<html>markups</html> <!-- html -->"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "transforms <! comments! !> with !s in them into html comments" do
|
21
|
+
Dang.it("<b bold text b> <! b! !>").must_equal "<b>bold text</b> <!-- b! -->"
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
# from
|
4
|
+
# <! [if IE] !>
|
5
|
+
# <! [endif] !>
|
6
|
+
# to
|
7
|
+
# <!--[if IE]>
|
8
|
+
# <![endif]-->
|
9
|
+
|
10
|
+
describe "conditional comments" do
|
11
|
+
it "transforms Dang conditional comment start into HTML conditional comment start" do
|
12
|
+
Dang.it("<! [if lt IE 6] !>").must_equal "<!--[if lt IE 6]>"
|
13
|
+
Dang.it("<! [if lte IE 6] !>").must_equal "<!--[if lte IE 6]>"
|
14
|
+
Dang.it("<! [if gt IE 6] !>").must_equal "<!--[if gt IE 6]>"
|
15
|
+
Dang.it("<! [if gte IE 6] !>").must_equal "<!--[if gte IE 6]>"
|
16
|
+
Dang.it("<! [if IE] !>").must_equal "<!--[if IE]>"
|
17
|
+
Dang.it("<! [if IE] !>abc").must_equal "<!--[if IE]>abc"
|
18
|
+
Dang.it("<! [if IE] !>").must_equal "<!--[if IE]>"
|
19
|
+
Dang.it("<! [if !IE] !>").must_equal "<!--[if !IE]>"
|
20
|
+
Dang.it("<! [if !IE 6] !>").must_equal "<!--[if !IE 6]>"
|
21
|
+
Dang.it("<! [if !IE 5.5] !>").must_equal "<!--[if !IE 5.5]>"
|
22
|
+
Dang.it("<! [if IE 5] !>").must_equal "<!--[if IE 5]>"
|
23
|
+
Dang.it("<! [if IE 5.5] !>").must_equal "<!--[if IE 5.5]>"
|
24
|
+
Dang.it("<! [if IE 5.50] !>").must_equal "<!--[if IE 5.50]>"
|
25
|
+
Dang.it("<! [if IE 6] !>").must_equal "<!--[if IE 6]>"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "transforms Dang conditional comment closers" do
|
29
|
+
Dang.it("<! [endif] !>").must_equal "<![endif]-->"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "transforms Dang conditional comment closers with whitespace" do
|
33
|
+
Dang.it("<! [endif] !>").must_equal "<![endif]-->"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "transforms conditional comments with boolean operators" do
|
37
|
+
Dang.it("<! [if (gt IE 5)&(lt IE 7)] !>").must_equal "<!--[if (gt IE 5)&(lt IE 7)]>"
|
38
|
+
Dang.it("<! [if (IE 6)|(IE 7)] !>").must_equal "<!--[if (IE 6)|(IE 7)]>"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "transforms Dang conditional comment closers with leading content" do
|
42
|
+
Dang.it("xyz <! [endif] !>").must_equal "xyz <![endif]-->"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "transforms Dang conditional comment closers with directly leading content" do
|
46
|
+
Dang.it("xyz<! [endif] !>").must_equal "xyz<![endif]-->"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "transforms one line Dang conditional comments" do
|
50
|
+
Dang.it("<! [if IE] !>...<! [endif] !>").must_equal "<!--[if IE]>...<![endif]-->"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "allows the body to dangified" do
|
54
|
+
Dang.it("<! [if IE] !><h1 THIS IS IE h1><! [endif] !>").must_equal "<!--[if IE]><h1>THIS IS IE</h1><![endif]-->"
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "data attributes" do
|
4
|
+
it "transforms normal data attributes comments" do
|
5
|
+
Dang.it("<span[data-foo=party][data-bar=time] now span>").must_equal "<span data-foo='party' data-bar='time'>now</span>"
|
6
|
+
end
|
7
|
+
|
8
|
+
it "transforms nested data attributes comments" do
|
9
|
+
Dang.it("<span[data[foo=party][bar=time]] now span>").must_equal "<span data-foo='party' data-bar='time'>now</span>"
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "doctypes" do
|
4
|
+
# based largely on HAML's doctype with a minor variation
|
5
|
+
# http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#doctype_
|
6
|
+
|
7
|
+
it "transforms !!! into html doctype" do
|
8
|
+
Dang.it("!!!").must_equal "<!doctype html>"
|
9
|
+
Dang.it("!!! html5").must_equal "<!doctype html>"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "transforms HTML4 doctypes" do
|
13
|
+
Dang.it("!!! html4").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'
|
14
|
+
Dang.it("!!! html4 transitional").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'
|
15
|
+
Dang.it("!!! html4 strict").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'
|
16
|
+
Dang.it("!!! html4 frameset").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "transforms XHTML doctypes" do
|
20
|
+
Dang.it("!!! xhtml 1").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
|
21
|
+
Dang.it("!!! xhtml 1 transitional").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
|
22
|
+
Dang.it("!!! xhtml 1 strict").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
|
23
|
+
Dang.it("!!! xhtml 1 frameset").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'
|
24
|
+
Dang.it("!!! xhtml 1.1").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'
|
25
|
+
Dang.it("!!! xhtml 1.1 basic").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">'
|
26
|
+
Dang.it("!!! xhtml 1.2 mobile").must_equal '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">'
|
27
|
+
Dang.it("!!! xhtml rdfa").must_equal '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">'
|
28
|
+
Dang.it("!!! xhtml 5").must_equal '<!DOCTYPE html>'
|
29
|
+
end
|
30
|
+
|
31
|
+
it "transforms xml utf8 encoding" do
|
32
|
+
Dang.it("!!! xml iso-8859-1").must_equal "<?xml version='1.0' encoding='iso-8859-1' ?>"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "transforms doctype AND a tag" do
|
36
|
+
Dang.it("!!!\n<html yo html>").must_equal "<!doctype html>\n<html>yo</html>"
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "embedded ruby" do
|
4
|
+
it "farms out to Ruby for and does not return any output" do
|
5
|
+
Dang.it("<time <: Time.now :> time>").must_equal "<time></time>"
|
6
|
+
end
|
7
|
+
|
8
|
+
it "farms out to Ruby for and prints the returned output" do
|
9
|
+
t = Time.now
|
10
|
+
Dang.it("<time <| t |> time>", binding).must_equal "<time>#{t}</time>"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "handles both printing and non-printing ruby" do
|
14
|
+
dang = "<: 5.times do |i| :><| i |><: end :>"
|
15
|
+
html = "01234"
|
16
|
+
Dang.it(dang).must_equal html
|
17
|
+
end
|
18
|
+
|
19
|
+
it "transforms Dang, printing Ruby and non-printing Ruby" do
|
20
|
+
dang = "<ul <: 5.times do |i| :><li <| i |> li><: end :> ul>"
|
21
|
+
html = "<ul><li>0</li><li>1</li><li>2</li><li>3</li><li>4</li></ul>"
|
22
|
+
Dang.it(dang).must_equal html
|
23
|
+
end
|
24
|
+
|
25
|
+
it "handles dang inside a p" do
|
26
|
+
t = Time.now
|
27
|
+
|
28
|
+
dang = "<x The time is <| Time.now |> x>"
|
29
|
+
html = "<x>The time is #{t}</x>"
|
30
|
+
|
31
|
+
Dang.it(dang, binding).must_equal html
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spectory/helper"
|
2
|
+
|
3
|
+
describe "files" do
|
4
|
+
it "can transform a whole document" do
|
5
|
+
dang_path = File.expand_path("../files/iamshane-com.html.dang", __FILE__)
|
6
|
+
html_path = File.expand_path("../files/iamshane-com.html", __FILE__)
|
7
|
+
|
8
|
+
dang = File.open(dang_path, "rb").read
|
9
|
+
html = File.open(html_path, "rb").read
|
10
|
+
|
11
|
+
Dang.it(dang).must_equal html
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,229 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html dir='ltr' lang='en-US'><head>
|
3
|
+
<meta charset='UTF-8' />
|
4
|
+
<title>The Internet Home Site of Shane Becker</title>
|
5
|
+
<script src='/javascripts/html5shiv.js?1293826648'></script>
|
6
|
+
<script src='/javascripts/jquery.js?1293826648'></script>
|
7
|
+
<script src='/javascripts/paging_keys.js?1293826648'></script>
|
8
|
+
<link href='/stylesheets/reset.css?1293826648' media='screen' rel='stylesheet' />
|
9
|
+
<link href='/stylesheets/application.css?1293826648' media='screen' rel='stylesheet' />
|
10
|
+
<link href='/feed' rel='alternate' title='I Am Shane Becker' type='application/atom+xml' />
|
11
|
+
<link id='short_url' href='http://sbb.me' rel='shorturl' type='text/html' />
|
12
|
+
<meta name='csrf-param' content='authenticity_token' />
|
13
|
+
<meta name='csrf-token' content='wPLyoaxee/y1v+3RUGYzcZqH1fbU526Nf7qYYoJakaY=' />
|
14
|
+
|
15
|
+
<style>
|
16
|
+
body {
|
17
|
+
background: red;
|
18
|
+
}
|
19
|
+
|
20
|
+
p:after {
|
21
|
+
content: "style>";
|
22
|
+
}
|
23
|
+
</style>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body>
|
27
|
+
<header class='site'>
|
28
|
+
<h1>I Am Shane Becker</h1>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<h2 id='callout'><a href='/products/your-slides-suck'>NEW <strong>$15 Screencast</strong> Your Slides Suck</a></h2>
|
32
|
+
|
33
|
+
<ol class='hfeed'>
|
34
|
+
|
35
|
+
|
36
|
+
<li>thing one to show non/printing ruby</li>
|
37
|
+
|
38
|
+
<li>thing two to show non/printing ruby</li>
|
39
|
+
|
40
|
+
<li>dinosaur to show non/printing ruby</li>
|
41
|
+
|
42
|
+
|
43
|
+
<li>
|
44
|
+
<article class='status hentry' id='status_1191'>
|
45
|
+
<header>
|
46
|
+
<h1 class='entry-content entry-title'>
|
47
|
+
Growing is Forever :
|
48
|
+
<a class='link' rel='external' href='http://t.co/qc3LDIN'>http://t.co/qc3LDIN</a>
|
49
|
+
/cc
|
50
|
+
<a class='at_username' rel='external' href='http://twitter.com/tjnelsonjr'>@tjnelsonjr</a>
|
51
|
+
</h1>
|
52
|
+
</header>
|
53
|
+
|
54
|
+
<footer>
|
55
|
+
<h1 class='vcard'>
|
56
|
+
<a class='email' href='mailto:veganstraightedge@gmail.com'><span class='author fn'>Shane Becker</span></a>
|
57
|
+
<span class='verb'>published</span>
|
58
|
+
<span class='preposition'>this</span>
|
59
|
+
<span class='object-type'>status</span>
|
60
|
+
<span class='preposition'>on</span>
|
61
|
+
|
62
|
+
<time datetime='2011-02-06T06:02' pubdate><a class='bookmark' href='/statuses/2011/2/5/4' rel='bookmark'>February, 06, 2011
|
63
|
+
<span class='preposition'>at</span>
|
64
|
+
06:38:40
|
65
|
+
</a>
|
66
|
+
</time>
|
67
|
+
</h1> <!-- .vcard -->
|
68
|
+
|
69
|
+
<table class='urls'>
|
70
|
+
<tr>
|
71
|
+
<th><label class='short_url' for='short_url_status_1191'>Short URL</label></th>
|
72
|
+
<th><label class='long_url' for='long_url_status_1191'>Long URL</label></th>
|
73
|
+
</tr>
|
74
|
+
<tr>
|
75
|
+
<td><input class='short_url' id='short_url_status_1191' name='name_url' type='url' value='http://sbb.me/s4AA4' /></td>
|
76
|
+
<td><input class='long_url' id='long_url_status_1191' name='long_url' type='url' value='http://iamshane.com/statuses/2011/2/5/4' /></td>
|
77
|
+
</tr>
|
78
|
+
</table> <!-- .urls -->
|
79
|
+
|
80
|
+
<h3 class='redistribution'>
|
81
|
+
Also published at
|
82
|
+
<a href='http://twitter.com/veganstraightedge/statuses/34138891636178944' rel='me'>http://twitter.com/veganstraightedge/statuses/34138891636178944</a>
|
83
|
+
</h3> <!-- .redistribution -->
|
84
|
+
</footer> <!-- footer -->
|
85
|
+
</article> <!-- article -->
|
86
|
+
</li> <!-- li -->
|
87
|
+
|
88
|
+
<li>
|
89
|
+
<article class='status hentry' id='status_800'>
|
90
|
+
<header>
|
91
|
+
<h1 class='entry-content entry-title'>
|
92
|
+
<a class='at_username' rel='external' href='http://twitter.com/gilesgoatboy'>@gilesgoatboy</a>
|
93
|
+
Oh shit. You're right. It was the jigga man. My bad.
|
94
|
+
</h1>
|
95
|
+
</header>
|
96
|
+
|
97
|
+
<footer>
|
98
|
+
<h1 class='vcard'>
|
99
|
+
<a class='email' href='mailto:veganstraightedge@gmail.com'><span class='author fn'>Shane Becker</span></a>
|
100
|
+
<span class='verb'>published</span>
|
101
|
+
<span class='preposition'>this</span>
|
102
|
+
<span class='object-type'>status</span>
|
103
|
+
<span class='preposition'>on</span>
|
104
|
+
|
105
|
+
<time datetime='2011-02-06T04:02' pubdate><a class='bookmark' href='/statuses/2011/2/5/3' rel='bookmark'>February, 06, 2011
|
106
|
+
<span class='preposition'>at</span>
|
107
|
+
04:18:28
|
108
|
+
</a>
|
109
|
+
</time>
|
110
|
+
</h1> <!-- .vcard -->
|
111
|
+
|
112
|
+
<table class='urls'>
|
113
|
+
<tr>
|
114
|
+
<th><label class='short_url' for='short_url_status_800'>Short URL</label></th>
|
115
|
+
<th><label class='long_url' for='long_url_status_800'>Long URL</label></th>
|
116
|
+
</tr>
|
117
|
+
<tr>
|
118
|
+
<td><input class='short_url' id='short_url_status_800' name='name_url' type='url' value='"http://sbb.me/s4AA3' /></td>
|
119
|
+
<td><input class='long_url' id='long_url_status_800' name='long_url' type='url' value='"http://iamshane.com/statuses/2011/2/5/3' /></td>
|
120
|
+
</tr>
|
121
|
+
</table> <!-- .urls -->
|
122
|
+
|
123
|
+
<h3 class='redistribution'>
|
124
|
+
Also published at
|
125
|
+
<a href='http://twitter.com/veganstraightedge/statuses/34103607427076098' rel='me'>http://twitter.com/veganstraightedge/statuses/34103607427076098</a>
|
126
|
+
</h3> <!-- .redistribution -->
|
127
|
+
</footer> <!-- footer -->
|
128
|
+
</article> <!-- article -->
|
129
|
+
</li> <!-- li -->
|
130
|
+
|
131
|
+
</ol> <!-- ol.hfeed -->
|
132
|
+
|
133
|
+
<div class='pagination'>
|
134
|
+
<span class='disabled previous_page'>← Previous</span>
|
135
|
+
<em>1</em>
|
136
|
+
<a href='/page/2' rel='next'>2</a>
|
137
|
+
<a href='/page/3'>3</a>
|
138
|
+
<a href='/page/4'>4</a>
|
139
|
+
<a href='/page/5'>5</a>
|
140
|
+
<a href='/page/6'>6</a>
|
141
|
+
<a href='/page/7'>7</a>
|
142
|
+
<a href='/page/8'>8</a>
|
143
|
+
<a href='/page/9'>9</a>
|
144
|
+
<span class='gap'>…</span>
|
145
|
+
<a href='/page/415'>415</a>
|
146
|
+
<a href='/page/416'>416</a>
|
147
|
+
<a class='next_page' href='/page/2' rel='next'>Next →</a>
|
148
|
+
</div> <!-- .pagination -->
|
149
|
+
|
150
|
+
<footer class='site' id='bottom'>
|
151
|
+
<h1>A Bit More About Me… /h1>
|
152
|
+
<p>
|
153
|
+
My name is <span class='fn'><span class='given-name'>Shane</span> <span class='family-name'>Becker</span></span>.
|
154
|
+
I live in <span class='adr'><span class='locality'>Los Angeles</span>, <span class='region'>CA</span></span>.
|
155
|
+
I make websites for fun and for profit.
|
156
|
+
I’m still vegan, still straightedge. I’m an anarchist and an atheist.
|
157
|
+
My <a href='http://flickr.com/photos/veganstraightedge/tags/civ' rel='me'>dog</a> is
|
158
|
+
<a href='http://twitter.com/civthedog' rel='me'>Civ</a>.
|
159
|
+
</p>
|
160
|
+
|
161
|
+
<h2>
|
162
|
+
I’ve made some things (sometimes along side
|
163
|
+
<a href='http://eliduke.com' rel='friend'>Eli Duke</a> and
|
164
|
+
<a href='http://iambookis.com' rel='friend'>Bookis Smuin</a>).
|
165
|
+
</h2>
|
166
|
+
<ul>
|
167
|
+
<li><a href='http://zinedistro.org' rel='me'>Zine Distro</a></li>
|
168
|
+
<li><a href='http://listyourlist.com' rel='me'>ListYourList</a></li>
|
169
|
+
<li><a href='http://theresistancearmy.com' rel='me'>The Resistance Army</a></li>
|
170
|
+
<li><a href='http://foodsquatting.com' rel='me'>Food Squatting</a></li>
|
171
|
+
<li><a href='http://thegreatamericanaroadtrip.com' rel='me'>The Great Americana Road Trip</a></li>
|
172
|
+
<li><a href='http://iamshanebecker.com' rel='me'>My Resume</a></li>
|
173
|
+
</ul>
|
174
|
+
|
175
|
+
<h2>I have profiles on other websites.</h2>
|
176
|
+
<ul>
|
177
|
+
<li><a href='http://twitter.com/veganstraightedge' rel='me'>Twitter</a></li>
|
178
|
+
<li><a href='http://flickr.com/veganstraightedge' rel='me'>Flickr</a></li>
|
179
|
+
<li><a href='http://facebook.com/veganstraightedge' rel='me'>Facebook</a></li>
|
180
|
+
<li><a href='http://vimeo.com/veganstraightedg' rel='me'>Vimeo</a></li>
|
181
|
+
<li><a href='http://youtube.com/user/veganstraightedge' rel='me'>YouTube</a></li>
|
182
|
+
<li><a href='http://dribbble.com/players/veganstraightedge' rel='me'>Dribble</a></li>
|
183
|
+
<li><a href='http://foursquare.com/user/veganstraightedge' rel='me'>FourSquare</a></li>
|
184
|
+
<li><a href='http://gowalla.com/users/seanbonner' rel='me'>Gowalla</a></li>
|
185
|
+
<li><a href='http://last.fm/user/vegansxe' rel='me'>Last.FM</a></li>
|
186
|
+
<li><a href='http://listyourlist.com/veganstraightedge' rel='me'>ListYourList</a></li>
|
187
|
+
<li><a href='http://github.com/veganstraightedge' rel='me'>GitHub</a></li>
|
188
|
+
<li><a href='http://www.google.com/profiles/veganstraightedge' rel='me'>Google Profile</a></li>
|
189
|
+
<li><a href='http://del.icio.us/veganstraightedge' rel='me'>Delicious</a></li>
|
190
|
+
<li><a href='http://del.icio.us/shaners' rel='me'>Delicious</a></li>
|
191
|
+
<li><a href='http://pinboard.in/u:veganstraightedge' rel='me'>Pinboard</a></li>
|
192
|
+
</ul>
|
193
|
+
|
194
|
+
<p id='contact'>
|
195
|
+
You can contact me by email (<a class='email' href='mailto:veganstraightedge@gmail.com'>veganstraightedge@gmail.com</a>)
|
196
|
+
or by phone (<span class='tel'>801-898-9481</span>). Please, no spam.
|
197
|
+
You can <a href='http://h2vx.com/vcf/iamshane.com'>download my vCard</a> for your address book.
|
198
|
+
All content on this site (unless created by someone else) is licensed under
|
199
|
+
<a href='http://creativecommons.org/licenses/by/2.0/deed.en' rel='license'>Creative Commons Attribution License</a>
|
200
|
+
which means you can republish whatever you want as long as you attribute me and link back to the original page.
|
201
|
+
</p>
|
202
|
+
|
203
|
+
<p id='no_comments'>
|
204
|
+
A quick note about comments on posts. The short and long of it is, I’m over comments.
|
205
|
+
They’re a lot of work for very little benefit. In migrating my blog posts to this version of my site,
|
206
|
+
I threw out most of the comments which were total trash or meaningless drivel.
|
207
|
+
I’ve made a few exceptions where I felt like they added some value.
|
208
|
+
Comments are off and are staying off. If you’ve got something to say to me that’s private,
|
209
|
+
<a href='mailto:veganstraightedge@gmail.com'>email me</a>. If you want to say it in the public,</a>
|
210
|
+
<a href='http://twitter.com/home?status=@veganstraightedge%20-'>write it on Twitter</a>
|
211
|
+
or your own blog (they’re
|
212
|
+
<a href='http://wordpress.com'>free</a> and <a href='http://tumblr.com'>easy</a>).
|
213
|
+
</p>
|
214
|
+
</footer> <!-- footer -->
|
215
|
+
|
216
|
+
<script>
|
217
|
+
var _gaq = _gaq || [];
|
218
|
+
_gaq.push(['_setAccount', 'UA-193482-20']);
|
219
|
+
_gaq.push(['_trackPageview']);
|
220
|
+
|
221
|
+
(function() {
|
222
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
223
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
224
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
225
|
+
})();
|
226
|
+
</script>
|
227
|
+
|
228
|
+
</body> <!-- body -->
|
229
|
+
</html> <!-- html -->
|