staple 0.0.2

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.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/Gemfile +13 -0
  4. data/LICENSE.md +23 -0
  5. data/README.md +51 -0
  6. data/Rakefile +0 -0
  7. data/config.rb +24 -0
  8. data/lib/snippet_helpers.rb +69 -0
  9. data/lib/staple/import_generator.rb +50 -0
  10. data/lib/staple/list_generator.rb +22 -0
  11. data/lib/staple.rb +2 -0
  12. data/source/CNAME +1 -0
  13. data/source/_accordion.html.erb +24 -0
  14. data/source/_accordion_tabs.html.erb +26 -0
  15. data/source/_accordion_tabs_minimal.html.erb +26 -0
  16. data/source/_badges.html.erb +7 -0
  17. data/source/_breadcrumbs.html.erb +7 -0
  18. data/source/_browser.html.erb +29 -0
  19. data/source/_button_group.html.erb +18 -0
  20. data/source/_cards.html.erb +59 -0
  21. data/source/_centered_navigation.html.erb +38 -0
  22. data/source/_code.html.erb +10 -0
  23. data/source/_comment.html.erb +21 -0
  24. data/source/_device.html.erb +10 -0
  25. data/source/_dropdown.html.erb +12 -0
  26. data/source/_expander.html.erb +6 -0
  27. data/source/_flashes.html.erb +15 -0
  28. data/source/_footer.html.erb +28 -0
  29. data/source/_footer_2.html.erb +33 -0
  30. data/source/_grid_items.html.erb +37 -0
  31. data/source/_grid_items_lines.html.erb +44 -0
  32. data/source/_hero.html.erb +11 -0
  33. data/source/_hover_tile_animation.html.erb +11 -0
  34. data/source/_icon_bullet_points.html.erb +30 -0
  35. data/source/_image_gradient_dynamic.html.erb +7 -0
  36. data/source/_intro_text.html.erb +6 -0
  37. data/source/_label_alerts.html.erb +5 -0
  38. data/source/_modal.html.erb +14 -0
  39. data/source/_navigation.html.erb +44 -0
  40. data/source/_pagination.html.erb +17 -0
  41. data/source/_progress_bar.html.erb +3 -0
  42. data/source/_progress_bar_indication.html.erb +5 -0
  43. data/source/_search_bar.html.erb +8 -0
  44. data/source/_search_tools.html.erb +58 -0
  45. data/source/_side_image.html.erb +10 -0
  46. data/source/_sliding_menu.html.erb +13 -0
  47. data/source/_snippet.html.erb +4 -0
  48. data/source/_switch.html.erb +4 -0
  49. data/source/_tables.html.erb +31 -0
  50. data/source/_tables_minimal.html.erb +31 -0
  51. data/source/_texture-legend.html.erb +24 -0
  52. data/source/_textures.html.erb +4 -0
  53. data/source/_tooltip.html.erb +6 -0
  54. data/source/_type_system_geometric.html.erb +18 -0
  55. data/source/_type_system_rounded.html.erb +18 -0
  56. data/source/_type_system_sans.html.erb +18 -0
  57. data/source/_type_system_serif.html.erb +19 -0
  58. data/source/_type_system_slab.html.erb +18 -0
  59. data/source/_type_system_traditional.html.erb +18 -0
  60. data/source/_vertical_tabs.html.erb +30 -0
  61. data/source/_video.html.erb +5 -0
  62. data/source/components.html.erb +174 -0
  63. data/source/index.html.erb +162 -0
  64. data/source/javascripts/all.js +11 -0
  65. data/source/javascripts/jquery.erToc.js +477 -0
  66. data/source/javascripts/jquery.glide.js +941 -0
  67. data/source/javascripts/staple/accordion.js +5 -0
  68. data/source/javascripts/staple/accordion_tabs.js +19 -0
  69. data/source/javascripts/staple/accordion_tabs_minimal.js +19 -0
  70. data/source/javascripts/staple/centered_navigation.js +14 -0
  71. data/source/javascripts/staple/dropdown.js +9 -0
  72. data/source/javascripts/staple/expander.js +53 -0
  73. data/source/javascripts/staple/navigation.js +23 -0
  74. data/source/javascripts/staple/search_tools.js +110 -0
  75. data/source/javascripts/staple/sliding_menu.js +13 -0
  76. data/source/javascripts/staple/vertical_tabs.js +32 -0
  77. data/source/layouts/layout.erb +1 -0
  78. data/source/refills-hero.html.erb +7 -0
  79. data/source/refills-menu.html.erb +5 -0
  80. data/source/refills-page-scripts.html.erb +66 -0
  81. data/source/stylesheets/_bourbon-nav.scss +86 -0
  82. data/source/stylesheets/_normalize.scss +425 -0
  83. data/source/stylesheets/_refills-nav.scss +102 -0
  84. data/source/stylesheets/_refills-styles.scss +543 -0
  85. data/source/stylesheets/all.scss +61 -0
  86. data/source/stylesheets/staple/_accordion-tabs-minimal.scss +60 -0
  87. data/source/stylesheets/staple/_accordion-tabs.scss +88 -0
  88. data/source/stylesheets/staple/_accordion.scss +55 -0
  89. data/source/stylesheets/staple/_badges.scss +44 -0
  90. data/source/stylesheets/staple/_breadcrumbs.scss +84 -0
  91. data/source/stylesheets/staple/_browser.scss +141 -0
  92. data/source/stylesheets/staple/_button-group.scss +81 -0
  93. data/source/stylesheets/staple/_cards.scss +132 -0
  94. data/source/stylesheets/staple/_centered-navigation.scss +251 -0
  95. data/source/stylesheets/staple/_comment.scss +60 -0
  96. data/source/stylesheets/staple/_device.scss +83 -0
  97. data/source/stylesheets/staple/_dropdown.scss +127 -0
  98. data/source/stylesheets/staple/_expander.scss +30 -0
  99. data/source/stylesheets/staple/_flashes.scss +29 -0
  100. data/source/stylesheets/staple/_footer-2.scss +117 -0
  101. data/source/stylesheets/staple/_footer.scss +76 -0
  102. data/source/stylesheets/staple/_grid-items-lines.scss +86 -0
  103. data/source/stylesheets/staple/_grid-items.scss +97 -0
  104. data/source/stylesheets/staple/_hero.scss +54 -0
  105. data/source/stylesheets/staple/_hover-tile-animation.scss +52 -0
  106. data/source/stylesheets/staple/_icon-bullet-points.scss +63 -0
  107. data/source/stylesheets/staple/_image-gradient-dynamic.scss +59 -0
  108. data/source/stylesheets/staple/_intro-text.scss +67 -0
  109. data/source/stylesheets/staple/_label-alerts.scss +11 -0
  110. data/source/stylesheets/staple/_modal.scss +147 -0
  111. data/source/stylesheets/staple/_navigation.scss +329 -0
  112. data/source/stylesheets/staple/_pagination.scss +51 -0
  113. data/source/stylesheets/staple/_progress-bar-indication.scss +39 -0
  114. data/source/stylesheets/staple/_progress-bar.scss +83 -0
  115. data/source/stylesheets/staple/_search-bar.scss +40 -0
  116. data/source/stylesheets/staple/_search-tools.scss +67 -0
  117. data/source/stylesheets/staple/_side-image.scss +59 -0
  118. data/source/stylesheets/staple/_sliding-menu.scss +63 -0
  119. data/source/stylesheets/staple/_switch.scss +77 -0
  120. data/source/stylesheets/staple/_tables-minimal.scss +60 -0
  121. data/source/stylesheets/staple/_tables.scss +88 -0
  122. data/source/stylesheets/staple/_texture-legend.scss +182 -0
  123. data/source/stylesheets/staple/_textures.scss +119 -0
  124. data/source/stylesheets/staple/_tooltip.scss +57 -0
  125. data/source/stylesheets/staple/_type-system-geometric.scss +103 -0
  126. data/source/stylesheets/staple/_type-system-rounded.scss +107 -0
  127. data/source/stylesheets/staple/_type-system-sans.scss +110 -0
  128. data/source/stylesheets/staple/_type-system-serif.scss +111 -0
  129. data/source/stylesheets/staple/_type-system-slab.scss +107 -0
  130. data/source/stylesheets/staple/_type-system-traditional.scss +114 -0
  131. data/source/stylesheets/staple/_vertical-tabs.scss +105 -0
  132. data/source/stylesheets/staple/_video.scss +21 -0
  133. data/source/type-systems.html.erb +67 -0
  134. data/source/vendor/javascripts/ZeroClipboard.min.js +9 -0
  135. data/source/vendor/javascripts/fixedsticky.js +185 -0
  136. data/source/vendor/javascripts/prism.js +13 -0
  137. data/source/vendor/javascripts/smooth-scroll.js +125 -0
  138. data/source/vendor/stylesheets/fixedsticky.css +22 -0
  139. data/source/vendor/stylesheets/prism.css +126 -0
  140. data/staple.gemspec +19 -0
  141. metadata +184 -0
@@ -0,0 +1,477 @@
1
+ /*
2
+ * Plugin Name: erToc plugin for jQuery
3
+ * Version: 1.0
4
+ * Author: everright.chen
5
+ * Email: everright.chen@gmail.com
6
+ * Website: http://everright.cn
7
+ * Testd on: jQuery 1.4+, IE 6+, Firefox, Chrome, Safari, Oprea
8
+ * erToc is a jQuery plugin that will automatically generate a table of contents for your page.
9
+ */
10
+ (function($) {
11
+ $.erToc = function(el, options) {
12
+ var base = this;
13
+
14
+ base.$this = $(el);
15
+
16
+ base.init = function() {
17
+ // merege custom options
18
+ base.options = $.extend({}, $.erToc.defaults, options);
19
+
20
+ // get nodes length, break down when have't nodes
21
+ var nodeLength = base.options.nodes.length;
22
+ if (!nodeLength) {
23
+ return;
24
+ }
25
+
26
+ // get and set the last node id number from $body data
27
+ base.nodeNum = $('body').data(base.options.nodeNumKey) || 1;
28
+ // initialize current level, current original level, current original min level
29
+ base.currentLevel = base.currentOriLevel = base.currentOriMinLevel = 0;
30
+ // get is tiered output of toc
31
+ base.tiered = base.tieredList();
32
+ // initialize output for toc
33
+ base.toc = '';
34
+
35
+ // get start level, if value is string, then auto convert to int
36
+ if (base.options.startLevel != parseInt(base.options.startLevel)) {
37
+ base.options.startLevel = $.inArray(base.options.startLevel, base.options.nodes);
38
+ } else {
39
+ base.options.startLevel -= 1;
40
+ }
41
+
42
+ if (!base.options.startLevel || 0 > base.options.startLevel) {
43
+ base.options.startLevel = 0;
44
+ }
45
+
46
+ // get max level, if value is string, then auto convert to int, auto set max level to nodes length when max level less than start level
47
+ if (base.options.maxLevel != parseInt(base.options.maxLevel)) {
48
+ base.options.maxLevel = $.inArray(base.options.maxLevel, base.options.nodes) + 1;
49
+ }
50
+
51
+ if (!base.options.maxLevel || base.options.maxLevel < base.options.startLevel) {
52
+ base.options.maxLevel = base.options.nodes.length;
53
+ }
54
+
55
+ // check and reset the max leven with new computed
56
+ var validLevel = nodeLength - base.options.startLevel;
57
+
58
+ if (base.options.startLevel > base.options.maxLevel || validLevel < base.options.maxLevel) {
59
+ base.options.maxLevel = validLevel;
60
+ }
61
+
62
+ // automatically broken down when the nodes does not meet the conditions
63
+ if (!base.initNodes()) {
64
+ return;
65
+ }
66
+ // initialize and append to toc output
67
+ base.initToc();
68
+ // append toc content to toc target element
69
+ base.createToc();
70
+
71
+ // set main scroll object when toc scroll or go to top feature was enabled
72
+ if (base.options.goTop || base.options.tocScroll) {
73
+ base.$body = (window.opera) ? ('CSS1Compat' == document.compatMode ? $('html') : $('body')) : $('html, body');
74
+ }
75
+
76
+ // initialize go to top
77
+ if (false !== base.options.goTop) {
78
+ // set go to top object, if not set, then set with body object
79
+ base.$topNode = $(base.options.goTopNode);
80
+
81
+ if (!base.$topNode.length) {
82
+ base.$topNode = $('body');
83
+ }
84
+
85
+ base.options.goTopNodes = base.options.goTopNodes || 'auto';
86
+
87
+ if ('auto' === base.options.goTopNodes) {
88
+ base.$topNode.data('isGoTopPosition', 'yes');
89
+ }
90
+
91
+ base.addGoTop();
92
+ }
93
+ };
94
+
95
+ /*
96
+ * Prepare nodes
97
+ * Min & Max conditions
98
+ * Group nodes, sort nodes
99
+ */
100
+ base.initNodes = function() {
101
+ var defaultNodes = [];
102
+ for (var i = 0, len = base.options.nodes.length; i < len; i++) {
103
+ defaultNodes[i] = base.options.nodes[i];
104
+ }
105
+ var tag,
106
+ nodes = defaultNodes.splice(base.options.startLevel, base.options.maxLevel);
107
+ base.$nodes = base.$this.find(nodes.join(', '));
108
+
109
+ if (!base.$nodes.length || (base.options.nodeMin > 0 && base.$nodes.length < base.options.nodeMin)) {
110
+ return false;
111
+ }
112
+
113
+ if (base.options.nodeMax > 0) {
114
+ base.$nodes = base.$nodes.filter(':lt(' + base.options.nodeMax + ')');
115
+ }
116
+
117
+ base.nodes = {
118
+ 'ids': [],
119
+ 'classes': [],
120
+ 'sorts': {'ids': {}, 'classes': {}}
121
+ };
122
+
123
+ for (var i in nodes) {
124
+ if ('.' == nodes[i].substring(0, 1)) {
125
+ tag = nodes[i].substring(1);
126
+ base.nodes.classes.push(tag);
127
+ base.nodes.sorts.classes[tag] = i;
128
+ } else {
129
+ tag = nodes[i].toLowerCase();
130
+ base.nodes.ids.push(tag);
131
+ base.nodes.sorts.ids[tag] = i;
132
+ }
133
+ }
134
+
135
+ return true;
136
+ };
137
+
138
+ /*
139
+ * Prepare toc content
140
+ */
141
+ base.initToc = function() {
142
+ if (base.tiered) {
143
+ base.listO = '<' + base.options.tocListType + '>';
144
+ base.listC = '</' + base.options.tocListType + '>';
145
+ base.listEO = '<li>';
146
+ base.listEC = '</li>';
147
+ base.toc += base.listO + base.listEO;
148
+ }
149
+
150
+ var node, level, currentLevel;
151
+
152
+ var numCurrLabel = '';
153
+ if (true === base.options.numbered) {
154
+ var numPrevLevel = 0,
155
+ numLevelCount = {},
156
+ numPrefix = {},
157
+ numPrevPrefix = '',
158
+ numLastPrefix = '';
159
+ }
160
+
161
+ base.$nodes.addClass(base.options.nodeClass).each(function(i, obj) {
162
+ node = $(obj);
163
+ level = base.getLevel(node);
164
+ if (base.tiered) {
165
+ currentLevel = base.currentLevel;
166
+
167
+ if (0 == i) {
168
+ base.currentOriLevel = level;
169
+ base.currentOriMinLevel = level;
170
+ } else {
171
+ if (level > base.currentOriLevel) {
172
+ currentLevel = base.currentLevel + 1;
173
+ base.currentOriLevel = level;
174
+ } else if (level < base.currentOriLevel) {
175
+ currentLevel = level <= base.currentOriMinLevel ? 0 : level - base.currentOriMinLevel;
176
+ base.currentOriLevel = level;
177
+
178
+ if (level < base.currentOriMinLevel) {
179
+ base.currentOriMinLevel = level;
180
+ }
181
+ }
182
+
183
+ base.toc += base.formatLevel(currentLevel, false);
184
+ }
185
+
186
+ if (true === base.options.numbered) {
187
+ if (!numLevelCount[currentLevel] || numPrevLevel < currentLevel) {
188
+ numLevelCount[currentLevel] = 1;
189
+ } else {
190
+ numLevelCount[currentLevel] += 1;
191
+ }
192
+
193
+ if (numPrevLevel == currentLevel) {
194
+ numCurrLabel = numLastPrefix + numLevelCount[currentLevel];
195
+ } else {
196
+ if (numPrevLevel < currentLevel) {
197
+ numLastPrefix = numPrevPrefix + base.options.numberedJoin;
198
+ numPrefix[currentLevel] = numLastPrefix;
199
+ } else{
200
+ numLastPrefix = '';
201
+ }
202
+ numCurrLabel = (currentLevel == 0) ? numLevelCount[currentLevel] : numPrefix[currentLevel] + numLevelCount[currentLevel];
203
+
204
+ }
205
+ numPrevPrefix = numCurrLabel;
206
+ numCurrLabel = base.options.numberedPrefix + numCurrLabel + base.options.numberedSuffix;
207
+ numPrevLevel = currentLevel;
208
+ }
209
+ }
210
+
211
+ base.toc += base.formatLink(node, level, numCurrLabel);
212
+
213
+ if (base.tiered && ((i + 1) == base.$nodes.length)) {
214
+ base.toc += base.formatLevel(currentLevel, true);
215
+ }
216
+
217
+ base.currentLevel = currentLevel;
218
+ });
219
+
220
+ if (base.tiered) {
221
+ base.toc += base.listEC + base.listC;
222
+ }
223
+
224
+ // set last nodeNum for other erToc use
225
+ $('body').data(base.options.nodeNumKey, base.nodeNum);
226
+ };
227
+
228
+ /*
229
+ * Append toc to target element
230
+ * title, title enable clicked, toc element scroll
231
+ */
232
+ base.createToc = function() {
233
+ base.$target = $(base.options.tocTarget);
234
+ base.$toc = $('<div class="er_toc_content"></div>').html(base.toc);
235
+
236
+ if (!base.$target.length) {
237
+ base.$target = $('<div></div>').prependTo(base.$this);
238
+ }
239
+ if (base.options.tocClass) {
240
+ base.$target.addClass(base.options.tocClass);
241
+ }
242
+
243
+ base.$target.append(base.$toc);
244
+
245
+ // set toc title
246
+ var title = $.trim(base.options.tocTitle);
247
+
248
+ if (title.length) {
249
+ var $title = $('<div></div>').html(title).append('<span></span>'),
250
+ hasTitleClass = base.options.tocTitleClass.length;
251
+
252
+ if (hasTitleClass) {
253
+ $title.addClass(base.options.tocTitleClass);
254
+ }
255
+
256
+ // bind hide show event
257
+ if (true === base.options.tocControl) {
258
+ var titleOpenClass = hasTitleClass ? base.options.tocTitleClass + '_open' : 'er_toc_title_open',
259
+ titleCloseClass = hasTitleClass ? base.options.tocTitleClass + '_close' : 'er_toc_title_close';
260
+
261
+ $title.css('cursor', 'pointer').click(function() {
262
+ if ($(this).hasClass(titleOpenClass)) {
263
+ $(this).removeClass(titleOpenClass).addClass(titleCloseClass);
264
+ base.$toc.slideUp();
265
+ } else {
266
+ $(this).removeClass(titleCloseClass).addClass(titleOpenClass);
267
+ base.$toc.slideDown();
268
+ }
269
+ }).click();
270
+ }
271
+
272
+ $title.prependTo(base.$target);
273
+ }
274
+
275
+ // binkd click scroll when toc scroll is enabled
276
+ if (base.options.tocScroll) {
277
+ base.$toc.find('a').click(function() {
278
+ base.$body.animate({scrollTop: ($($(this).attr('href')).offset().top - base.options.goTopBaseHeight)}, base.options.scrollSpeed);
279
+ return false;
280
+ });
281
+ }
282
+ };
283
+
284
+ /*
285
+ * Bind goTop action to nodes which can random, all, custom elements
286
+ */
287
+ base.addGoTop = function() {
288
+ var top,
289
+ goTop,
290
+ text = (true === base.options.goTop) ? 'Top' : base.options.goTop;
291
+
292
+ if ('all' === base.options.goTopNodes) {
293
+ goTop = base.$nodes;
294
+ } else if ('auto' === base.options.goTopNodes) {
295
+ var currentTop,
296
+ filterNodes = [],
297
+ lastTop = 0,
298
+ preTop = base.getPositionToTop(base.$this),
299
+ depth = Math.round(base.$this.height() / base.$nodes.length);
300
+
301
+ if (base.options.goTopDepth > depth) {
302
+ depth = base.options.goTopDepth;
303
+ }
304
+
305
+ base.$nodes.each(function(i) {
306
+ currentTop = $(this).position().top - lastTop;
307
+
308
+ if (0 == i) {
309
+ currentTop += preTop;
310
+ }
311
+
312
+ if (currentTop >= depth) {
313
+ filterNodes.push('#' + $(this).attr('id'));
314
+ lastTop = $(this).position().top;
315
+ }
316
+ });
317
+
318
+ if (filterNodes.length) {
319
+ goTop = base.$nodes.filter(filterNodes.join(', '));
320
+ }
321
+ } else {
322
+ goTop = base.$nodes.filter(base.options.goTopNodes);
323
+ }
324
+
325
+ top = $('<a href="#" class="' + base.options.goTopClass + '" title="' + text + '">' + text + '</a>');
326
+ goTop.append(top);
327
+ goTop.children('a.' + base.options.goTopClass).click(function() {
328
+ base.$body.animate({scrollTop: (base.$topNode.offset().top - base.options.goTopBaseHeight)}, base.options.scrollSpeed);
329
+ return false;
330
+ });
331
+ };
332
+
333
+ /*
334
+ * Get node element in which level
335
+ */
336
+ base.getLevel = function(node) {
337
+ var n;
338
+
339
+ if (base.nodes.ids.length) {
340
+ n = node.get(0).nodeName.toLowerCase();
341
+
342
+ if ($.inArray(n, base.nodes.ids) >= 0) {
343
+ return base.nodes.sorts.ids[n];
344
+ }
345
+ }
346
+
347
+ if (base.nodes.classes.length) {
348
+ for(var i in base.nodes.classes) {
349
+ n = base.nodes.classes[i];
350
+
351
+ if (node.hasClass(n)) {
352
+ return base.nodes.sorts.classes[n];
353
+ }
354
+ }
355
+ }
356
+
357
+ return 0;
358
+ };
359
+
360
+ /*
361
+ * Toc output with tieredList
362
+ */
363
+ base.tieredList = function() {
364
+ var exist = $.inArray(base.options.tocListType, ['ul', 'ol']);
365
+ return exist < 0 ? false : true;
366
+ };
367
+
368
+ /*
369
+ * Get current obj to go to the top of the height
370
+ */
371
+ base.getPositionToTop = function($obj) {
372
+ var top = 0, end;
373
+
374
+ while($obj) {
375
+ end = ($obj.data('isGoTopPosition') && 'yes' === $obj.data('isGoTopPosition')) ? true : false;
376
+
377
+ if (!end) {
378
+ top += $obj.position().top;
379
+ $obj = $obj.parent();
380
+ } else {
381
+ $obj = null;
382
+ break;
383
+ }
384
+ }
385
+
386
+ return top;
387
+ };
388
+
389
+ /*
390
+ * Prepare toc each text with link
391
+ */
392
+ base.formatLink = function(node, level, label) {
393
+ var text = node.text(),
394
+ id = node.attr('id') || base.options.nodeIdPrefix + base.nodeNum,
395
+ style = (base.tiered ? '' : ' class="' + base.options.tocClassPrefix + level + '"');
396
+
397
+ node.attr('id', id);
398
+ base.nodeNum++;
399
+
400
+ return label + '<a href="#' + id + '" title="' + text + '"' + style + '>' + text + '</a>';
401
+ };
402
+
403
+ /*
404
+ * Format tag with levels
405
+ */
406
+ base.formatLevel = function(level, last) {
407
+ if (true !== last) {
408
+ last = false;
409
+ }
410
+
411
+ var output = (level > base.currentLevel) ? base.formatTag(base.currentLevel, level, !last) : base.formatTag(level, base.currentLevel) + ((true === last) ? base.formatTag(0, base.currentLevel) : base.listEC + base.listEO);
412
+
413
+ return output;
414
+ };
415
+
416
+ /*
417
+ * Format tag
418
+ * <ul><li>, </ul><ul>, </li><li>
419
+ */
420
+ base.formatTag = function(start, end, open) {
421
+ var tags = [];
422
+
423
+ if (true !== open) {
424
+ open = false;
425
+ }
426
+
427
+ for (var i = start; i < end; i++) {
428
+ tags.push(open ? base.listO : base.listC);
429
+ }
430
+
431
+ return (open ? tags.join(base.listEO) + base.listEO : base.listEC + tags.join(base.listEC));
432
+ };
433
+
434
+ // ready go
435
+ base.init();
436
+ };
437
+
438
+ /*
439
+ * erToc default options
440
+ */
441
+ $.erToc.defaults = {
442
+ startLevel: 'h5', // node name, class or node array subscript [0|1]...n
443
+ maxLevel: 'h6', // node name, class or node array subscript [0|1]...n
444
+ nodes: ['h5', 'h6'], // nodes for prepare toc, support class ['.p1', '.p2', '.p3', '.p4', '.p5', '.p6']
445
+ nodeMin: 0, // min nodes for toc
446
+ nodeMax: 0, // max nodes for toc
447
+ nodeClass: 'er_toc_tag',
448
+ nodeIdPrefix: 'er-toc-id-',
449
+ tocTarget: '', // which element the toc will be append
450
+ tocClass: 'er_toc',
451
+ tocTitle: 'Table of Contents', // title for toc, if set empty string, then title will be hidden
452
+ tocTitleClass: 'er_toc_title',
453
+ tocListType: 'ul', // toc output type, ul, li, others will only include text with link
454
+ tocControl: true, // if have toc title, then can set true to control toc hide or show
455
+ tocClassPrefix: 'er_toc_level_',
456
+ tocScroll: true, // enable toc can be scroll, true or false
457
+ goTop: true, // enable go to top action, true or false
458
+ goTopBaseHeight: 0, //if the top is floating to fixed, then it should reduce the height of the top
459
+ goTopNodes: 'auto', // bind to which nodes, auto, all, and custom elements
460
+ goTopDepth: 450, // if go to top nodes was set auto, then here is the depth for two elements
461
+ goTopClass: 'er_toc_top',
462
+ goTopNode: 'body', // go to top element
463
+ scrollSpeed: 1000, // scroll speed, n seconds, slow, fast
464
+ nodeNumKey: 'erTocNodeNum',
465
+ numbered: false,
466
+ numberedJoin: '.',
467
+ numberedPrefix: '',
468
+ numberedSuffix: ' '
469
+ };
470
+
471
+ $.fn.erToc = function(options) {
472
+ return this.each(function(i){
473
+ (new $.erToc(this, options));
474
+ });
475
+ };
476
+
477
+ })(jQuery);