pingr 0.0.3 → 0.2.3
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 +7 -0
- data/.gitignore +2 -1
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/.yardopts +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +17 -18
- data/README.md +14 -18
- data/Rakefile +11 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/docs/Pingr/PingrError.html +134 -0
- data/docs/Pingr/Request.html +232 -0
- data/docs/Pingr/SearchEngines/Base.html +668 -0
- data/docs/Pingr/SearchEngines/Bing.html +294 -0
- data/docs/Pingr/SearchEngines/Google.html +294 -0
- data/docs/Pingr/SearchEngines.html +117 -0
- data/docs/Pingr.html +593 -0
- data/docs/_config.yml +1 -0
- data/docs/_index.html +181 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +496 -0
- data/docs/file.README.html +146 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +146 -0
- data/docs/index.md +37 -0
- data/docs/js/app.js +314 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +179 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/pingr/request.rb +10 -64
- data/lib/pingr/search_engines/base.rb +62 -0
- data/lib/pingr/search_engines/bing.rb +22 -0
- data/lib/pingr/search_engines/google.rb +21 -0
- data/lib/pingr/version.rb +3 -1
- data/lib/pingr.rb +27 -19
- data/lib/tasks/pingr.rake +19 -0
- data/pingr.gemspec +17 -13
- data/spec/pingr_spec.rb +7 -0
- data/spec/spec_helper.rb +16 -0
- metadata +83 -28
data/docs/file_list.html
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
|
+
<meta charset="utf-8" />
|
6
|
+
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
|
8
|
+
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
16
|
+
|
17
|
+
|
18
|
+
<title>File List</title>
|
19
|
+
<base id="base_target" target="_parent" />
|
20
|
+
</head>
|
21
|
+
<body>
|
22
|
+
<div id="content">
|
23
|
+
<div class="fixed_header">
|
24
|
+
<h1 id="full_list_header">File List</h1>
|
25
|
+
<div id="full_list_nav">
|
26
|
+
|
27
|
+
<span><a target="_self" href="class_list.html">
|
28
|
+
Classes
|
29
|
+
</a></span>
|
30
|
+
|
31
|
+
<span><a target="_self" href="method_list.html">
|
32
|
+
Methods
|
33
|
+
</a></span>
|
34
|
+
|
35
|
+
<span><a target="_self" href="file_list.html">
|
36
|
+
Files
|
37
|
+
</a></span>
|
38
|
+
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div id="search">Search: <input type="text" /></div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<ul id="full_list" class="file">
|
45
|
+
|
46
|
+
|
47
|
+
<li id="object_README" class="odd">
|
48
|
+
<div class="item"><span class="object_link"><a href="index.html" title="README">README</a></span></div>
|
49
|
+
</li>
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
</ul>
|
54
|
+
</div>
|
55
|
+
</body>
|
56
|
+
</html>
|
data/docs/frames.html
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Pingr</title>
|
6
|
+
</head>
|
7
|
+
<script type="text/javascript">
|
8
|
+
var match = unescape(window.location.hash).match(/^#!(.+)/);
|
9
|
+
var name = match ? match[1] : 'index.html';
|
10
|
+
name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
|
11
|
+
window.top.location = name;
|
12
|
+
</script>
|
13
|
+
<noscript>
|
14
|
+
<h1>Oops!</h1>
|
15
|
+
<h2>YARD requires JavaScript!</h2>
|
16
|
+
</noscript>
|
17
|
+
</html>
|
data/docs/index.html
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
File: README
|
8
|
+
|
9
|
+
— Pingr
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "README";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
<span class="title">File: README</span>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div id="search">
|
45
|
+
|
46
|
+
<a class="full_list_link" id="class_list_link"
|
47
|
+
href="class_list.html">
|
48
|
+
|
49
|
+
<svg width="24" height="24">
|
50
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
51
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
52
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
</svg>
|
54
|
+
</a>
|
55
|
+
|
56
|
+
</div>
|
57
|
+
<div class="clear"></div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div id="content"><div id='filecontents'><h1>Pingr - Tell search engines about your sitemap changes</h1>
|
61
|
+
|
62
|
+
<p>Pingr is a super-simple gem built for the <a href="http://github.com/KatanaCode/blogit" title="A Rails Blogging Engine">blogit</a> project.</p>
|
63
|
+
|
64
|
+
<h2>Installation</h2>
|
65
|
+
|
66
|
+
<p>Add this line to your application's Gemfile:</p>
|
67
|
+
|
68
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pingr</span><span class='tstring_end'>'</span></span>
|
69
|
+
</code></pre>
|
70
|
+
|
71
|
+
<p>And then execute:</p>
|
72
|
+
|
73
|
+
<pre class="code ruby"><code class="ruby">$ bundle
|
74
|
+
</code></pre>
|
75
|
+
|
76
|
+
<p>Or install it yourself as:</p>
|
77
|
+
|
78
|
+
<pre class="code ruby"><code class="ruby">$ gem install pingr
|
79
|
+
</code></pre>
|
80
|
+
|
81
|
+
<h2>Usage</h2>
|
82
|
+
|
83
|
+
<p>From within your app (most likely a controller):</p>
|
84
|
+
|
85
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>def</span> <span class='id identifier rubyid_ping_sitemaps'>ping_sitemaps</span>
|
86
|
+
<span class='const'><span class='object_link'><a href="Pingr.html" title="Pingr (module)">Pingr</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Pingr/Request.html" title="Pingr::Request (class)">Request</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Pingr/Request.html#initialize-instance_method" title="Pingr::Request#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_my_sitemap_url'>my_sitemap_url</span><span class='rparen'>)</span> <span class='comment'># This will ping Google and Bing
|
87
|
+
</span><span class='kw'>end</span>
|
88
|
+
</code></pre>
|
89
|
+
|
90
|
+
<p>A good way to do this would be using Rails's after filters:</p>
|
91
|
+
|
92
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>PostsController</span> <span class='op'><</span> <span class='const'>ActionController</span><span class='op'>::</span><span class='const'>Base</span>
|
93
|
+
|
94
|
+
<span class='id identifier rubyid_after_filter'>after_filter</span> <span class='symbol'>:ping_sitemaps</span><span class='comma'>,</span> <span class='label'>only:</span> <span class='lbracket'>[</span><span class='symbol'>:create</span><span class='comma'>,</span> <span class='symbol'>:update</span><span class='comma'>,</span> <span class='symbol'>:destroy</span><span class='rbracket'>]</span>
|
95
|
+
|
96
|
+
<span class='comment'># ...
|
97
|
+
</span>
|
98
|
+
<span class='id identifier rubyid_private'>private</span>
|
99
|
+
|
100
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_ping_sitemaps'>ping_sitemaps</span>
|
101
|
+
<span class='const'><span class='object_link'><a href="Pingr.html" title="Pingr (module)">Pingr</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Pingr/Request.html" title="Pingr::Request (class)">Request</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Pingr/Request.html#initialize-instance_method" title="Pingr::Request#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_my_sitemap_url'>my_sitemap_url</span><span class='rparen'>)</span>
|
102
|
+
<span class='kw'>end</span>
|
103
|
+
|
104
|
+
<span class='kw'>end</span>
|
105
|
+
</code></pre>
|
106
|
+
|
107
|
+
<p>You can view the <a href="https://github.com/KatanaCode/pingr/tree/master/lib/pingr/search_engines">supported search engines</a> and add your own by viewing the code in this directory:</p>
|
108
|
+
|
109
|
+
<p><a href="https://github.com/KatanaCode/pingr/tree/master/lib/pingr/search_engines">https://github.com/KatanaCode/pingr/tree/master/lib/pingr/search_engines</a></p>
|
110
|
+
|
111
|
+
<h2>Modes</h2>
|
112
|
+
|
113
|
+
<p>By default, Pingr is set to <strong>:test</strong> mode, meaning it won't actually perform the requests. If the Rails environment is :production then the mode is set to <strong>:live</strong> which <em>will</em> perform requests to the search engines.</p>
|
114
|
+
|
115
|
+
<p>You can change this by manually setting <code>Pingr.mode</code></p>
|
116
|
+
|
117
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># in config/initializers/pingr.rb
|
118
|
+
</span><span class='const'><span class='object_link'><a href="Pingr.html" title="Pingr (module)">Pingr</a></span></span><span class='period'>.</span><span class='id identifier rubyid_mode'><span class='object_link'><a href="Pingr.html#mode-class_method" title="Pingr.mode (method)">mode</a></span></span> <span class='op'>=</span> <span class='symbol'>:live</span> <span class='kw'>if</span> <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>staging|production</span><span class='regexp_end'>/</span></span>
|
119
|
+
</code></pre>
|
120
|
+
|
121
|
+
<p><strong>NOTE:</strong> Search engines may penalise or black-list you if you perform too many requests - they recommend no more than one per hour.</p>
|
122
|
+
|
123
|
+
<h2>Contributing</h2>
|
124
|
+
|
125
|
+
<ol>
|
126
|
+
<li>Fork it</li>
|
127
|
+
<li>Create your feature branch (<code>git checkout -b my-new-feature</code>)</li>
|
128
|
+
<li>Commit your changes (<code>git commit -am 'Add some feature'</code>)</li>
|
129
|
+
<li>Push to the branch (<code>git push origin my-new-feature</code>)</li>
|
130
|
+
<li>Create new Pull Request</li>
|
131
|
+
</ol>
|
132
|
+
|
133
|
+
<h2>About Katana</h2>
|
134
|
+
|
135
|
+
<p>Katana are <a href="http://katanacode.com/" title="Katana Code">web and mobile app developers in Edinburgh, Scotland</a>.</p>
|
136
|
+
</div></div>
|
137
|
+
|
138
|
+
<div id="footer">
|
139
|
+
Generated on Thu Aug 13 16:28:50 2020 by
|
140
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
141
|
+
0.9.24 (ruby-2.6.6).
|
142
|
+
</div>
|
143
|
+
|
144
|
+
</div>
|
145
|
+
</body>
|
146
|
+
</html>
|
data/docs/index.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
## Welcome to GitHub Pages
|
2
|
+
|
3
|
+
You can use the [editor on GitHub](https://github.com/KatanaCode/pingr/edit/master/docs/index.md) to maintain and preview the content for your website in Markdown files.
|
4
|
+
|
5
|
+
Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.
|
6
|
+
|
7
|
+
### Markdown
|
8
|
+
|
9
|
+
Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for
|
10
|
+
|
11
|
+
```markdown
|
12
|
+
Syntax highlighted code block
|
13
|
+
|
14
|
+
# Header 1
|
15
|
+
## Header 2
|
16
|
+
### Header 3
|
17
|
+
|
18
|
+
- Bulleted
|
19
|
+
- List
|
20
|
+
|
21
|
+
1. Numbered
|
22
|
+
2. List
|
23
|
+
|
24
|
+
**Bold** and _Italic_ and `Code` text
|
25
|
+
|
26
|
+
[Link](url) and 
|
27
|
+
```
|
28
|
+
|
29
|
+
For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/).
|
30
|
+
|
31
|
+
### Jekyll Themes
|
32
|
+
|
33
|
+
Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/KatanaCode/pingr/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file.
|
34
|
+
|
35
|
+
### Support or Contact
|
36
|
+
|
37
|
+
Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out.
|
data/docs/js/app.js
ADDED
@@ -0,0 +1,314 @@
|
|
1
|
+
(function() {
|
2
|
+
|
3
|
+
var localStorage = {}, sessionStorage = {};
|
4
|
+
try { localStorage = window.localStorage; } catch (e) { }
|
5
|
+
try { sessionStorage = window.sessionStorage; } catch (e) { }
|
6
|
+
|
7
|
+
function createSourceLinks() {
|
8
|
+
$('.method_details_list .source_code').
|
9
|
+
before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
|
10
|
+
$('.toggleSource').toggle(function() {
|
11
|
+
$(this).parent().nextAll('.source_code').slideDown(100);
|
12
|
+
$(this).text("Hide source");
|
13
|
+
},
|
14
|
+
function() {
|
15
|
+
$(this).parent().nextAll('.source_code').slideUp(100);
|
16
|
+
$(this).text("View source");
|
17
|
+
});
|
18
|
+
}
|
19
|
+
|
20
|
+
function createDefineLinks() {
|
21
|
+
var tHeight = 0;
|
22
|
+
$('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
|
23
|
+
$('.toggleDefines').toggle(function() {
|
24
|
+
tHeight = $(this).parent().prev().height();
|
25
|
+
$(this).prev().css('display', 'inline');
|
26
|
+
$(this).parent().prev().height($(this).parent().height());
|
27
|
+
$(this).text("(less)");
|
28
|
+
},
|
29
|
+
function() {
|
30
|
+
$(this).prev().hide();
|
31
|
+
$(this).parent().prev().height(tHeight);
|
32
|
+
$(this).text("more...");
|
33
|
+
});
|
34
|
+
}
|
35
|
+
|
36
|
+
function createFullTreeLinks() {
|
37
|
+
var tHeight = 0;
|
38
|
+
$('.inheritanceTree').toggle(function() {
|
39
|
+
tHeight = $(this).parent().prev().height();
|
40
|
+
$(this).parent().toggleClass('showAll');
|
41
|
+
$(this).text("(hide)");
|
42
|
+
$(this).parent().prev().height($(this).parent().height());
|
43
|
+
},
|
44
|
+
function() {
|
45
|
+
$(this).parent().toggleClass('showAll');
|
46
|
+
$(this).parent().prev().height(tHeight);
|
47
|
+
$(this).text("show all");
|
48
|
+
});
|
49
|
+
}
|
50
|
+
|
51
|
+
function searchFrameButtons() {
|
52
|
+
$('.full_list_link').click(function() {
|
53
|
+
toggleSearchFrame(this, $(this).attr('href'));
|
54
|
+
return false;
|
55
|
+
});
|
56
|
+
window.addEventListener('message', function(e) {
|
57
|
+
if (e.data === 'navEscape') {
|
58
|
+
$('#nav').slideUp(100);
|
59
|
+
$('#search a').removeClass('active inactive');
|
60
|
+
$(window).focus();
|
61
|
+
}
|
62
|
+
});
|
63
|
+
|
64
|
+
$(window).resize(function() {
|
65
|
+
if ($('#search:visible').length === 0) {
|
66
|
+
$('#nav').removeAttr('style');
|
67
|
+
$('#search a').removeClass('active inactive');
|
68
|
+
$(window).focus();
|
69
|
+
}
|
70
|
+
});
|
71
|
+
}
|
72
|
+
|
73
|
+
function toggleSearchFrame(id, link) {
|
74
|
+
var frame = $('#nav');
|
75
|
+
$('#search a').removeClass('active').addClass('inactive');
|
76
|
+
if (frame.attr('src') === link && frame.css('display') !== "none") {
|
77
|
+
frame.slideUp(100);
|
78
|
+
$('#search a').removeClass('active inactive');
|
79
|
+
}
|
80
|
+
else {
|
81
|
+
$(id).addClass('active').removeClass('inactive');
|
82
|
+
if (frame.attr('src') !== link) frame.attr('src', link);
|
83
|
+
frame.slideDown(100);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
function linkSummaries() {
|
88
|
+
$('.summary_signature').click(function() {
|
89
|
+
document.location = $(this).find('a').attr('href');
|
90
|
+
});
|
91
|
+
}
|
92
|
+
|
93
|
+
function summaryToggle() {
|
94
|
+
$('.summary_toggle').click(function(e) {
|
95
|
+
e.preventDefault();
|
96
|
+
localStorage.summaryCollapsed = $(this).text();
|
97
|
+
$('.summary_toggle').each(function() {
|
98
|
+
$(this).text($(this).text() == "collapse" ? "expand" : "collapse");
|
99
|
+
var next = $(this).parent().parent().nextAll('ul.summary').first();
|
100
|
+
if (next.hasClass('compact')) {
|
101
|
+
next.toggle();
|
102
|
+
next.nextAll('ul.summary').first().toggle();
|
103
|
+
}
|
104
|
+
else if (next.hasClass('summary')) {
|
105
|
+
var list = $('<ul class="summary compact" />');
|
106
|
+
list.html(next.html());
|
107
|
+
list.find('.summary_desc, .note').remove();
|
108
|
+
list.find('a').each(function() {
|
109
|
+
$(this).html($(this).find('strong').html());
|
110
|
+
$(this).parent().html($(this)[0].outerHTML);
|
111
|
+
});
|
112
|
+
next.before(list);
|
113
|
+
next.toggle();
|
114
|
+
}
|
115
|
+
});
|
116
|
+
return false;
|
117
|
+
});
|
118
|
+
if (localStorage.summaryCollapsed == "collapse") {
|
119
|
+
$('.summary_toggle').first().click();
|
120
|
+
} else { localStorage.summaryCollapsed = "expand"; }
|
121
|
+
}
|
122
|
+
|
123
|
+
function constantSummaryToggle() {
|
124
|
+
$('.constants_summary_toggle').click(function(e) {
|
125
|
+
e.preventDefault();
|
126
|
+
localStorage.summaryCollapsed = $(this).text();
|
127
|
+
$('.constants_summary_toggle').each(function() {
|
128
|
+
$(this).text($(this).text() == "collapse" ? "expand" : "collapse");
|
129
|
+
var next = $(this).parent().parent().nextAll('dl.constants').first();
|
130
|
+
if (next.hasClass('compact')) {
|
131
|
+
next.toggle();
|
132
|
+
next.nextAll('dl.constants').first().toggle();
|
133
|
+
}
|
134
|
+
else if (next.hasClass('constants')) {
|
135
|
+
var list = $('<dl class="constants compact" />');
|
136
|
+
list.html(next.html());
|
137
|
+
list.find('dt').each(function() {
|
138
|
+
$(this).addClass('summary_signature');
|
139
|
+
$(this).text( $(this).text().split('=')[0]);
|
140
|
+
if ($(this).has(".deprecated").length) {
|
141
|
+
$(this).addClass('deprecated');
|
142
|
+
};
|
143
|
+
});
|
144
|
+
// Add the value of the constant as "Tooltip" to the summary object
|
145
|
+
list.find('pre.code').each(function() {
|
146
|
+
console.log($(this).parent());
|
147
|
+
var dt_element = $(this).parent().prev();
|
148
|
+
var tooltip = $(this).text();
|
149
|
+
if (dt_element.hasClass("deprecated")) {
|
150
|
+
tooltip = 'Deprecated. ' + tooltip;
|
151
|
+
};
|
152
|
+
dt_element.attr('title', tooltip);
|
153
|
+
});
|
154
|
+
list.find('.docstring, .tags, dd').remove();
|
155
|
+
next.before(list);
|
156
|
+
next.toggle();
|
157
|
+
}
|
158
|
+
});
|
159
|
+
return false;
|
160
|
+
});
|
161
|
+
if (localStorage.summaryCollapsed == "collapse") {
|
162
|
+
$('.constants_summary_toggle').first().click();
|
163
|
+
} else { localStorage.summaryCollapsed = "expand"; }
|
164
|
+
}
|
165
|
+
|
166
|
+
function generateTOC() {
|
167
|
+
if ($('#filecontents').length === 0) return;
|
168
|
+
var _toc = $('<ol class="top"></ol>');
|
169
|
+
var show = false;
|
170
|
+
var toc = _toc;
|
171
|
+
var counter = 0;
|
172
|
+
var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
|
173
|
+
var i;
|
174
|
+
var curli;
|
175
|
+
if ($('#filecontents h1').length > 1) tags.unshift('h1');
|
176
|
+
for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
|
177
|
+
var lastTag = parseInt(tags[0][1], 10);
|
178
|
+
$(tags.join(', ')).each(function() {
|
179
|
+
if ($(this).parents('.method_details .docstring').length != 0) return;
|
180
|
+
if (this.id == "filecontents") return;
|
181
|
+
show = true;
|
182
|
+
var thisTag = parseInt(this.tagName[1], 10);
|
183
|
+
if (this.id.length === 0) {
|
184
|
+
var proposedId = $(this).attr('toc-id');
|
185
|
+
if (typeof(proposedId) != "undefined") this.id = proposedId;
|
186
|
+
else {
|
187
|
+
var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
|
188
|
+
if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
|
189
|
+
this.id = proposedId;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
if (thisTag > lastTag) {
|
193
|
+
for (i = 0; i < thisTag - lastTag; i++) {
|
194
|
+
if ( typeof(curli) == "undefined" ) {
|
195
|
+
curli = $('<li/>');
|
196
|
+
toc.append(curli);
|
197
|
+
}
|
198
|
+
toc = $('<ol/>');
|
199
|
+
curli.append(toc);
|
200
|
+
curli = undefined;
|
201
|
+
}
|
202
|
+
}
|
203
|
+
if (thisTag < lastTag) {
|
204
|
+
for (i = 0; i < lastTag - thisTag; i++) {
|
205
|
+
toc = toc.parent();
|
206
|
+
toc = toc.parent();
|
207
|
+
}
|
208
|
+
}
|
209
|
+
var title = $(this).attr('toc-title');
|
210
|
+
if (typeof(title) == "undefined") title = $(this).text();
|
211
|
+
curli =$('<li><a href="#' + this.id + '">' + title + '</a></li>');
|
212
|
+
toc.append(curli);
|
213
|
+
lastTag = thisTag;
|
214
|
+
});
|
215
|
+
if (!show) return;
|
216
|
+
html = '<div id="toc"><p class="title hide_toc"><a href="#"><strong>Table of Contents</strong></a></p></div>';
|
217
|
+
$('#content').prepend(html);
|
218
|
+
$('#toc').append(_toc);
|
219
|
+
$('#toc .hide_toc').toggle(function() {
|
220
|
+
$('#toc .top').slideUp('fast');
|
221
|
+
$('#toc').toggleClass('hidden');
|
222
|
+
$('#toc .title small').toggle();
|
223
|
+
}, function() {
|
224
|
+
$('#toc .top').slideDown('fast');
|
225
|
+
$('#toc').toggleClass('hidden');
|
226
|
+
$('#toc .title small').toggle();
|
227
|
+
});
|
228
|
+
}
|
229
|
+
|
230
|
+
function navResizeFn(e) {
|
231
|
+
if (e.which !== 1) {
|
232
|
+
navResizeFnStop();
|
233
|
+
return;
|
234
|
+
}
|
235
|
+
|
236
|
+
sessionStorage.navWidth = e.pageX.toString();
|
237
|
+
$('.nav_wrap').css('width', e.pageX);
|
238
|
+
$('.nav_wrap').css('-ms-flex', 'inherit');
|
239
|
+
}
|
240
|
+
|
241
|
+
function navResizeFnStop() {
|
242
|
+
$(window).unbind('mousemove', navResizeFn);
|
243
|
+
window.removeEventListener('message', navMessageFn, false);
|
244
|
+
}
|
245
|
+
|
246
|
+
function navMessageFn(e) {
|
247
|
+
if (e.data.action === 'mousemove') navResizeFn(e.data.event);
|
248
|
+
if (e.data.action === 'mouseup') navResizeFnStop();
|
249
|
+
}
|
250
|
+
|
251
|
+
function navResizer() {
|
252
|
+
$('#resizer').mousedown(function(e) {
|
253
|
+
e.preventDefault();
|
254
|
+
$(window).mousemove(navResizeFn);
|
255
|
+
window.addEventListener('message', navMessageFn, false);
|
256
|
+
});
|
257
|
+
$(window).mouseup(navResizeFnStop);
|
258
|
+
|
259
|
+
if (sessionStorage.navWidth) {
|
260
|
+
navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)});
|
261
|
+
}
|
262
|
+
}
|
263
|
+
|
264
|
+
function navExpander() {
|
265
|
+
var done = false, timer = setTimeout(postMessage, 500);
|
266
|
+
function postMessage() {
|
267
|
+
if (done) return;
|
268
|
+
clearTimeout(timer);
|
269
|
+
var opts = { action: 'expand', path: pathId };
|
270
|
+
document.getElementById('nav').contentWindow.postMessage(opts, '*');
|
271
|
+
done = true;
|
272
|
+
}
|
273
|
+
|
274
|
+
window.addEventListener('message', function(event) {
|
275
|
+
if (event.data === 'navReady') postMessage();
|
276
|
+
return false;
|
277
|
+
}, false);
|
278
|
+
}
|
279
|
+
|
280
|
+
function mainFocus() {
|
281
|
+
var hash = window.location.hash;
|
282
|
+
if (hash !== '' && $(hash)[0]) {
|
283
|
+
$(hash)[0].scrollIntoView();
|
284
|
+
}
|
285
|
+
|
286
|
+
setTimeout(function() { $('#main').focus(); }, 10);
|
287
|
+
}
|
288
|
+
|
289
|
+
function navigationChange() {
|
290
|
+
// This works around the broken anchor navigation with the YARD template.
|
291
|
+
window.onpopstate = function() {
|
292
|
+
var hash = window.location.hash;
|
293
|
+
if (hash !== '' && $(hash)[0]) {
|
294
|
+
$(hash)[0].scrollIntoView();
|
295
|
+
}
|
296
|
+
};
|
297
|
+
}
|
298
|
+
|
299
|
+
$(document).ready(function() {
|
300
|
+
navResizer();
|
301
|
+
navExpander();
|
302
|
+
createSourceLinks();
|
303
|
+
createDefineLinks();
|
304
|
+
createFullTreeLinks();
|
305
|
+
searchFrameButtons();
|
306
|
+
linkSummaries();
|
307
|
+
summaryToggle();
|
308
|
+
constantSummaryToggle();
|
309
|
+
generateTOC();
|
310
|
+
mainFocus();
|
311
|
+
navigationChange();
|
312
|
+
});
|
313
|
+
|
314
|
+
})();
|