jruby-lint 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/History.txt +5 -0
- data/LICENSE.txt +2253 -0
- data/README.md +12 -0
- data/jruby-lint.gemspec +1 -0
- data/lib/jruby/lint/checkers.rb +1 -0
- data/lib/jruby/lint/checkers/nonatomic.rb +39 -0
- data/lib/jruby/lint/version.rb +1 -1
- data/spec/fixtures/C-Extension-Alternatives.html +155 -497
- data/spec/jruby/lint/checkers_spec.rb +78 -0
- metadata +32 -24
data/README.md
CHANGED
@@ -66,3 +66,15 @@ Here is a list of checks and options we'd like to implement:
|
|
66
66
|
and/or test suite runs
|
67
67
|
|
68
68
|
[install]: http://jruby.org/getting-started
|
69
|
+
|
70
|
+
## License
|
71
|
+
|
72
|
+
JRuby-Lint is Copyright (c) 2007-2013 The JRuby project, and is released
|
73
|
+
under a tri EPL/GPL/LGPL license. You can use it, redistribute it
|
74
|
+
and/or modify it under the terms of the:
|
75
|
+
|
76
|
+
Eclipse Public License version 1.0
|
77
|
+
GNU General Public License version 2
|
78
|
+
GNU Lesser General Public License version 2.1
|
79
|
+
|
80
|
+
See the file `LICENSE.txt` in distribution for details.
|
data/jruby-lint.gemspec
CHANGED
@@ -8,6 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Nick Sieger"]
|
10
10
|
s.email = ["nick@nicksieger.com"]
|
11
|
+
s.licenses = ["EPL 1.0", "GPL 2", "LGPL 2.1"]
|
11
12
|
s.homepage = "https://github.com/jruby/jruby-lint"
|
12
13
|
s.summary = %q{See how ready your Ruby code is to run on JRuby.}
|
13
14
|
s.description = %q{This utility presents hints and suggestions to
|
data/lib/jruby/lint/checkers.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module JRuby::Lint
|
2
|
+
module Checkers
|
3
|
+
class NonAtomic
|
4
|
+
include Checker
|
5
|
+
|
6
|
+
def visitOpAsgnOrNode(node)
|
7
|
+
check_nonatomic(node, node.first_node)
|
8
|
+
end
|
9
|
+
|
10
|
+
def visitOpAsgnAndNode(node)
|
11
|
+
check_nonatomic(node, node.first_node)
|
12
|
+
end
|
13
|
+
|
14
|
+
def visitOpElementAsgnNode(node)
|
15
|
+
add_finding(collector, node)
|
16
|
+
end
|
17
|
+
|
18
|
+
def visitOpAsgnNode(node)
|
19
|
+
check_nonatomic(node, node.receiver_node)
|
20
|
+
end
|
21
|
+
|
22
|
+
def check_nonatomic(orig_node, risk_node)
|
23
|
+
case risk_node
|
24
|
+
when org::jruby::ast::LocalVarNode,
|
25
|
+
org::jruby::ast::DVarNode
|
26
|
+
# ok...mostly-safe cases
|
27
|
+
else
|
28
|
+
add_finding(collector, orig_node)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_finding(collector, node)
|
33
|
+
collector.findings << Finding.new("Non-local operator assignment is not guaranteed to be atomic",
|
34
|
+
[:nonatomic, :warning], node.position)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/lib/jruby/lint/version.rb
CHANGED
@@ -9,10 +9,11 @@
|
|
9
9
|
<title>C Extension Alternatives · jruby/jruby Wiki · GitHub</title>
|
10
10
|
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
|
11
11
|
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
|
12
|
-
<link rel="apple-touch-icon
|
13
|
-
<link rel="apple-touch-icon
|
14
|
-
<link rel="apple-touch-icon
|
15
|
-
<link rel="apple-touch-icon
|
12
|
+
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
|
13
|
+
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
|
14
|
+
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
|
15
|
+
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
|
16
|
+
<link rel="logo" type="image/svg" href="http://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
|
16
17
|
<meta name="msapplication-TileImage" content="/windows-tile.png">
|
17
18
|
<meta name="msapplication-TileColor" content="#ffffff">
|
18
19
|
|
@@ -21,64 +22,72 @@
|
|
21
22
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
22
23
|
|
23
24
|
<meta content="authenticity_token" name="csrf-param" />
|
24
|
-
<meta content="
|
25
|
+
<meta content="wGM78MzZjf2nWL4+igQC+rfoXXPgouU6BMay3lyDqj8=" name="csrf-token" />
|
25
26
|
|
26
|
-
<link href="https://a248.e.akamai.net/assets.github.com/assets/github-
|
27
|
-
<link href="https://a248.e.akamai.net/assets.github.com/assets/github2-
|
27
|
+
<link href="https://a248.e.akamai.net/assets.github.com/assets/github-d0506285c2d299ff2ea4f1be2c134472cdc318aa.css" media="screen" rel="stylesheet" type="text/css" />
|
28
|
+
<link href="https://a248.e.akamai.net/assets.github.com/assets/github2-41b4a8d5dfdbb37bbeaffda10e7e9ebe84b944dc.css" media="screen" rel="stylesheet" type="text/css" />
|
28
29
|
|
29
30
|
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
<script src="https://a248.e.akamai.net/assets.github.com/assets/frameworks-5d526182eb5719ec57fe668ec5ca700f54fce693.js" type="text/javascript"></script>
|
33
|
+
<script src="https://a248.e.akamai.net/assets.github.com/assets/github-5c9cb759a38e8fa524a7f5cb418b8d44b8172f00.js" type="text/javascript"></script>
|
34
|
+
|
34
35
|
|
35
|
-
|
36
|
+
<script src="https://a248.e.akamai.net/assets.github.com/assets/wiki-ae952a28c0cbce081de354bdd0c0a996dce84c3e.js" type="text/javascript"></script>
|
36
37
|
<meta property="og:title" content="jruby"/>
|
37
38
|
<meta property="og:type" content="githubog:gitrepository"/>
|
38
39
|
<meta property="og:url" content="https://github.com/jruby/jruby"/>
|
39
|
-
<meta property="og:image" content="https://a248.e.akamai.net/assets.github.com
|
40
|
+
<meta property="og:image" content="https://secure.gravatar.com/avatar/1041835545ba2997fad5ca683a91d58d?s=420&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
40
41
|
<meta property="og:site_name" content="GitHub"/>
|
41
42
|
<meta property="og:description" content="JRuby, an implementation of Ruby on the JVM. Contribute to jruby development by creating an account on GitHub."/>
|
43
|
+
<meta property="twitter:card" content="summary"/>
|
44
|
+
<meta property="twitter:site" content="@GitHub">
|
45
|
+
<meta property="twitter:title" content="jruby/jruby"/>
|
42
46
|
|
43
47
|
<meta name="description" content="JRuby, an implementation of Ruby on the JVM. Contribute to jruby development by creating an account on GitHub." />
|
48
|
+
|
44
49
|
<link href="https://github.com/jruby/jruby/commits/master.atom" rel="alternate" title="Recent Commits to jruby:master" type="application/atom+xml" />
|
45
50
|
|
46
51
|
</head>
|
47
52
|
|
48
53
|
|
49
|
-
<body class="logged_out vis-public env-production
|
54
|
+
<body class="logged_out vis-public env-production ">
|
50
55
|
<div id="wrapper">
|
51
56
|
|
52
|
-
|
53
|
-
|
57
|
+
|
54
58
|
|
55
|
-
|
59
|
+
|
56
60
|
|
57
|
-
|
58
|
-
<div class="container clearfix">
|
59
|
-
<a class="site-logo " href="https://github.com/">
|
60
|
-
<img alt="GitHub" class="github-logo-4x" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x.png?1337118066" />
|
61
|
-
<img alt="GitHub" class="github-logo-4x-hover" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x-hover.png?1337118066" />
|
62
|
-
</a>
|
63
|
-
|
64
|
-
|
65
|
-
<!--
|
66
|
-
make sure to use fully qualified URLs here since this nav
|
67
|
-
is used on error pages on other domains
|
68
|
-
-->
|
69
|
-
<ul class="top-nav logged_out">
|
70
|
-
<li class="pricing"><a href="https://github.com/plans">Signup and Pricing</a></li>
|
71
|
-
<li class="explore"><a href="https://github.com/explore">Explore GitHub</a></li>
|
72
|
-
<li class="features"><a href="https://github.com/features">Features</a></li>
|
73
|
-
<li class="blog"><a href="https://github.com/blog">Blog</a></li>
|
74
|
-
<li class="login"><a href="https://github.com/login?return_to=%2Fjruby%2Fjruby%2Fwiki%2FC-Extension-Alternatives">Sign in</a></li>
|
75
|
-
</ul>
|
61
|
+
|
76
62
|
|
63
|
+
|
77
64
|
|
78
65
|
|
79
|
-
|
66
|
+
<div class="header header-logged-out">
|
67
|
+
<div class="container clearfix">
|
68
|
+
|
69
|
+
<a class="header-logo-wordmark" href="https://github.com/">
|
70
|
+
<img alt="GitHub" class="github-logo-4x" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x.png?1340659561" />
|
71
|
+
<img alt="GitHub" class="github-logo-4x-hover" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x-hover.png?1340659561" />
|
72
|
+
</a>
|
73
|
+
|
74
|
+
|
75
|
+
<ul class="top-nav">
|
76
|
+
<li class="explore"><a href="https://github.com/explore">Explore GitHub</a></li>
|
77
|
+
<li class="search"><a href="https://github.com/search">Search</a></li>
|
78
|
+
<li class="features"><a href="https://github.com/features">Features</a></li>
|
79
|
+
<li class="blog"><a href="https://github.com/blog">Blog</a></li>
|
80
|
+
</ul>
|
81
|
+
|
82
|
+
|
83
|
+
<div class="header-actions">
|
84
|
+
<a class="button primary" href="https://github.com/signup">Sign up for free</a>
|
85
|
+
<a class="button" href="https://github.com/login?return_to=%2Fjruby%2Fjruby%2Fwiki%2FC-Extension-Alternatives">Sign in</a>
|
86
|
+
</div>
|
87
|
+
|
88
|
+
</div>
|
80
89
|
</div>
|
81
|
-
|
90
|
+
|
82
91
|
|
83
92
|
|
84
93
|
|
@@ -88,22 +97,37 @@
|
|
88
97
|
<div class="site hfeed" itemscope itemtype="http://schema.org/WebPage">
|
89
98
|
<div class="hentry">
|
90
99
|
|
91
|
-
<div class="pagehead repohead instapaper_ignore readability-menu">
|
100
|
+
<div class="pagehead repohead instapaper_ignore readability-menu ">
|
92
101
|
<div class="container">
|
93
102
|
<div class="title-actions-bar">
|
94
103
|
|
95
104
|
|
96
105
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
106
|
+
<ul class="pagehead-actions">
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
<li>
|
111
|
+
<a href="/login?return_to=%2Fjruby%2Fjruby"
|
112
|
+
class="minibutton js-toggler-target star-button entice tooltipped upwards"
|
113
|
+
title="You must be signed in to use this feature" rel="nofollow">
|
114
|
+
<span class="mini-icon mini-icon-star"></span>Star
|
115
|
+
</a>
|
116
|
+
<a class="social-count js-social-count" href="/jruby/jruby/stargazers">
|
117
|
+
1,284
|
118
|
+
</a>
|
119
|
+
</li>
|
120
|
+
<li>
|
121
|
+
<a href="/login?return_to=%2Fjruby%2Fjruby"
|
122
|
+
class="minibutton js-toggler-target fork-button entice tooltipped upwards"
|
123
|
+
title="You must be signed in to fork a repository" rel="nofollow">
|
124
|
+
<span class="mini-icon mini-icon-fork"></span>Fork
|
125
|
+
</a>
|
126
|
+
<a href="/jruby/jruby/network" class="social-count">
|
127
|
+
314
|
128
|
+
</a>
|
129
|
+
</li>
|
130
|
+
</ul>
|
107
131
|
|
108
132
|
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
|
109
133
|
<span class="repo-label"><span>public</span></span>
|
@@ -117,18 +141,17 @@
|
|
117
141
|
</div>
|
118
142
|
|
119
143
|
|
120
|
-
|
121
144
|
<ul class="tabs">
|
122
|
-
<li><a href="/jruby/jruby" highlight="
|
123
|
-
<li><a href="/jruby/jruby/network" highlight="repo_network">Network</a></li>
|
124
|
-
<li><a href="/jruby/jruby/pulls" highlight="repo_pulls">Pull Requests <span class='counter'>
|
145
|
+
<li><a href="/jruby/jruby" highlight="[:repo_source, :repo_downloads, :repo_commits, :repo_tags, :repo_branches]">Code</a></li>
|
146
|
+
<li><a href="/jruby/jruby/network" highlight="[:repo_network]">Network</a></li>
|
147
|
+
<li><a href="/jruby/jruby/pulls" highlight="[:repo_pulls]">Pull Requests <span class='counter'>14</span></a></li>
|
125
148
|
|
126
|
-
<li><a href="/jruby/jruby/issues" highlight="repo_issues">Issues <span class='counter'>
|
149
|
+
<li><a href="/jruby/jruby/issues" highlight="[:repo_issues]">Issues <span class='counter'>126</span></a></li>
|
127
150
|
|
128
|
-
<li><a href="/jruby/jruby/wiki" class="selected" highlight="repo_wiki">Wiki</a></li>
|
151
|
+
<li><a href="/jruby/jruby/wiki" class="selected" highlight="[:repo_wiki]">Wiki</a></li>
|
129
152
|
|
130
153
|
|
131
|
-
<li><a href="/jruby/jruby/graphs" highlight="
|
154
|
+
<li><a href="/jruby/jruby/graphs" highlight="[:repo_graphs, :repo_contributors]">Graphs</a></li>
|
132
155
|
|
133
156
|
|
134
157
|
</ul>
|
@@ -153,33 +176,36 @@
|
|
153
176
|
<div id="js-repo-pjax-container" class="container context-loader-container" data-pjax-container>
|
154
177
|
|
155
178
|
|
179
|
+
|
156
180
|
<div id="wiki-wrapper" class="page">
|
157
181
|
<div id="head">
|
158
|
-
<h1 class="instapaper_title">C Extension Alternatives</h1>
|
159
182
|
<ul class="wiki-actions readability-extra">
|
160
183
|
<li class="gollum-minibutton"><a href="/jruby/jruby/wiki/C-Extension-Alternatives/_history"
|
161
184
|
class="minibutton bigger action-page-history">
|
162
185
|
Page History
|
163
186
|
</a></li>
|
164
187
|
</ul>
|
188
|
+
<h1 class="instapaper_title">C Extension Alternatives</h1>
|
165
189
|
</div>
|
166
190
|
<div id="wiki-content">
|
167
191
|
<div class="wrap">
|
168
192
|
<div id="wiki-body" class="gollum-markdown-content instapaper_body">
|
169
193
|
<div class="markdown-body">
|
170
|
-
<p>JRuby versions prior to 1.6 did not support Ruby C extensions, and even in 1.6 the support is still "in development" and considered experimental.
|
194
|
+
<p>JRuby versions prior to 1.6 did not support Ruby C extensions, and even in 1.6 the support is still "in development" and considered experimental. As of 1.7, it has been disabled and will likely <a href="https://twitter.com/headius/statuses/281091403919003649">be removed</a>.</p>
|
195
|
+
|
196
|
+
<p>This page lists common C extensions and non-C alternatives you can use to replace them.</p>
|
171
197
|
|
172
198
|
<ul>
|
173
|
-
<li><p><strong><a href="https://github.com/rtomayko/rdiscount">RDiscount</a></strong> - Use <a href="http://kramdown.rubyforge.org">kramdown</a>, <a href="https://github.com/
|
199
|
+
<li><p><strong><a href="https://github.com/rtomayko/rdiscount">RDiscount</a></strong> - Use <a href="http://kramdown.rubyforge.org">kramdown</a>, <a href="https://github.com/bhollis/maruku">Maruku</a> (pure Ruby) or <a href="https://github.com/nate/markdown_j">markdown_j</a> (wrapper around a Java library)</p></li>
|
174
200
|
<li><p><strong><a href="https://github.com/rmagick/rmagick">RMagick</a></strong> - Try <a href="https://github.com/Serabe/RMagick4J">RMagick4J</a> (implements ImageMagick functionality in Java) or preferably use alternatives <a href="https://github.com/probablycorey/mini_magick">mini_magick</a> & <a href="https://github.com/aseldawy/quick_magick">quick_magick</a>. For simple resizing, cropping, greyscaling, etc look at <a href="https://github.com/jruby/image_voodoo">image_voodoo</a>.</p></li>
|
175
201
|
<li><p><strong><a href="http://unicorn.bogomips.org/">Unicorn</a></strong> - Try any one of the following <a class="internal present" href="/jruby/jruby/wiki/Servers">JRuby-based servers</a>: <a href="https://github.com/trinidad/trinidad">Trinidad</a>, <a href="https://github.com/matadon/mizuno">Mizuno</a>, <a href="https://github.com/strobecorp/kirk">Kirk</a>, <a href="http://mobile.www.monde.org/?L=0">mobile</a> or <a href="http://puma.io/">Puma</a>.</p></li>
|
176
202
|
<li><p><strong><a href="http://code.macournoyer.com/thin/">Thin</a></strong> - Thin might compile and run but is not recommended. Try any one of the following <a class="internal present" href="/jruby/jruby/wiki/Servers">JRuby-based servers</a>: <a href="https://github.com/trinidad/trinidad">Trinidad</a>, <a href="https://github.com/matadon/mizuno">Mizuno</a>, <a href="https://github.com/strobecorp/kirk">Kirk</a>, <a href="http://torquebox.org/">TorqueBox</a> or <a href="http://puma.io/">Puma</a>.</p></li>
|
177
203
|
<li><p><strong><a href="https://github.com/dbalatero/typhoeus">Typhoeus</a></strong> - The C extension <a href="https://github.com/dbalatero/typhoeus/issues/65">doesn't currently compile</a>. There's no equivalent library for JRuby, but you might try any of the pure-Ruby HTTP clients (<code>net/http</code>, httpclient, etc.). There are also several Java HTTP client libraries that will work (<a href="http://hc.apache.org/httpcomponents-client-ga/">Apache HttpClient</a>, <a href="http://download.oracle.com/javase/1,5.0/docs/api/java/net/HttpURLConnection.html">HttpURLConnection</a>, etc).</p></li>
|
178
|
-
<li><p><strong>mysql</strong> - Use <a href="https://github.com/
|
179
|
-
<li><p><strong>mysql2</strong> - Use <a href="https://github.com/
|
180
|
-
<li><p><strong>sqlite3</strong> - Use <a href="https://github.com/
|
204
|
+
<li><p><strong>mysql</strong> - Use <a href="https://github.com/jruby/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-mysql</code>.</p></li>
|
205
|
+
<li><p><strong>mysql2</strong> - Use <a href="https://github.com/jruby/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-mysql</code>.</p></li>
|
206
|
+
<li><p><strong>sqlite3</strong> - Use <a href="https://github.com/jruby/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-sqlite3</code>.</p></li>
|
181
207
|
<li><p><strong><a href="http://nokogiri.org/">Nokogiri</a></strong> - For best results, use the pure-Java version of Nokogiri (default after v1.5).</p></li>
|
182
|
-
<li><p><strong><a href="https://github.com/brianmario/yajl-ruby">yajl-ruby</a></strong> - Try <code>json</code> or <code>
|
208
|
+
<li><p><strong><a href="https://github.com/brianmario/yajl-ruby">yajl-ruby</a></strong> - Try <code>json</code>, <code>json_pure</code>, or <code>oj</code> instead. Unfortunately there is no known equivalent JSON stream parser.</p></li>
|
183
209
|
<li><p><strong><a href="https://github.com/mongodb/mongo-ruby-driver">bson_ext</a></strong> - <code>bson_ext</code> isn't used with JRuby. Instead, some native Java extensions are bundled with the <code>bson</code> gem.</p></li>
|
184
210
|
<li><p><strong><a href="http://www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html">win32ole</a></strong> - Use the <code>jruby-win32ole</code> gem (preinstalled in JRuby's Windows installer).</p></li>
|
185
211
|
<li><p><strong><a href="http://curb.rubyforge.org/">curb</a></strong> - <a href="https://github.com/rcyrus/Rurl">Rurl</a> is an example how to implement <em>some</em> of curb's functionality using <a href="http://hc.apache.org/httpcomponents-client-ga/">Apache HttpClient</a></p></li>
|
@@ -196,7 +222,7 @@
|
|
196
222
|
</div>
|
197
223
|
<div id="gollum-footer">
|
198
224
|
<p id="last-edit">
|
199
|
-
Last edited by
|
225
|
+
Last edited by chetan, <time class="js-relative-date" datetime="2012-12-18T11:37:06-08:00" title="2012-12-18 11:37:06">December 18, 2012</time>
|
200
226
|
</p>
|
201
227
|
</div>
|
202
228
|
</div>
|
@@ -211,470 +237,102 @@
|
|
211
237
|
</div><!-- end of wrapper - hack for sticky footer -->
|
212
238
|
|
213
239
|
<!-- footer -->
|
214
|
-
<div id="footer"
|
215
|
-
|
216
|
-
<div class="upper_footer">
|
217
|
-
<div class="container clearfix">
|
218
|
-
|
219
|
-
<h4 id="blacktocat">GitHub Links</h4>
|
220
|
-
|
221
|
-
<ul class="footer_nav">
|
222
|
-
<h4>GitHub</h4>
|
223
|
-
<li><a href="https://github.com/about">About</a></li>
|
224
|
-
<li><a href="https://github.com/blog">Blog</a></li>
|
225
|
-
<li><a href="https://github.com/features">Features</a></li>
|
226
|
-
<li><a href="https://github.com/contact">Contact & Support</a></li>
|
227
|
-
<li><a href="http://training.github.com/">Training</a></li>
|
228
|
-
<li><a href="http://enterprise.github.com/">GitHub Enterprise</a></li>
|
229
|
-
<li><a href="http://status.github.com/">Site Status</a></li>
|
230
|
-
</ul>
|
231
|
-
|
232
|
-
<ul class="footer_nav">
|
233
|
-
<h4>Clients</h4>
|
234
|
-
<li><a href="http://mac.github.com/">GitHub for Mac</a></li>
|
235
|
-
<li><a href="http://windows.github.com/">GitHub for Windows</a></li>
|
236
|
-
<li><a href="http://eclipse.github.com/">GitHub for Eclipse</a></li>
|
237
|
-
<li><a href="http://mobile.github.com/">GitHub Mobile Apps</a></li>
|
238
|
-
</ul>
|
239
|
-
|
240
|
-
<ul class="footer_nav">
|
241
|
-
<h4>Tools</h4>
|
242
|
-
<li><a href="http://get.gaug.es/">Gauges: Web analytics</a></li>
|
243
|
-
<li><a href="http://speakerdeck.com">Speaker Deck: Presentations</a></li>
|
244
|
-
<li><a href="https://gist.github.com">Gist: Code snippets</a></li>
|
245
|
-
|
246
|
-
<h4 class="second">Extras</h4>
|
247
|
-
<li><a href="http://jobs.github.com/">Job Board</a></li>
|
248
|
-
<li><a href="http://shop.github.com/">GitHub Shop</a></li>
|
249
|
-
<li><a href="http://octodex.github.com/">The Octodex</a></li>
|
250
|
-
</ul>
|
251
|
-
|
252
|
-
<ul class="footer_nav">
|
253
|
-
<h4>Documentation</h4>
|
254
|
-
<li><a href="http://help.github.com/">GitHub Help</a></li>
|
255
|
-
<li><a href="http://developer.github.com/">Developer API</a></li>
|
256
|
-
<li><a href="http://github.github.com/github-flavored-markdown/">GitHub Flavored Markdown</a></li>
|
257
|
-
<li><a href="http://pages.github.com/">GitHub Pages</a></li>
|
258
|
-
</ul>
|
259
|
-
|
260
|
-
</div><!-- /.site -->
|
261
|
-
</div><!-- /.upper_footer -->
|
262
|
-
|
263
|
-
<div class="lower_footer">
|
240
|
+
<div id="footer">
|
264
241
|
<div class="container clearfix">
|
265
|
-
<div id="legal">
|
266
|
-
<ul>
|
267
|
-
<li><a href="https://github.com/site/terms">Terms of Service</a></li>
|
268
|
-
<li><a href="https://github.com/site/privacy">Privacy</a></li>
|
269
|
-
<li><a href="https://github.com/security">Security</a></li>
|
270
|
-
</ul>
|
271
|
-
|
272
|
-
<p>© 2012 <span title="0.09641s from fe13.rs.github.com">GitHub</span> Inc. All rights reserved.</p>
|
273
|
-
</div><!-- /#legal or /#legal_ie-->
|
274
|
-
|
275
|
-
</div><!-- /.site -->
|
276
|
-
</div><!-- /.lower_footer -->
|
277
|
-
|
278
|
-
|
279
|
-
</div><!-- /#footer -->
|
280
|
-
|
281
|
-
|
282
242
|
|
283
|
-
<
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
<dt>s</dt>
|
291
|
-
<dd>Focus command bar</dd>
|
292
|
-
</dl>
|
293
|
-
<dl class="keyboard-mappings">
|
294
|
-
<dt>?</dt>
|
295
|
-
<dd>Bring up this help dialog</dd>
|
243
|
+
<dl class="footer_nav">
|
244
|
+
<dt>GitHub</dt>
|
245
|
+
<dd><a href="https://github.com/about">About us</a></dd>
|
246
|
+
<dd><a href="https://github.com/blog">Blog</a></dd>
|
247
|
+
<dd><a href="https://github.com/contact">Contact & support</a></dd>
|
248
|
+
<dd><a href="http://enterprise.github.com/">GitHub Enterprise</a></dd>
|
249
|
+
<dd><a href="http://status.github.com/">Site status</a></dd>
|
296
250
|
</dl>
|
297
|
-
</div><!-- /.column.first -->
|
298
251
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
<
|
303
|
-
<dd>
|
304
|
-
|
305
|
-
<dl class="keyboard-mappings">
|
306
|
-
<dt>k</dt>
|
307
|
-
<dd>Move selection up</dd>
|
308
|
-
</dl>
|
309
|
-
<dl class="keyboard-mappings">
|
310
|
-
<dt>c <em>or</em> o <em>or</em> enter</dt>
|
311
|
-
<dd>Open commit</dd>
|
312
|
-
</dl>
|
313
|
-
<dl class="keyboard-mappings">
|
314
|
-
<dt>y</dt>
|
315
|
-
<dd>Expand URL to its canonical form</dd>
|
252
|
+
<dl class="footer_nav">
|
253
|
+
<dt>Applications</dt>
|
254
|
+
<dd><a href="http://mac.github.com/">GitHub for Mac</a></dd>
|
255
|
+
<dd><a href="http://windows.github.com/">GitHub for Windows</a></dd>
|
256
|
+
<dd><a href="http://eclipse.github.com/">GitHub for Eclipse</a></dd>
|
257
|
+
<dd><a href="http://mobile.github.com/">GitHub mobile apps</a></dd>
|
316
258
|
</dl>
|
317
|
-
</div><!-- /.column.first -->
|
318
259
|
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
<
|
323
|
-
<dd>
|
260
|
+
<dl class="footer_nav">
|
261
|
+
<dt>Services</dt>
|
262
|
+
<dd><a href="http://get.gaug.es/">Gauges: Web analytics</a></dd>
|
263
|
+
<dd><a href="http://speakerdeck.com">Speaker Deck: Presentations</a></dd>
|
264
|
+
<dd><a href="https://gist.github.com">Gist: Code snippets</a></dd>
|
265
|
+
<dd><a href="http://jobs.github.com/">Job board</a></dd>
|
324
266
|
</dl>
|
325
|
-
|
326
|
-
|
327
|
-
<
|
328
|
-
|
329
|
-
|
330
|
-
<
|
331
|
-
<dd>
|
332
|
-
</dl>
|
333
|
-
<dl class="keyboard-mappings">
|
334
|
-
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
335
|
-
<dd>Submit comment</dd>
|
267
|
+
|
268
|
+
<dl class="footer_nav">
|
269
|
+
<dt>Documentation</dt>
|
270
|
+
<dd><a href="http://help.github.com/">GitHub Help</a></dd>
|
271
|
+
<dd><a href="http://developer.github.com/">Developer API</a></dd>
|
272
|
+
<dd><a href="http://github.github.com/github-flavored-markdown/">GitHub Flavored Markdown</a></dd>
|
273
|
+
<dd><a href="http://pages.github.com/">GitHub Pages</a></dd>
|
336
274
|
</dl>
|
337
|
-
|
338
|
-
|
339
|
-
<
|
275
|
+
|
276
|
+
<dl class="footer_nav">
|
277
|
+
<dt>More</dt>
|
278
|
+
<dd><a href="http://training.github.com/">Training</a></dd>
|
279
|
+
<dd><a href="https://github.com/edu">Students & teachers</a></dd>
|
280
|
+
<dd><a href="http://shop.github.com">The Shop</a></dd>
|
281
|
+
<dd><a href="/plans">Plans & pricing</a></dd>
|
282
|
+
<dd><a href="http://octodex.github.com/">The Octodex</a></dd>
|
340
283
|
</dl>
|
341
|
-
</div><!-- /.columns.last -->
|
342
|
-
|
343
|
-
</div><!-- /.columns.equacols -->
|
344
|
-
|
345
|
-
<div class="js-hidden-pane" style='display:none'>
|
346
|
-
<div class="rule"></div>
|
347
|
-
|
348
|
-
<h3>Issues</h3>
|
349
|
-
|
350
|
-
<div class="columns threecols">
|
351
|
-
<div class="column first">
|
352
|
-
<dl class="keyboard-mappings">
|
353
|
-
<dt>j</dt>
|
354
|
-
<dd>Move selection down</dd>
|
355
|
-
</dl>
|
356
|
-
<dl class="keyboard-mappings">
|
357
|
-
<dt>k</dt>
|
358
|
-
<dd>Move selection up</dd>
|
359
|
-
</dl>
|
360
|
-
<dl class="keyboard-mappings">
|
361
|
-
<dt>x</dt>
|
362
|
-
<dd>Toggle selection</dd>
|
363
|
-
</dl>
|
364
|
-
<dl class="keyboard-mappings">
|
365
|
-
<dt>o <em>or</em> enter</dt>
|
366
|
-
<dd>Open issue</dd>
|
367
|
-
</dl>
|
368
|
-
<dl class="keyboard-mappings">
|
369
|
-
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
370
|
-
<dd>Submit comment</dd>
|
371
|
-
</dl>
|
372
|
-
<dl class="keyboard-mappings">
|
373
|
-
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> shift p</dt>
|
374
|
-
<dd>Preview comment</dd>
|
375
|
-
</dl>
|
376
|
-
</div><!-- /.column.first -->
|
377
|
-
<div class="column last">
|
378
|
-
<dl class="keyboard-mappings">
|
379
|
-
<dt>c</dt>
|
380
|
-
<dd>Create issue</dd>
|
381
|
-
</dl>
|
382
|
-
<dl class="keyboard-mappings">
|
383
|
-
<dt>l</dt>
|
384
|
-
<dd>Create label</dd>
|
385
|
-
</dl>
|
386
|
-
<dl class="keyboard-mappings">
|
387
|
-
<dt>i</dt>
|
388
|
-
<dd>Back to inbox</dd>
|
389
|
-
</dl>
|
390
|
-
<dl class="keyboard-mappings">
|
391
|
-
<dt>u</dt>
|
392
|
-
<dd>Back to issues</dd>
|
393
|
-
</dl>
|
394
|
-
<dl class="keyboard-mappings">
|
395
|
-
<dt>/</dt>
|
396
|
-
<dd>Focus issues search</dd>
|
397
|
-
</dl>
|
398
|
-
</div>
|
399
|
-
</div>
|
400
|
-
</div>
|
401
284
|
|
402
|
-
|
403
|
-
<div class="rule"></div>
|
404
|
-
|
405
|
-
<h3>Issues Dashboard</h3>
|
406
|
-
|
407
|
-
<div class="columns threecols">
|
408
|
-
<div class="column first">
|
409
|
-
<dl class="keyboard-mappings">
|
410
|
-
<dt>j</dt>
|
411
|
-
<dd>Move selection down</dd>
|
412
|
-
</dl>
|
413
|
-
<dl class="keyboard-mappings">
|
414
|
-
<dt>k</dt>
|
415
|
-
<dd>Move selection up</dd>
|
416
|
-
</dl>
|
417
|
-
<dl class="keyboard-mappings">
|
418
|
-
<dt>o <em>or</em> enter</dt>
|
419
|
-
<dd>Open issue</dd>
|
420
|
-
</dl>
|
421
|
-
</div><!-- /.column.first -->
|
422
|
-
</div>
|
423
|
-
</div>
|
285
|
+
<hr class="footer-divider">
|
424
286
|
|
425
|
-
<div class="js-hidden-pane" style='display:none'>
|
426
|
-
<div class="rule"></div>
|
427
|
-
|
428
|
-
<h3>Network Graph</h3>
|
429
|
-
<div class="columns equacols">
|
430
|
-
<div class="column first">
|
431
|
-
<dl class="keyboard-mappings">
|
432
|
-
<dt><span class="badmono">←</span> <em>or</em> h</dt>
|
433
|
-
<dd>Scroll left</dd>
|
434
|
-
</dl>
|
435
|
-
<dl class="keyboard-mappings">
|
436
|
-
<dt><span class="badmono">→</span> <em>or</em> l</dt>
|
437
|
-
<dd>Scroll right</dd>
|
438
|
-
</dl>
|
439
|
-
<dl class="keyboard-mappings">
|
440
|
-
<dt><span class="badmono">↑</span> <em>or</em> k</dt>
|
441
|
-
<dd>Scroll up</dd>
|
442
|
-
</dl>
|
443
|
-
<dl class="keyboard-mappings">
|
444
|
-
<dt><span class="badmono">↓</span> <em>or</em> j</dt>
|
445
|
-
<dd>Scroll down</dd>
|
446
|
-
</dl>
|
447
|
-
<dl class="keyboard-mappings">
|
448
|
-
<dt>t</dt>
|
449
|
-
<dd>Toggle visibility of head labels</dd>
|
450
|
-
</dl>
|
451
|
-
</div><!-- /.column.first -->
|
452
|
-
<div class="column last">
|
453
|
-
<dl class="keyboard-mappings">
|
454
|
-
<dt>shift <span class="badmono">←</span> <em>or</em> shift h</dt>
|
455
|
-
<dd>Scroll all the way left</dd>
|
456
|
-
</dl>
|
457
|
-
<dl class="keyboard-mappings">
|
458
|
-
<dt>shift <span class="badmono">→</span> <em>or</em> shift l</dt>
|
459
|
-
<dd>Scroll all the way right</dd>
|
460
|
-
</dl>
|
461
|
-
<dl class="keyboard-mappings">
|
462
|
-
<dt>shift <span class="badmono">↑</span> <em>or</em> shift k</dt>
|
463
|
-
<dd>Scroll all the way up</dd>
|
464
|
-
</dl>
|
465
|
-
<dl class="keyboard-mappings">
|
466
|
-
<dt>shift <span class="badmono">↓</span> <em>or</em> shift j</dt>
|
467
|
-
<dd>Scroll all the way down</dd>
|
468
|
-
</dl>
|
469
|
-
</div><!-- /.column.last -->
|
470
|
-
</div>
|
471
|
-
</div>
|
472
287
|
|
473
|
-
|
474
|
-
<
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
<
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
<dl class="keyboard-mappings">
|
483
|
-
<dt>l</dt>
|
484
|
-
<dd>Jump to line</dd>
|
485
|
-
</dl>
|
486
|
-
<dl class="keyboard-mappings">
|
487
|
-
<dt>w</dt>
|
488
|
-
<dd>Switch branch/tag</dd>
|
489
|
-
</dl>
|
490
|
-
<dl class="keyboard-mappings">
|
491
|
-
<dt>y</dt>
|
492
|
-
<dd>Expand URL to its canonical form</dd>
|
493
|
-
</dl>
|
494
|
-
</div>
|
495
|
-
</div>
|
496
|
-
</div>
|
288
|
+
<p class="right">© 2013 <span title="0.08273s from fe18.rs.github.com">GitHub</span>, Inc. All rights reserved.</p>
|
289
|
+
<a class="left" href="https://github.com/">
|
290
|
+
<span class="mega-icon mega-icon-invertocat"></span>
|
291
|
+
</a>
|
292
|
+
<ul id="legal">
|
293
|
+
<li><a href="https://github.com/site/terms">Terms of Service</a></li>
|
294
|
+
<li><a href="https://github.com/site/privacy">Privacy</a></li>
|
295
|
+
<li><a href="https://github.com/security">Security</a></li>
|
296
|
+
</ul>
|
497
297
|
|
498
|
-
|
499
|
-
<div class="rule"></div>
|
500
|
-
<div class="columns threecols">
|
501
|
-
<div class="column first">
|
502
|
-
<h3>Browsing Commits</h3>
|
503
|
-
<dl class="keyboard-mappings">
|
504
|
-
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
505
|
-
<dd>Submit comment</dd>
|
506
|
-
</dl>
|
507
|
-
<dl class="keyboard-mappings">
|
508
|
-
<dt>escape</dt>
|
509
|
-
<dd>Close form</dd>
|
510
|
-
</dl>
|
511
|
-
<dl class="keyboard-mappings">
|
512
|
-
<dt>p</dt>
|
513
|
-
<dd>Parent commit</dd>
|
514
|
-
</dl>
|
515
|
-
<dl class="keyboard-mappings">
|
516
|
-
<dt>o</dt>
|
517
|
-
<dd>Other parent commit</dd>
|
518
|
-
</dl>
|
519
|
-
</div>
|
520
|
-
</div>
|
521
|
-
</div>
|
298
|
+
</div><!-- /.container -->
|
522
299
|
|
523
|
-
|
524
|
-
<div class="rule"></div>
|
525
|
-
<h3>Notifications</h3>
|
526
|
-
|
527
|
-
<div class="columns threecols">
|
528
|
-
<div class="column first">
|
529
|
-
<dl class="keyboard-mappings">
|
530
|
-
<dt>j</dt>
|
531
|
-
<dd>Move selection down</dd>
|
532
|
-
</dl>
|
533
|
-
<dl class="keyboard-mappings">
|
534
|
-
<dt>k</dt>
|
535
|
-
<dd>Move selection up</dd>
|
536
|
-
</dl>
|
537
|
-
<dl class="keyboard-mappings">
|
538
|
-
<dt>o <em>or</em> enter</dt>
|
539
|
-
<dd>Open notification</dd>
|
540
|
-
</dl>
|
541
|
-
</div><!-- /.column.first -->
|
542
|
-
|
543
|
-
<div class="column second">
|
544
|
-
<dl class="keyboard-mappings">
|
545
|
-
<dt>e <em>or</em> shift i <em>or</em> y</dt>
|
546
|
-
<dd>Mark as read</dd>
|
547
|
-
</dl>
|
548
|
-
<dl class="keyboard-mappings">
|
549
|
-
<dt>shift m</dt>
|
550
|
-
<dd>Mute thread</dd>
|
551
|
-
</dl>
|
552
|
-
</div><!-- /.column.first -->
|
553
|
-
</div>
|
554
|
-
</div>
|
300
|
+
</div><!-- /.#footer -->
|
555
301
|
|
556
|
-
</div>
|
557
302
|
|
558
|
-
<div
|
559
|
-
<
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
<pre>
|
568
|
-
# This is an <h1> tag
|
569
|
-
## This is an <h2> tag
|
570
|
-
###### This is an <h6> tag</pre>
|
571
|
-
<p>Text styles</p>
|
572
|
-
<pre>
|
573
|
-
*This text will be italic*
|
574
|
-
_This will also be italic_
|
575
|
-
**This text will be bold**
|
576
|
-
__This will also be bold__
|
577
|
-
|
578
|
-
*You **can** combine them*
|
579
|
-
</pre>
|
580
|
-
</div>
|
581
|
-
<div class="col">
|
582
|
-
<h3>Lists</h3>
|
583
|
-
<p>Unordered</p>
|
584
|
-
<pre>
|
585
|
-
* Item 1
|
586
|
-
* Item 2
|
587
|
-
* Item 2a
|
588
|
-
* Item 2b</pre>
|
589
|
-
<p>Ordered</p>
|
590
|
-
<pre>
|
591
|
-
1. Item 1
|
592
|
-
2. Item 2
|
593
|
-
3. Item 3
|
594
|
-
* Item 3a
|
595
|
-
* Item 3b</pre>
|
596
|
-
</div>
|
597
|
-
<div class="col">
|
598
|
-
<h3>Miscellaneous</h3>
|
599
|
-
<p>Images</p>
|
600
|
-
<pre>
|
601
|
-
![GitHub Logo](/images/logo.png)
|
602
|
-
Format: ![Alt Text](url)
|
603
|
-
</pre>
|
604
|
-
<p>Links</p>
|
605
|
-
<pre>
|
606
|
-
http://github.com - automatic!
|
607
|
-
[GitHub](http://github.com)</pre>
|
608
|
-
<p>Blockquotes</p>
|
609
|
-
<pre>
|
610
|
-
As Kanye West said:
|
611
|
-
|
612
|
-
> We're living the future so
|
613
|
-
> the present is our past.
|
614
|
-
</pre>
|
303
|
+
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
|
304
|
+
<div class="fullscreen-container js-fullscreen-container">
|
305
|
+
<div class="textarea-wrap">
|
306
|
+
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
|
307
|
+
<div class="suggester-container">
|
308
|
+
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
|
309
|
+
data-url="/jruby/jruby/suggestions/commit">
|
310
|
+
</div>
|
311
|
+
</div>
|
615
312
|
</div>
|
616
313
|
</div>
|
617
|
-
<div class="
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
if(arg) {
|
626
|
-
$.facebox({div:'#foo'})
|
627
|
-
}
|
628
|
-
}
|
629
|
-
```</pre>
|
630
|
-
</div>
|
631
|
-
<div class="col">
|
632
|
-
<p>Or, indent your code 4 spaces</p>
|
633
|
-
<pre>
|
634
|
-
Here is a Python code example
|
635
|
-
without syntax highlighting:
|
636
|
-
|
637
|
-
def foo:
|
638
|
-
if not bar:
|
639
|
-
return true</pre>
|
640
|
-
</div>
|
641
|
-
<div class="col">
|
642
|
-
<p>Inline code for comments</p>
|
643
|
-
<pre>
|
644
|
-
I think you should use an
|
645
|
-
`<addr>` element here instead.</pre>
|
646
|
-
</div>
|
647
|
-
</div>
|
648
|
-
|
314
|
+
<div class="fullscreen-sidebar">
|
315
|
+
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
|
316
|
+
<span class="mega-icon mega-icon-normalscreen"></span>
|
317
|
+
</a>
|
318
|
+
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
|
319
|
+
title="Switch themes">
|
320
|
+
<span class="mini-icon mini-icon-brightness"></span>
|
321
|
+
</a>
|
649
322
|
</div>
|
650
323
|
</div>
|
651
324
|
|
652
325
|
|
326
|
+
|
653
327
|
<div id="ajax-error-message" class="flash flash-error">
|
654
328
|
<span class="mini-icon mini-icon-exclamation"></span>
|
655
329
|
Something went wrong with that request. Please try again.
|
656
330
|
<a href="#" class="mini-icon mini-icon-remove-close ajax-error-dismiss"></a>
|
657
331
|
</div>
|
658
332
|
|
659
|
-
<div id="logo-popup">
|
660
|
-
<h2>Looking for the GitHub logo?</h2>
|
661
|
-
<ul>
|
662
|
-
<li>
|
663
|
-
<h4>GitHub Logo</h4>
|
664
|
-
<a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip"><img alt="Github_logo" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/github_logo.png?1334862345" /></a>
|
665
|
-
<a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip" class="minibutton download">Download</a>
|
666
|
-
</li>
|
667
|
-
<li>
|
668
|
-
<h4>The Octocat</h4>
|
669
|
-
<a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip"><img alt="Octocat" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/octocat.png?1334862345" /></a>
|
670
|
-
<a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip" class="minibutton download">Download</a>
|
671
|
-
</li>
|
672
|
-
</ul>
|
673
|
-
</div>
|
674
|
-
|
675
333
|
|
676
334
|
|
677
|
-
<span id='server_response_time' data-time='0.
|
335
|
+
<span id='server_response_time' data-time='0.08426' data-host='fe18'></span>
|
678
336
|
|
679
337
|
</body>
|
680
338
|
</html>
|