proscribe 0.0.4 → 0.0.5

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.
data/HISTORY.md CHANGED
@@ -1,3 +1,9 @@
1
+ v0.0.5 - Aug 01, 2011
2
+ ---------------------
3
+
4
+ ### Added:
5
+ * Searching.
6
+
1
7
  v0.0.4 - Aug 01, 2011
2
8
  ---------------------
3
9
 
@@ -0,0 +1,25 @@
1
+ # Subject to debate.
2
+ task :default do
3
+ exec 'rake -s -T'
4
+ end
5
+
6
+ desc "Runs tests."
7
+ task :test do
8
+ $:.unshift File.join(File.dirname(__FILE__), 'test')
9
+
10
+ Dir['test/{unit,stories}/*.rb'].each { |file| load file }
11
+ end
12
+
13
+ namespace :doc do
14
+ desc "Update documentation."
15
+ task :update do
16
+ # gem proscribe ~> 0.0.2
17
+ system "proscribe build"
18
+ end
19
+
20
+ desc "Updates the Aura homepage with the manual."
21
+ task :deploy => :update do
22
+ # http://github.com/rstacruz/git-update-ghpages
23
+ system "git update-ghpages rstacruz/proscribe --branch gh-pages -i doc/"
24
+ end
25
+ end
@@ -4,7 +4,7 @@ module Proton::Helpers
4
4
  of_type = lambda { |str| children.select { |p| p.html? && p.meta.page_type == str } }
5
5
 
6
6
  children.
7
- select { |p| p.html? }.
7
+ select { |p| p.html? && p.path =~ /.html$/ }.
8
8
  group_by { |p|
9
9
  type = p.meta.page_type
10
10
  type.nil? ? nil : Inflector[type].pluralize.to_sym
@@ -20,7 +20,8 @@
20
20
 
21
21
  %script{src: 'http://cachedcommons.org/cache/prettify/1.0.0/javascripts/prettify-min.js', type: 'text/javascript'}
22
22
  %script{src: 'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.2/jquery.min.js', type: 'text/javascript'}
23
- %script{src: rel('/proscribe.js')+"?#{File.mtime(Proton::Page['/proscribe.js'].file).to_i}", type: 'text/javascript'}
23
+ %script{src: rel('/underscore.js')+"?#{File.mtime(Proton::Page['/underscore.js'].file).to_i}", type: 'text/javascript'}
24
+ %script#proscribe-js{src: rel('/proscribe.js')+"?#{File.mtime(Proton::Page['/proscribe.js'].file).to_i}", type: 'text/javascript'}
24
25
  %body
25
26
  #top
26
27
  %a#logo{href: rel('/')}
@@ -28,6 +29,10 @@
28
29
 
29
30
  #area
30
31
  #content
32
+ %section#search
33
+ %input{type: "text", placeholder: "Search..."}
34
+ %ul.results
35
+
31
36
  %div.c
32
37
  #crumbs
33
38
  - page.breadcrumbs[0..-2].each do |p|
@@ -79,7 +84,7 @@
79
84
 
80
85
  %nav#nav
81
86
  - parent = (page.children.any? ? page : (page.parent || page))
82
- - children = parent.children.select { |p| p.html? }
87
+ - children = parent.children.select { |p| p.html? && p.path =~ /.html$/ }
83
88
  - groups = children.group_by { |p| p.meta.page_type }
84
89
 
85
90
  - if parent && !parent.root?
@@ -110,3 +115,4 @@
110
115
  %a{href: rel(pp.path), class: classes.join(' ')}
111
116
  = pp
112
117
 
118
+ %script{src: rel('/search_index.js')+"?#{Time.now.to_i}", type: 'text/javascript'}
@@ -1,4 +1,6 @@
1
1
  $(function () {
2
+ var urlPrefix = $("#proscribe-js").attr('src').match(/^(.*)\/[^.]+.js[\?0-9]*/)[1];
3
+
2
4
  $("h4").each(function() {
3
5
  var $this = $(this);
4
6
 
@@ -47,6 +49,111 @@ $(function () {
47
49
  }
48
50
  });
49
51
 
52
+ function searchToPages(dict) {
53
+ // {"0":4, "1":5} -- this is a pair of `page_id` => `result_score`.
54
+
55
+ list = _.map(dict, function(val, key) { return [key, val]; }); // {a:2} => [[a,2]] (pageid => score)
56
+ list = _.sortBy(list, function(a) { return -1 * a[1]; });
57
+ ids = _.map(list, function(a) { return parseInt(a[0]); }); // Basically Hash#keys, now an array of page_id's
58
+ return _.map(ids, function(id) { return PageIndex[id] });
59
+ }
60
+
61
+ function search(keyword) {
62
+ var words = keyword.toLowerCase().split(' ');
63
+
64
+ var results = {};
65
+ _.each(words, function(word) {
66
+ results = SearchIndex[word];
67
+ });
68
+
69
+ return searchToPages(results);
70
+ }
71
+
72
+ window.search = search;
73
+
74
+ $("#search input").live('keyup', function(e) {
75
+ if (e.keyCode == 13) {
76
+ var $a = $("#search .results > .active a");
77
+ if ($a.length) {
78
+ window.location = $a.attr('href');
79
+ return false;
80
+ };
81
+ }
82
+ if ((e.keyCode == 40) || (e.keyCode == 38)) { // DOWN and UP
83
+ var dir = e.keyCode == 40 ? 'next' : 'prev';
84
+
85
+ var links = $("#search .results li");
86
+ var active = $("#search .results .active");
87
+ var next = active[dir]();
88
+
89
+ if (active.length && next.length) {
90
+ active.removeClass('active');
91
+ next.addClass('active');
92
+ }
93
+
94
+ return false;
95
+ }
96
+
97
+ var template = _.template(
98
+ "<li>" +
99
+ "<a href='<%= url %>'>" +
100
+ "<strong>" +
101
+ "<%= title %> <span><%= type %></span>" +
102
+ "</strong>" +
103
+ "<span>" +
104
+ "<% if (parent) { %>" +
105
+ "<%= parent.title %> &rsaquo; <%= title %>" +
106
+ "<% } %>" +
107
+ "</span>" +
108
+ "</a>" +
109
+ "</li>");
110
+ var keyword = $(this).val();
111
+ results = search(keyword); // Array of {title: __, url: __}
112
+
113
+ var $el = $("#search .results");
114
+ $el.show();
115
+ $el.html('');
116
+
117
+
118
+ // Limit results
119
+ results = results.slice(0, 12);
120
+
121
+ _.each(results, function(page) {
122
+ // Build the options for the tempalte
123
+ o = _.extend({}, page);
124
+
125
+ _.each(keyword.split(' '), function(word) {
126
+ console.log("Replacing ", word, " in ", o.title);
127
+ o.title = o.title.replace(new RegExp(word, 'i'), function (n) {
128
+ return "<em class='highlight'>" + n + "</em>";
129
+ });
130
+ });
131
+
132
+ o.url = urlPrefix + page.url;
133
+ o.parent = PageIndex[page.parent];
134
+
135
+ $el.append(template(o));
136
+ });
137
+
138
+ $el.find(':first-child').addClass('active');
139
+ });
140
+
141
+ $("#search .results li").live('hover', function() {
142
+ var $results = $(this).closest('ul');
143
+ $results.find('.active').removeClass('active');
144
+ $(this).addClass('active');
145
+ });
146
+
147
+ $("#search .results").live('mouseout', function() {
148
+ var $results = $(this);
149
+ $results.find('.active').removeClass('active');
150
+ $results.find('>:first-child').addClass('active');
151
+ });
152
+
153
+
154
+ $("body").live('click', function() {
155
+ $("#search .results").hide();
156
+ });
157
+
50
158
  prettyPrint();
51
159
  });
52
-
@@ -0,0 +1,43 @@
1
+ layout: false
2
+ --
3
+ <%
4
+ require 'json'
5
+ stopwords = %w(a an and are as at be but by for if in into is) +
6
+ %w(it no not of on or s such t that the their then) +
7
+ %w(there these they this to was will with) +
8
+ %w(class method return end if else)
9
+
10
+ pages = page.project.pages.select { |p| p.html? && p != page && !p.root? }
11
+ index = Hash.new { |hash, k| hash[k] = Hash.new { |hh, kk| hh[kk] = 0 } }
12
+ words = lambda { |str| str.to_s.downcase.scan(/[A-Za-z0-9\_]+/) }
13
+ fuzzies = lambda { |str| str = str.to_s.downcase; (1...str.size).map { |n| str[0..n] } }
14
+ fuzzy_words = lambda { |str|
15
+ words[str].map { |word| fuzzies[word] if word.size > 2 and !stopwords.include?(word) }.compact.flatten
16
+ }
17
+
18
+ urls = pages.map { |p| p.path }
19
+
20
+ page_index = pages.inject([]) { |h, p| h << { :title => p.to_s, :url => p.path, :type => p.meta.page_type.to_s.capitalize || '', :parent => (urls.index(p.parent.path) if p.parent?) }; h }
21
+
22
+ pages.each do |p|
23
+ i = urls.index(p.path)
24
+
25
+ if p.to_s.count(' ') > 0
26
+ # Partial title match
27
+ fuzzy_words[p].each { |word| index[word][i] += 30 }
28
+
29
+ else
30
+ # Exact title match
31
+ fuzzy_words[p].each { |word| index[word][i] += 60 }
32
+ end
33
+
34
+ # Fuzzy title match
35
+ fuzzy_words[p].each { |word| index[word][i] += 3 }
36
+
37
+ # p content
38
+ fuzzy_words[p.content].each { |word| index[word][i] += 1 }
39
+ end
40
+ %>
41
+
42
+ window.SearchIndex = (<%= index.to_json %>);
43
+ window.PageIndex = (<%= page_index.to_json %>);
@@ -492,6 +492,68 @@ section.footer {
492
492
  font-style: normal; }
493
493
  }
494
494
 
495
+ // Search
496
+ #search {
497
+ position: absolute; right: 0; top: -32px; z-index: 10;
498
+ float: right;
499
+
500
+ form {
501
+ display: inline; }
502
+
503
+ input {
504
+ padding: 2px 10px; height: 18px; background: white;
505
+ width: 130px;
506
+ border: 0;
507
+ background: #ddd;
508
+ @include border-radius(13px);
509
+ @include box-shadow(-1px -1px 0 rgba(black, 0.2), inset 0 0 2px rgba(black, 0.1)); }
510
+
511
+ input:active, input:focus {
512
+ @include box-shadow(0 0 4px #7bd, inset 0 0 4px rgba(#7bd, 0.6));
513
+ background: white; color: #333;
514
+ outline: 0; }
515
+
516
+ .results {
517
+ display: none;
518
+ background: white;
519
+ font-size: 7pt;
520
+ width: 200px;
521
+ position: absolute; top: 32px; right: 0;
522
+ z-index: 20;
523
+
524
+ @include box-shadow(2px 2px 0 rgba(black, 0.1), 0 0 2px rgba(black, 0.08));
525
+
526
+ em.highlight {
527
+ color: #a96; background: #fefee8; }
528
+
529
+ &, li { list-style-type: none; margin: 0; padding: 0; }
530
+
531
+ li {
532
+ border-bottom: solid 1px #eee; }
533
+
534
+ a {
535
+ height: 3.2em; overflow: hidden;
536
+ display: block; padding: 5px 10px; color: #999; }
537
+
538
+ a span {
539
+ color: #aaa; }
540
+
541
+ li.active a {
542
+ background: #eee; color: #444; }
543
+
544
+ strong {
545
+ overflow: hidden;
546
+ display: block; font-weight: bold; font-size: 8pt;
547
+ color: #333; }
548
+
549
+ strong span {
550
+ float: right;
551
+ font-size: 7pt;
552
+ margin-top: 1px;
553
+ color: #999; font-weight: normal; }
554
+ }
555
+ }
556
+
495
557
  //
496
558
  // Prettify
497
559
  //
@@ -0,0 +1,27 @@
1
+ // Underscore.js 1.1.7
2
+ // (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.
3
+ // Underscore is freely distributable under the MIT license.
4
+ // Portions of Underscore are inspired or borrowed from Prototype,
5
+ // Oliver Steele's Functional, and John Resig's Micro-Templating.
6
+ // For all details and documentation:
7
+ // http://documentcloud.github.com/underscore
8
+ (function(){var p=this,C=p._,m={},i=Array.prototype,n=Object.prototype,f=i.slice,D=i.unshift,E=n.toString,l=n.hasOwnProperty,s=i.forEach,t=i.map,u=i.reduce,v=i.reduceRight,w=i.filter,x=i.every,y=i.some,o=i.indexOf,z=i.lastIndexOf;n=Array.isArray;var F=Object.keys,q=Function.prototype.bind,b=function(a){return new j(a)};typeof module!=="undefined"&&module.exports?(module.exports=b,b._=b):p._=b;b.VERSION="1.1.7";var h=b.each=b.forEach=function(a,c,b){if(a!=null)if(s&&a.forEach===s)a.forEach(c,b);else if(a.length===
9
+ +a.length)for(var e=0,k=a.length;e<k;e++){if(e in a&&c.call(b,a[e],e,a)===m)break}else for(e in a)if(l.call(a,e)&&c.call(b,a[e],e,a)===m)break};b.map=function(a,c,b){var e=[];if(a==null)return e;if(t&&a.map===t)return a.map(c,b);h(a,function(a,g,G){e[e.length]=c.call(b,a,g,G)});return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var k=d!==void 0;a==null&&(a=[]);if(u&&a.reduce===u)return e&&(c=b.bind(c,e)),k?a.reduce(c,d):a.reduce(c);h(a,function(a,b,f){k?d=c.call(e,d,a,b,f):(d=a,k=!0)});if(!k)throw new TypeError("Reduce of empty array with no initial value");
10
+ return d};b.reduceRight=b.foldr=function(a,c,d,e){a==null&&(a=[]);if(v&&a.reduceRight===v)return e&&(c=b.bind(c,e)),d!==void 0?a.reduceRight(c,d):a.reduceRight(c);a=(b.isArray(a)?a.slice():b.toArray(a)).reverse();return b.reduce(a,c,d,e)};b.find=b.detect=function(a,c,b){var e;A(a,function(a,g,f){if(c.call(b,a,g,f))return e=a,!0});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(w&&a.filter===w)return a.filter(c,b);h(a,function(a,g,f){c.call(b,a,g,f)&&(e[e.length]=a)});return e};
11
+ b.reject=function(a,c,b){var e=[];if(a==null)return e;h(a,function(a,g,f){c.call(b,a,g,f)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=!0;if(a==null)return e;if(x&&a.every===x)return a.every(c,b);h(a,function(a,g,f){if(!(e=e&&c.call(b,a,g,f)))return m});return e};var A=b.some=b.any=function(a,c,d){c=c||b.identity;var e=!1;if(a==null)return e;if(y&&a.some===y)return a.some(c,d);h(a,function(a,b,f){if(e|=c.call(d,a,b,f))return m});return!!e};b.include=b.contains=function(a,c){var b=
12
+ !1;if(a==null)return b;if(o&&a.indexOf===o)return a.indexOf(c)!=-1;A(a,function(a){if(b=a===c)return!0});return b};b.invoke=function(a,c){var d=f.call(arguments,2);return b.map(a,function(a){return(c.call?c||a:a[c]).apply(a,d)})};b.pluck=function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};h(a,function(a,b,f){b=c?c.call(d,a,b,f):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,
13
+ c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};h(a,function(a,b,f){b=c?c.call(d,a,b,f):a;b<e.computed&&(e={value:a,computed:b})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,f){return{value:a,criteria:c.call(d,a,b,f)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,b){var d={};h(a,function(a,f){var g=b(a,f);(d[g]||(d[g]=[])).push(a)});return d};b.sortedIndex=function(a,c,d){d||
14
+ (d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return f.call(a);if(b.isArguments(a))return f.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?f.call(a,0,b):a[0]};b.rest=b.tail=function(a,b,d){return f.call(a,b==null||d?1:b)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.filter(a,
15
+ function(a){return!!a})};b.flatten=function(a){return b.reduce(a,function(a,d){if(b.isArray(d))return a.concat(b.flatten(d));a[a.length]=d;return a},[])};b.without=function(a){return b.difference(a,f.call(arguments,1))};b.uniq=b.unique=function(a,c){return b.reduce(a,function(a,e,f){if(0==f||(c===!0?b.last(a)!=e:!b.include(a,e)))a[a.length]=e;return a},[])};b.union=function(){return b.uniq(b.flatten(arguments))};b.intersection=b.intersect=function(a){var c=f.call(arguments,1);return b.filter(b.uniq(a),
16
+ function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a,c){return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=f.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(o&&a.indexOf===o)return a.indexOf(c);d=0;for(e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,
17
+ b){if(a==null)return-1;if(z&&a.lastIndexOf===z)return a.lastIndexOf(b);for(var d=a.length;d--;)if(a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);d=arguments[2]||1;for(var e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};b.bind=function(a,b){if(a.bind===q&&q)return q.apply(a,f.call(arguments,1));var d=f.call(arguments,2);return function(){return a.apply(b,d.concat(f.call(arguments)))}};b.bindAll=function(a){var c=f.call(arguments,1);
18
+ c.length==0&&(c=b.functions(a));h(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,c){var d={};c||(c=b.identity);return function(){var b=c.apply(this,arguments);return l.call(d,b)?d[b]:d[b]=a.apply(this,arguments)}};b.delay=function(a,b){var d=f.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(f.call(arguments,1)))};var B=function(a,b,d){var e;return function(){var f=this,g=arguments,h=function(){e=null;
19
+ a.apply(f,g)};d&&clearTimeout(e);if(d||!e)e=setTimeout(h,b)}};b.throttle=function(a,b){return B(a,b,!1)};b.debounce=function(a,b){return B(a,b,!0)};b.once=function(a){var b=!1,d;return function(){if(b)return d;b=!0;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(f.call(arguments));return b.apply(this,d)}};b.compose=function(){var a=f.call(arguments);return function(){for(var b=f.call(arguments),d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=
20
+ function(a,b){return function(){if(--a<1)return b.apply(this,arguments)}};b.keys=F||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)l.call(a,d)&&(b[b.length]=d);return b};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){h(f.call(arguments,1),function(b){for(var d in b)b[d]!==void 0&&(a[d]=b[d])});return a};b.defaults=function(a){h(f.call(arguments,
21
+ 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,c){if(a===c)return!0;var d=typeof a;if(d!=typeof c)return!1;if(a==c)return!0;if(!a&&c||a&&!c)return!1;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual)return a.isEqual(c);if(c.isEqual)return c.isEqual(a);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return!1;
22
+ if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return!1;if(a.length&&a.length!==c.length)return!1;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return!1;for(var f in a)if(!(f in c)||!b.isEqual(a[f],c[f]))return!1;return!0};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(l.call(a,c))return!1;return!0};b.isElement=function(a){return!!(a&&a.nodeType==
23
+ 1)};b.isArray=n||function(a){return E.call(a)==="[object Array]"};b.isObject=function(a){return a===Object(a)};b.isArguments=function(a){return!(!a||!l.call(a,"callee"))};b.isFunction=function(a){return!(!a||!a.constructor||!a.call||!a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return!!(a===0||a&&a.toExponential&&a.toFixed)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===!0||a===!1};b.isDate=function(a){return!(!a||!a.getTimezoneOffset||
24
+ !a.setUTCFullYear)};b.isRegExp=function(a){return!(!a||!a.test||!a.exec||!(a.ignoreCase||a.ignoreCase===!1))};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.noConflict=function(){p._=C;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.mixin=function(a){h(b.functions(a),function(c){H(c,b[c]=a[c])})};var I=0;b.uniqueId=function(a){var b=I++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g};
25
+ b.template=function(a,c){var d=b.templateSettings;d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.interpolate,function(a,b){return"',"+b.replace(/\\'/g,"'")+",'"}).replace(d.evaluate||null,function(a,b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');";d=new Function("obj",d);return c?d(c):d};
26
+ var j=function(a){this._wrapped=a};b.prototype=j.prototype;var r=function(a,c){return c?b(a).chain():a},H=function(a,c){j.prototype[a]=function(){var a=f.call(arguments);D.call(a,this._wrapped);return r(c.apply(b,a),this._chain)}};b.mixin(b);h(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=i[a];j.prototype[a]=function(){b.apply(this._wrapped,arguments);return r(this._wrapped,this._chain)}});h(["concat","join","slice"],function(a){var b=i[a];j.prototype[a]=function(){return r(b.apply(this._wrapped,
27
+ arguments),this._chain)}});j.prototype.chain=function(){this._chain=!0;return this};j.prototype.value=function(){return this._wrapped}})();
@@ -6,6 +6,6 @@ module ProScribe
6
6
  # ProScribe.version #=> "0.0.2"
7
7
  #
8
8
  def self.version
9
- "0.0.4"
9
+ "0.0.5"
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proscribe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hashie
17
- requirement: &2154058100 !ruby/object:Gem::Requirement
17
+ requirement: &2165749740 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2154058100
25
+ version_requirements: *2165749740
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: shake
28
- requirement: &2154057600 !ruby/object:Gem::Requirement
28
+ requirement: &2165749240 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.1.2
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2154057600
36
+ version_requirements: *2165749240
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: tilt
39
- requirement: &2164403120 !ruby/object:Gem::Requirement
39
+ requirement: &2165748780 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.3.2
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2164403120
47
+ version_requirements: *2165748780
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: proton
50
- requirement: &2164402660 !ruby/object:Gem::Requirement
50
+ requirement: &2165748320 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.3.4
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2164402660
58
+ version_requirements: *2165748320
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: fssm
61
- requirement: &2164402200 !ruby/object:Gem::Requirement
61
+ requirement: &2165747860 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.2.7
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2164402200
69
+ version_requirements: *2165747860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rdiscount
72
- requirement: &2164401740 !ruby/object:Gem::Requirement
72
+ requirement: &2165747400 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: 1.6.8
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2164401740
80
+ version_requirements: *2165747400
81
81
  description: Build some documentation for your projects of any language.
82
82
  email:
83
83
  - rico@sinefunc.com
@@ -90,6 +90,7 @@ files:
90
90
  - Gemfile
91
91
  - HISTORY.md
92
92
  - README.md
93
+ - Rakefile
93
94
  - Scribefile
94
95
  - bin/proscribe
95
96
  - data/default/Gemfile
@@ -99,7 +100,9 @@ files:
99
100
  - data/default/_layouts/_subindex.haml
100
101
  - data/default/_layouts/default.haml
101
102
  - data/default/proscribe.js
103
+ - data/default/search_index.js.erb
102
104
  - data/default/style.scss
105
+ - data/default/underscore.js
103
106
  - data/rack/config.ru
104
107
  - lib/proscribe.rb
105
108
  - lib/proscribe/cli.rb