madness 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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": "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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/_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