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/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.
@@ -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
@@ -24,3 +24,4 @@ require 'jruby/lint/checkers/thread_critical'
24
24
  require 'jruby/lint/checkers/object_space'
25
25
  require 'jruby/lint/checkers/timeout'
26
26
  require 'jruby/lint/checkers/system'
27
+ require 'jruby/lint/checkers/nonatomic'
@@ -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
+
@@ -1,5 +1,5 @@
1
1
  module JRuby
2
2
  module Lint
3
- VERSION = "0.4.0"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
@@ -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-precomposed" sizes="57x57" href="apple-touch-icon-114.png" />
13
- <link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114.png" />
14
- <link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-144.png" />
15
- <link rel="apple-touch-icon-precomposed" sizes="144x144" href="apple-touch-icon-144.png" />
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="6Qm2/XLBVrDz/ViJ+Af90zgrg0uh/0ENwOzt0AUeq64=" name="csrf-token" />
25
+ <meta content="wGM78MzZjf2nWL4+igQC+rfoXXPgouU6BMay3lyDqj8=" name="csrf-token" />
25
26
 
26
- <link href="https://a248.e.akamai.net/assets.github.com/assets/github-ce830f15a059580dd0f810cc75bcb0ee809ef6a1.css" media="screen" rel="stylesheet" type="text/css" />
27
- <link href="https://a248.e.akamai.net/assets.github.com/assets/github2-4487b0f7adb97a21e3025cca1477fd2895190e2a.css" media="screen" rel="stylesheet" type="text/css" />
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
- <script src="https://a248.e.akamai.net/assets.github.com/assets/frameworks-28923941200b998a3e7422badab5b9be240f9be4.js" type="text/javascript"></script>
32
- <script src="https://a248.e.akamai.net/assets.github.com/assets/github-36f451a5784385d840e64f10e6b5daa274523286.js" type="text/javascript"></script>
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
- <script src="https://a248.e.akamai.net/assets.github.com/assets/wiki-dec2413e047224cac07760fa1b6a8c87de91f0c5.js" type="text/javascript"></script>
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/images/gravatars/gravatar-user-420.png?1345673561"/>
40
+ <meta property="og:image" content="https://secure.gravatar.com/avatar/1041835545ba2997fad5ca683a91d58d?s=420&amp;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
- <div id="header" class="true clearfix">
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
- </div>
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
- <ul class="pagehead-actions">
98
-
99
-
100
- <li>
101
- <span class="star-button"><a href="/login?return_to=%2Fjruby%2Fjruby" class="minibutton js-toggler-target entice tooltipped leftwards" title="You must be signed in to use this feature" rel="nofollow"><span class="mini-icon mini-icon-star"></span>Star</a><a class="social-count js-social-count" href="/jruby/jruby/stargazers">1,137</a></span>
102
- </li>
103
- <li>
104
- <a href="/login?return_to=%2Fjruby%2Fjruby" class="minibutton js-toggler-target fork-button entice tooltipped leftwards" title="You must be signed in to fork a repository" rel="nofollow"><span class="mini-icon mini-icon-fork"></span>Fork</a><a href="/jruby/jruby/network" class="social-count">269</a>
105
- </li>
106
- </ul>
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="repo_sourcerepo_downloadsrepo_commitsrepo_tagsrepo_branches">Code</a></li>
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'>1</span></a></li>
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'>51</span></a></li>
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="repo_graphsrepo_contributors">Graphs</a></li>
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. This page lists common C extensions and non-C alternatives you can use to replace them.</p>
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/nex3/maruku">Maruku</a> (pure Ruby) or <a href="https://github.com/nate/markdown_j">markdown_j</a> (wrapper around a Java library)</p></li>
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> &amp; <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/nicksieger/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-mysql</code>.</p></li>
179
- <li><p><strong>mysql2</strong> - Use <a href="https://github.com/nicksieger/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-mysql</code>.</p></li>
180
- <li><p><strong>sqlite3</strong> - Use <a href="https://github.com/nicksieger/activerecord-jdbc-adapter">activerecord-jdbc-adapter</a> instead along with <code>jdbc-sqlite3</code>.</p></li>
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>json_pure</code> instead. Unfortunately there is no known equivalent JSON stream parser.</p></li>
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 flyerhzm, <time class="js-relative-date" datetime="2012-08-30T20:16:02-07:00" title="2012-08-30 20:16:02">August 30, 2012</time>
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 &amp; 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>&copy; 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
- <div id="keyboard_shortcuts_pane" class="instapaper_ignore readability-extra" style="display:none">
284
- <h2>Keyboard Shortcuts <small><a href="#" class="js-see-all-keyboard-shortcuts">(see all)</a></small></h2>
285
-
286
- <div class="columns threecols">
287
- <div class="column first">
288
- <h3>Site wide shortcuts</h3>
289
- <dl class="keyboard-mappings">
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 &amp; 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
- <div class="column middle" style='display:none'>
300
- <h3>Commit list</h3>
301
- <dl class="keyboard-mappings">
302
- <dt>j</dt>
303
- <dd>Move selection down</dd>
304
- </dl>
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
- <div class="column last js-hidden-pane" style='display:none'>
320
- <h3>Pull request list</h3>
321
- <dl class="keyboard-mappings">
322
- <dt>j</dt>
323
- <dd>Move selection down</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
- <dl class="keyboard-mappings">
326
- <dt>k</dt>
327
- <dd>Move selection up</dd>
328
- </dl>
329
- <dl class="keyboard-mappings">
330
- <dt>o <em>or</em> enter</dt>
331
- <dd>Open issue</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
- <dl class="keyboard-mappings">
338
- <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> shift p</dt>
339
- <dd>Preview comment</dd>
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 &amp; teachers</a></dd>
280
+ <dd><a href="http://shop.github.com">The Shop</a></dd>
281
+ <dd><a href="/plans">Plans &amp; 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
- <div class="js-hidden-pane" style='display:none'>
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
- <div class="js-hidden-pane" style='display:none'>
474
- <div class="rule"></div>
475
- <div class="columns threecols">
476
- <div class="column first js-hidden-pane" style='display:none'>
477
- <h3>Source Code Browsing</h3>
478
- <dl class="keyboard-mappings">
479
- <dt>t</dt>
480
- <dd>Activates the file finder</dd>
481
- </dl>
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">&copy; 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
- <div class="js-hidden-pane" style='display:none'>
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
- <div class="js-hidden-pane" style='display:none'>
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 id="markdown-help" class="instapaper_ignore readability-extra">
559
- <h2>Markdown Cheat Sheet</h2>
560
-
561
- <div class="cheatsheet-content">
562
-
563
- <div class="mod">
564
- <div class="col">
565
- <h3>Format Text</h3>
566
- <p>Headers</p>
567
- <pre>
568
- # This is an &lt;h1&gt; tag
569
- ## This is an &lt;h2&gt; tag
570
- ###### This is an &lt;h6&gt; 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="rule"></div>
618
-
619
- <h3>Code Examples in Markdown</h3>
620
- <div class="col">
621
- <p>Syntax highlighting with <a href="http://github.github.com/github-flavored-markdown/" title="GitHub Flavored Markdown" target="_blank">GFM</a></p>
622
- <pre>
623
- ```javascript
624
- function fancyAlert(arg) {
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
- `&lt;addr&gt;` 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.09792' data-host='fe13'></span>
335
+ <span id='server_response_time' data-time='0.08426' data-host='fe18'></span>
678
336
 
679
337
  </body>
680
338
  </html>