madness 0.0.7 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 522b6812a30a5263c3860e0dd78d9d516d75142e
4
- data.tar.gz: dec8f6ee48993a3f02318bd43f3469897544c72a
3
+ metadata.gz: 6a993c5b2a6cb0783cb9ad3dde72db4c5142e56a
4
+ data.tar.gz: 80907e9259ada12a01a70b2a14894a9954e7a8c7
5
5
  SHA512:
6
- metadata.gz: c23ac24a8659d80b208020c332c32166d1066874392dd1a1ecf5ff8619a1610caf3832f122b5d40c1c7cd9a58db195529e3585ae16b6b9fd2a30126882720685
7
- data.tar.gz: e757685713c3379b1cf91f2cb55721b536fb2bb76434a451cf8be4fd3659674cf4066b15173e5cf25562849c40511db0110f111d18f6080294625776185686ce
6
+ metadata.gz: 3be0f236806182e99ffb625aa454903222a0b5a67ebf84dbd9f47c2b361ac7df0cb0baf3915f076a1c352c0687872098470b9837132f3bad9ef5cc5c058ceae1
7
+ data.tar.gz: d12e02d9035f96fdf0b2f98157d7269061a4bb252db4475aef2574360313dc6a8e498ccbdce7ef9ef99274353adc1dfc3ba096b995a8da37e56b9a9f0b4df335
data/README.md CHANGED
@@ -20,6 +20,13 @@ Install
20
20
  $ bundle install madness
21
21
 
22
22
 
23
+ Design Intentions
24
+ --------------------------------------------------
25
+
26
+ Madness was designed in order to provide easy browsing, viewing and
27
+ searching for local, markdown based documentation directories.
28
+
29
+
23
30
  Usage
24
31
  --------------------------------------------------
25
32
 
@@ -38,7 +45,7 @@ Directory Conventions
38
45
  Madness expects to be executed in a documentation directory.
39
46
 
40
47
  A documentation directory contains only markdown files (`*.md`) and
41
- subfolders that contain more markdown files.
48
+ sub directories that contain more markdown files.
42
49
 
43
50
  The server will consider the file `README.md` in any directory as the
44
51
  main file describing this directory.
@@ -82,6 +89,20 @@ line_numbers: true
82
89
  ```
83
90
 
84
91
 
92
+ Search
93
+ --------------------------------------------------
94
+
95
+ Madness comes with a full text search page. To activate it, you need to
96
+ generate a search index by running `madness --index` or
97
+ `madness path/to/docs --index`.
98
+
99
+ This will create an `_index` sub folder, and will add a new search page
100
+ to your documentation server.
101
+
102
+ You will need to run this command from time to time, as your
103
+ documents change or new documents are added.
104
+
105
+
85
106
  Tips
86
107
  --------------------------------------------------
87
108
 
@@ -197,6 +197,20 @@ kbd {
197
197
  border-radius: 3px;
198
198
  box-shadow: inset 0 -1px 0 #bbb; }
199
199
 
200
+ .search-form {
201
+ margin-bottom: 20px; }
202
+
203
+ .search-field {
204
+ outline: none;
205
+ padding: 8px 12px;
206
+ font-size: 1.5em;
207
+ width: 50%;
208
+ min-width: 200px;
209
+ border: #ccc 1px solid;
210
+ border-radius: 3px; }
211
+ .search-field:focus {
212
+ border-color: #4078c0; }
213
+
200
214
  * {
201
215
  box-sizing: border-box; }
202
216
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "mappings": "AAAA,IAAK;EACH,oBAAoB,EAAE,IAAI;EAC1B,wBAAwB,EAAE,IAAI;EAC9B,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,8HAA8H;EAC3I,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,UAAU;;AAGvB,eAAgB;EACd,WAAW,EAAE,MAAM;;AAGrB,sBAAuB;EACrB,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,IAAI;EACnB,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,GAAG;;AAGlB,EAAG;EACD,MAAM,EAAE,QAAQ;EAChB,cAAc,EAAE,KAAK;EACrB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,cAAc;;AAG/B,EAAG;EACD,cAAc,EAAE,KAAK;EACrB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,KAAK;EAClB,aAAa,EAAE,cAAc;;AAG/B,EAAG;EACD,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,SAAS,EAAE,MAAM;;AAGnB,EAAG;EACD,SAAS,EAAE,GAAG;;AAGhB,EAAG;EACD,SAAS,EAAE,GAAG;EACd,KAAK,EAAE,IAAI;;AAGb,cAAe;EACb,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;AAGhB,cAAe;EACb,WAAW,EAAE,sDAAsD;;AC5DrE,KAAM;EACJ,cAAc,EAAE,CAAC;EACjB,eAAe,EAAE,QAAQ;EAEzB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,IAAI;EACd,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,QAAQ;EAEpB,QAAG;IACD,WAAW,EAAE,IAAI;EAGnB,kBAAO;IACL,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,cAAc;EAGxB,QAAG;IACD,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,cAAc;EAG5B,sBAAiB;IACf,gBAAgB,EAAE,OAAO;;ACzB7B,CAAE;EACA,4BAA4B,EAAE,OAAO;EAErC,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;EAErB,iBAAkB;IAChB,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,SAAS;EAG5B,aAAc;IACZ,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;;ACbzB,MAAO;EACL,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAEhB,YAAY,EAAE,GAAG;;AAGnB,YAAa;EACX,eAAe,EAAE,WAAW;;AAG9B,sCAAuC;EACrC,eAAe,EAAE,WAAW;;AAG9B,0BAA2B;EACzB,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;;AAGlB,EAAG;EACD,WAAW,EAAE,CAAC;;AAGhB,EAAG;EACD,OAAO,EAAE,CAAC;EAEV,KAAG;IACD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,IAAI;EAGnB,KAAG;IACD,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,IAAI;;AAIvB,MAAK;EACH,UAAU,EAAE,IAAI;;AC1ClB,IAAK;EACH,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,KAAK;EAClB,cAAc,EAAE,KAAK;EACrB,MAAM,EAAE,CAAC;EAET,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,GAAG;EAElB,uBAAkB;IAChB,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,OAAO;;AAIpB,GAAI;EAKF,QAAQ,EAAE,IAAI;EAEd,WAAW,EAAE,IAAI;EAGjB,SAAS,EAAE,MAAM;EAEjB,UAAO;IACL,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,CAAC;EAGX,QAAK;IACH,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,MAAM;IACjB,gBAAgB,EAAE,WAAW;IAC7B,MAAM,EAAE,CAAC;EAGX;gBACW;IACT,OAAO,EAAE,MAAM;;ACnDnB,eAAgB;EACd,UAAU,EAAE,IAAI;;AAGlB,aAAc;EACZ,aAAa,EAAE,CAAC;EAChB,iBAAI;IACF,aAAa,EAAE,CAAC;;ACPpB,GAAI;EACF,YAAY,EAAE,IAAI;EAElB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,WAAW;EACvB,gBAAgB,EAAE,IAAI;;ACLxB,EAAG;EACD,UAAU,EAAE,WAAW;EAEvB,QAAQ,EAAE,OAAO;EACjB,MAAM,EAAE,CAAC;EAET,QAAQ,EAAE,MAAM;EAEhB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,cAAc;EAE7B,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,MAAM;EACd,gBAAgB,EAAE,OAAO;EAGzB,mBAAmB,EAAE,IAAI;EAEzB,UAAU;IACR,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;EAEb,SAAS;IACP,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;;AC1Bf,GAAI;EACF,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,MAAM;EACtB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,cAAc;EACtB,mBAAmB,EAAE,IAAI;EACzB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,mBAAmB;;ACXjC,CAAE;EACA,UAAU,EAAE,UAAU;;AAGxB,CAAE;EACA,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI;;AAGrB,UAAW;EACT,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,MAAM;EACf,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,cAAc;EAE3B,yBAAe;IACb,UAAU,EAAE,CAAC;EAGf,wBAAc;IACZ,aAAa,EAAE,CAAC;;AAIpB,qCAAsC;EACpC,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI;;ACxBrB,IAAK;EACH,SAAS,EAAE,MAAM;EACjB,MAAM,EAAE,MAAM;;AAGhB,IAAK;EACH,OAAO,EAAE,iBAAiB;EAC1B,WAAW,EAAE,KAAK;EAClB,MAAM,EAAC,cAAc;EACrB,YAAY,EAAE,KAAK;EACnB,UAAU,EAAE,KAAK;EAEjB,uBAAkB;IAChB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;;AAQf,YAAa;EACX,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,cAAc;EAC7B,cAAE;IACA,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,KAAK;;AAIlB,GAAI;EACF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,KAAK;EACf,OAAO,EAAE,cAAc;EACvB,YAAY,EAAE,cAAc;EAC5B,eAAQ;IAIN,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,iBAAiB;IAC1B,aAAa,EAAE,GAAG;IALlB,2BAAQ;MACN,UAAU,EAAE,OAAO;;AASzB,mBAAoB;EAClB,KAAK,EAAE,GAAG;;AAEZ,yBAA0B;EACxB,UAAU,EAAE,IAAI;EAChB,qBAAqB,EAAE,GAAG",
4
- "sources": ["../../styles/_typography.scss","../../styles/_table.scss","../../styles/_anchor.scss","../../styles/_list.scss","../../styles/_code.scss","../../styles/_coderay.scss","../../styles/_image.scss","../../styles/_line.scss","../../styles/_keyboard.scss","../../styles/_general.scss","../../styles/main.scss"],
3
+ "mappings": "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",
4
+ "sources": ["../../styles/_typography.scss","../../styles/_table.scss","../../styles/_anchor.scss","../../styles/_list.scss","../../styles/_code.scss","../../styles/_coderay.scss","../../styles/_image.scss","../../styles/_line.scss","../../styles/_keyboard.scss","../../styles/_search.scss","../../styles/_general.scss","../../styles/main.scss"],
5
5
  "names": [],
6
6
  "file": "main.css"
7
7
  }
@@ -27,14 +27,3 @@ p, blockquote, ul, ol, dl, table, pre {
27
27
  margin-bottom: 16px;
28
28
  }
29
29
 
30
- // &:before {
31
- // display: table;
32
- // content: "";
33
- // }
34
-
35
- // &:after {
36
- // display: table;
37
- // clear: both;
38
- // content: "";
39
- // }
40
-
@@ -7,6 +7,7 @@
7
7
  @import "image";
8
8
  @import "line";
9
9
  @import "keyboard";
10
+ @import "search";
10
11
 
11
12
  // Last
12
13
  @import "general";
@@ -0,0 +1,22 @@
1
+ .search-form {
2
+ margin-bottom: 20px;
3
+ }
4
+
5
+ .search-field {
6
+ outline: none;
7
+ padding: 8px 12px;
8
+ font-size: 1.5em;
9
+ width: 50%;
10
+ min-width: 200px;
11
+
12
+ border: #ccc 1px solid;
13
+ border-radius: 3px;
14
+
15
+ &:focus {
16
+ border-color: #4078c0;
17
+ }
18
+ }
19
+
20
+ .highlight {
21
+ // background: #fda;
22
+ }
data/app/views/_nav.slim CHANGED
@@ -1,5 +1,7 @@
1
1
  nav
2
- a.strong href="/" Home
2
+ a.strong href="/" accesskey='h' Home
3
+ - if nav.with_search?
4
+ a.strong href="/_search" accesskey='s' Search
3
5
 
4
6
  - if nav.caption
5
7
  span.strong = "#{nav.caption}:"
@@ -0,0 +1,23 @@
1
+ == slim :_nav, locals: { nav: nav }
2
+
3
+ main
4
+ h1 Search
5
+
6
+ form.search-form action="/_search" method="get"
7
+ input.search-field type="text" name="q" value="#{params[:q]}" placeholder="Enter search query" autofocus=true
8
+ input type="submit" value="Search" style='display:none'
9
+
10
+ hr
11
+
12
+ - if results
13
+ - results.each_with_index do |result, index|
14
+ h4
15
+ = index+1
16
+ = ". "
17
+ a href="#{result[:file]}" = result[:label]
18
+
19
+ - if result[:highlights]
20
+ - result[:highlights].each do |highlight|
21
+ p == highlight
22
+
23
+
data/lib/madness.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'fileutils'
1
2
  require 'singleton'
2
3
  require 'yaml'
3
4
 
@@ -11,6 +12,7 @@ require 'sass/plugin/rack'
11
12
  require 'docopt'
12
13
  require 'colsole'
13
14
  require 'rack/contrib/try_static'
15
+ require 'ferret'
14
16
 
15
17
  require 'madness/version'
16
18
  require 'madness/settings'
@@ -21,4 +23,5 @@ require 'madness/document'
21
23
  require 'madness/navigation'
22
24
  require 'madness/breadcrumbs'
23
25
  require 'madness/command_line'
26
+ require 'madness/search'
24
27
 
@@ -24,7 +24,11 @@ module Madness
24
24
  begin
25
25
  args = Docopt::docopt(doc, argv: argv, version: VERSION)
26
26
  set_config args
27
- launch_server
27
+ if args['--index']
28
+ build_index
29
+ else
30
+ launch_server
31
+ end
28
32
  rescue Docopt::Exit => e
29
33
  puts e.message
30
34
  end
@@ -65,6 +69,12 @@ module Madness
65
69
  say "-" * 40
66
70
  end
67
71
 
72
+ def build_index
73
+ say_status :start, 'indexing'
74
+ Search.new.build_index
75
+ say_status :done, 'indexing'
76
+ end
77
+
68
78
  def config
69
79
  @config ||= Settings.instance
70
80
  end
@@ -26,7 +26,11 @@ Options:
26
26
  --no-line-numbers
27
27
  Disable line numbering for syntax highlighter.
28
28
 
29
+ --index
30
+ Build or rebuild the index for the search page.
31
+
29
32
  Examples:
30
33
  madness
31
34
  madness docs
32
35
  madness docs --no-auto-h1 -p 4567
36
+
@@ -39,7 +39,7 @@ module Madness
39
39
  # Return the HTML for that document, force re-read.
40
40
  def content!
41
41
  if File.exist?(file)
42
- html = markdown_to_html html
42
+ markdown_to_html
43
43
  else
44
44
  @type = :empty
45
45
  ""
@@ -61,7 +61,7 @@ module Madness
61
61
  # Convert markdown to HTML, wit hsome additional processing:
62
62
  # 1. Syntax highilghting
63
63
  # 2. Prepend H1 if needed
64
- def markdown_to_html(html)
64
+ def markdown_to_html
65
65
  html = RDiscount.new(File.read file).to_html
66
66
  html = syntax_highlight(html) if config.highlighter
67
67
  html = prepend_h1(html) if config.autoh1
@@ -7,7 +7,12 @@ module Madness
7
7
 
8
8
  def initialize(dir)
9
9
  @links = make_links dir
10
- @caption = File.basename(dir) unless dir == docroot
10
+ # @caption = File.basename(dir) unless dir == docroot
11
+ @caption = dir == docroot ? "Index" : File.basename(dir)
12
+ end
13
+
14
+ def with_search?
15
+ @with_search ||= Search.new.has_index?
11
16
  end
12
17
 
13
18
  private
@@ -0,0 +1,61 @@
1
+ module Madness
2
+
3
+ class Search
4
+ include ServerHelper
5
+ include Ferret
6
+ include Ferret::Index
7
+
8
+ def initialize(path=nil)
9
+ @path = path || docroot
10
+ end
11
+
12
+ def has_index?
13
+ Dir.exist? index_dir
14
+ end
15
+
16
+ def build_index
17
+ Dir.mkdir index_dir unless Dir.exist? index_dir
18
+
19
+ index = Index.new path: index_dir, create: true
20
+
21
+ Dir["#{@path}/**/*.md"].each do |file|
22
+ index << { file: file, content: File.read(file) }
23
+ end
24
+
25
+ index.optimize()
26
+ index.close()
27
+ end
28
+
29
+ def search(query)
30
+ index = Index.new path: index_dir
31
+
32
+ results = []
33
+ total_hits = index.search_each(query, limit: 20) do |doc_id, score|
34
+ filename = index[doc_id][:file].sub("#{@path}/", '')[0...-3]
35
+ highlights = index.highlight "content:(#{query.tr(' ',' OR ')}) ", doc_id, field: :content,
36
+ pre_tag: "<strong class='highlight'>", post_tag: "</strong>",
37
+ excerpt_length: 100
38
+
39
+ results << {
40
+ score: score,
41
+ file: filename,
42
+ label: filename.gsub("/", " / "),
43
+ highlights: highlights
44
+ }
45
+ end
46
+
47
+ index.close()
48
+ results
49
+ end
50
+
51
+ def remove_index_dir
52
+ return unless Dir.exist? index_dir
53
+ FileUtils.rm_r index_dir
54
+ end
55
+
56
+ def index_dir
57
+ "#{@path}/_index"
58
+ end
59
+
60
+ end
61
+ end
@@ -4,6 +4,16 @@ module Madness
4
4
 
5
5
  # The Sinatra server
6
6
  class Server < ServerBase
7
+ get '/_search' do
8
+ query = params[:q]
9
+ results = query ? Search.new.search(query) : false
10
+ nav = Navigation.new docroot
11
+ slim :search, locals: {
12
+ nav: nav,
13
+ results: results
14
+ }
15
+ end
16
+
7
17
  get '/*' do
8
18
  path = params[:splat].first
9
19
 
@@ -1,3 +1,3 @@
1
1
  module Madness
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: madness
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-13 00:00:00.000000000 Z
11
+ date: 2016-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sass
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: ferret
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.11'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.11'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: runfile
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +282,7 @@ files:
268
282
  - app/styles/_line.scss
269
283
  - app/styles/_list.scss
270
284
  - app/styles/_manifest.scss
285
+ - app/styles/_search.scss
271
286
  - app/styles/_table.scss
272
287
  - app/styles/_typography.scss
273
288
  - app/styles/main.scss
@@ -277,6 +292,7 @@ files:
277
292
  - app/views/_nav.slim
278
293
  - app/views/document.slim
279
294
  - app/views/layout.slim
295
+ - app/views/search.slim
280
296
  - bin/madness
281
297
  - lib/madness.rb
282
298
  - lib/madness/breadcrumbs.rb
@@ -284,6 +300,7 @@ files:
284
300
  - lib/madness/docopt.txt
285
301
  - lib/madness/document.rb
286
302
  - lib/madness/navigation.rb
303
+ - lib/madness/search.rb
287
304
  - lib/madness/server.rb
288
305
  - lib/madness/server_base.rb
289
306
  - lib/madness/server_helper.rb