madman 0.0.1 → 0.1.0
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 +4 -4
- data/README.md +121 -2
- data/bin/madman +1 -2
- data/bin/madman-render.rb +18 -7
- data/bin/madman-serve.rb +8 -5
- data/lib/madman/document.rb +21 -6
- data/lib/madman/renderers/default.rb +9 -0
- data/lib/madman/renderers/github.rb +19 -0
- data/lib/madman/renderers.rb +13 -0
- data/lib/madman/server.rb +6 -1
- data/lib/madman/version.rb +1 -1
- data/lib/madman.rb +4 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f05f3de9220613be599d500d333c17ee68b415a0f635fec5ce553a13f55a771
|
4
|
+
data.tar.gz: 753a684bdc3de29b0e74e9a0868f260d7d7e736aa7f1d554e61f30414dd48620
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7d40a171015a9cf52c727e16069f37d96ecea0956d4c347d89e6d66bed3719e21827b78b66ed3bf8e4c15569cd15a8b545524bb6d10ba894daaf4acafac51ab
|
7
|
+
data.tar.gz: 1e7c1342fa3c38c9996079d4eacb68814d5c660f82d541fd6354a31f994838026594b526306ca2f8179478d59fa192ddaa0c197be0e717890acae60d862c9131
|
data/README.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
Madman
|
2
2
|
==================================================
|
3
3
|
|
4
|
+
[](https://badge.fury.io/rb/madman)
|
5
|
+
[](https://travis-ci.com/DannyBen/madman)
|
6
|
+
[](https://codeclimate.com/github/DannyBen/madman/maintainability)
|
7
|
+
[](https://codeclimate.com/github/DannyBen/madman/test_coverage)
|
8
|
+
|
9
|
+
|
4
10
|
---
|
5
11
|
|
6
12
|
The Markdown Swiss Armi Knife
|
@@ -10,11 +16,124 @@ The Markdown Swiss Armi Knife
|
|
10
16
|
Installation
|
11
17
|
--------------------------------------------------
|
12
18
|
|
13
|
-
|
19
|
+
```
|
20
|
+
$ gem install madman
|
21
|
+
```
|
22
|
+
|
23
|
+
Or with Bundler:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
gem 'madman', require: false
|
27
|
+
```
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
Key Features
|
32
|
+
--------------------------------------------------
|
33
|
+
|
34
|
+
- GitHub-style markdown generation.
|
35
|
+
- Convert markdown to a single HTML file (including CSS).
|
36
|
+
- Ad-hoc server to serve a markdown file locally for preview.
|
37
|
+
- Markdown generation with GitHub API (optional).
|
38
|
+
- [Planned] Table of Contents generation for a single file.
|
39
|
+
- [Planned] Table of Contents generation for a folder of markdown files.
|
40
|
+
- [Planned] Combine multiple markdown files to one.
|
14
41
|
|
15
42
|
|
16
43
|
|
17
44
|
Usage
|
18
45
|
--------------------------------------------------
|
19
46
|
|
20
|
-
|
47
|
+
<!-- usage -->
|
48
|
+
```
|
49
|
+
$ madman
|
50
|
+
Commands:
|
51
|
+
render Render markdown to HTML
|
52
|
+
serve Run a webserver and serve the markdown file as HTML
|
53
|
+
```
|
54
|
+
|
55
|
+
---
|
56
|
+
|
57
|
+
```
|
58
|
+
$ madman render --help
|
59
|
+
Render markdown to HTML
|
60
|
+
|
61
|
+
Usage:
|
62
|
+
madman render INFILE [OUTFILE] [--rtl --github]
|
63
|
+
madman render (-h|--help|--version)
|
64
|
+
|
65
|
+
Options:
|
66
|
+
--github
|
67
|
+
Render using the GitHub API
|
68
|
+
Requires setting the GITHUB_ACCESS_TOKEN environment variable
|
69
|
+
|
70
|
+
--rtl
|
71
|
+
Render text Right to Left
|
72
|
+
|
73
|
+
-h --help
|
74
|
+
Show this help
|
75
|
+
|
76
|
+
Parameters:
|
77
|
+
INFILE
|
78
|
+
The input markdown file
|
79
|
+
|
80
|
+
OUTFILE
|
81
|
+
The output HTML file
|
82
|
+
If not provided, the input filename will be used with .html extension
|
83
|
+
|
84
|
+
Environment Variables:
|
85
|
+
GITHUB_ACCESS_TOKEN
|
86
|
+
Your GitHub API access token
|
87
|
+
Generate one here: https://github.com/settings/tokens
|
88
|
+
|
89
|
+
Examples:
|
90
|
+
madman render README.md
|
91
|
+
madman render README.md --github
|
92
|
+
madman render README.md out.html --rtl
|
93
|
+
```
|
94
|
+
|
95
|
+
---
|
96
|
+
|
97
|
+
```
|
98
|
+
$ madman serve --help
|
99
|
+
Run a webserver and serve the markdown file as HTML
|
100
|
+
|
101
|
+
Usage:
|
102
|
+
madman serve INFILE [--port N --bind ADDRESS --rtl --github]
|
103
|
+
madman serve (-h|--help|--version)
|
104
|
+
|
105
|
+
Options:
|
106
|
+
--github
|
107
|
+
Render using the GitHub API
|
108
|
+
Requires setting the GITHUB_ACCESS_TOKEN environment variable
|
109
|
+
|
110
|
+
--rtl
|
111
|
+
Render text Right to Left.
|
112
|
+
|
113
|
+
-p --port N
|
114
|
+
Set server port [default: 3000]
|
115
|
+
|
116
|
+
-b --bind ADDRESS
|
117
|
+
Set server listen address [default: 0.0.0.0]
|
118
|
+
|
119
|
+
-h --help
|
120
|
+
Show this help
|
121
|
+
|
122
|
+
Parameters:
|
123
|
+
INFILE
|
124
|
+
The input markdown file
|
125
|
+
|
126
|
+
Environment Variables:
|
127
|
+
GITHUB_ACCESS_TOKEN
|
128
|
+
Your GitHub API access token
|
129
|
+
Generate one here: https://github.com/settings/tokens
|
130
|
+
|
131
|
+
Examples:
|
132
|
+
madman serve README.md
|
133
|
+
madman serve README.md --github
|
134
|
+
madman serve README.md -p4000 --rtl
|
135
|
+
```
|
136
|
+
|
137
|
+
---
|
138
|
+
|
139
|
+
<!-- usage -->
|
data/bin/madman
CHANGED
data/bin/madman-render.rb
CHANGED
@@ -1,25 +1,36 @@
|
|
1
1
|
require 'madman'
|
2
|
-
require 'madman/version'
|
3
|
-
|
4
|
-
version Madman::VERSION
|
5
2
|
|
6
3
|
help "Render markdown to HTML"
|
7
4
|
|
8
|
-
usage "madman render INFILE [OUTFILE] [--rtl]"
|
5
|
+
usage "madman render INFILE [OUTFILE] [--rtl --github]"
|
9
6
|
usage "madman render (-h|--help|--version)"
|
10
7
|
|
11
|
-
option "--
|
8
|
+
option "--github", "Render using the GitHub API\nRequires setting the GITHUB_ACCESS_TOKEN environment variable"
|
9
|
+
option "--rtl", "Render text Right to Left"
|
12
10
|
|
13
11
|
param "INFILE", "The input markdown file"
|
14
|
-
param "OUTFILE", "The output HTML file
|
12
|
+
param "OUTFILE", "The output HTML file\nIf not provided, the input filename will be used with .html extension"
|
13
|
+
|
14
|
+
environment "GITHUB_ACCESS_TOKEN", "Your GitHub API access token\nGenerate one here: https://github.com/settings/tokens"
|
15
15
|
|
16
16
|
example "madman render README.md"
|
17
|
+
example "madman render README.md --github"
|
17
18
|
example "madman render README.md out.html --rtl"
|
18
19
|
|
19
20
|
action do |args|
|
20
21
|
infile = args['INFILE']
|
21
22
|
outfile = args['OUTFILE'] || "#{infile}.html"
|
22
|
-
|
23
|
+
renderer = args['--github'] ? :github : :default
|
24
|
+
|
25
|
+
|
26
|
+
opts = {
|
27
|
+
rtl: args['--rtl'],
|
28
|
+
renderer: renderer
|
29
|
+
}
|
30
|
+
|
31
|
+
doc = Madman::Document.from_file infile, opts
|
32
|
+
|
33
|
+
say "Rendering using the #{renderer} renderer"
|
23
34
|
doc.render outfile
|
24
35
|
say "Saved !txtgrn!#{outfile}"
|
25
36
|
end
|
data/bin/madman-serve.rb
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
require 'madman'
|
2
|
-
require 'madman/version'
|
3
|
-
|
4
|
-
version Madman::VERSION
|
5
2
|
|
6
3
|
help "Run a webserver and serve the markdown file as HTML"
|
7
4
|
|
8
|
-
usage "madman serve INFILE [--port N --bind ADDRESS --rtl]"
|
5
|
+
usage "madman serve INFILE [--port N --bind ADDRESS --rtl --github]"
|
9
6
|
usage "madman serve (-h|--help|--version)"
|
10
7
|
|
11
|
-
option "
|
8
|
+
option "--github", "Render using the GitHub API\nRequires setting the GITHUB_ACCESS_TOKEN environment variable"
|
9
|
+
option "--rtl", "Render text Right to Left."
|
12
10
|
option "-p --port N", "Set server port [default: 3000]"
|
13
11
|
option "-b --bind ADDRESS", "Set server listen address [default: 0.0.0.0]"
|
14
12
|
|
15
13
|
param "INFILE", "The input markdown file"
|
16
14
|
|
15
|
+
environment "GITHUB_ACCESS_TOKEN", "Your GitHub API access token\nGenerate one here: https://github.com/settings/tokens"
|
16
|
+
|
17
17
|
example "madman serve README.md"
|
18
|
+
example "madman serve README.md --github"
|
18
19
|
example "madman serve README.md -p4000 --rtl"
|
19
20
|
|
20
21
|
action do |args|
|
@@ -25,6 +26,8 @@ action do |args|
|
|
25
26
|
rtl: args['--rtl']
|
26
27
|
}
|
27
28
|
|
29
|
+
opts[:renderer] = :github if args['--github']
|
30
|
+
|
28
31
|
Madman::Server.options opts
|
29
32
|
Madman::Server.run!
|
30
33
|
end
|
data/lib/madman/document.rb
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
module Madman
|
2
2
|
class Document
|
3
|
-
attr_reader :text, :
|
3
|
+
attr_reader :text, :options
|
4
4
|
|
5
|
-
def self.from_file(file, opts=
|
5
|
+
def self.from_file(file, opts=nil)
|
6
|
+
opts ||= {}
|
6
7
|
new File.read(file), opts.merge({ filename: file })
|
7
8
|
end
|
8
9
|
|
9
|
-
def initialize(text,
|
10
|
-
@text
|
10
|
+
def initialize(text, options=nil)
|
11
|
+
@text = text
|
12
|
+
options ||= {}
|
13
|
+
@options = default_options.merge options
|
14
|
+
end
|
15
|
+
|
16
|
+
def set(new_opts)
|
17
|
+
@options = options.merge new_opts
|
11
18
|
end
|
12
19
|
|
13
20
|
def render(outfile)
|
@@ -16,20 +23,28 @@ module Madman
|
|
16
23
|
|
17
24
|
def to_html
|
18
25
|
html = template
|
19
|
-
content =
|
26
|
+
content = renderer.render text
|
20
27
|
|
21
28
|
replacements = {
|
22
29
|
content: content,
|
23
30
|
inline_css: css,
|
24
31
|
body_attributes: ''
|
25
32
|
}
|
26
|
-
replacements[:body_attributes] = "dir='rtl'" if
|
33
|
+
replacements[:body_attributes] = "dir='rtl'" if options[:rtl]
|
27
34
|
|
28
35
|
html %= replacements
|
29
36
|
end
|
30
37
|
|
31
38
|
private
|
32
39
|
|
40
|
+
def renderer
|
41
|
+
Renderers.available_renderers[options[:renderer]]
|
42
|
+
end
|
43
|
+
|
44
|
+
def default_options
|
45
|
+
{ renderer: :default }
|
46
|
+
end
|
47
|
+
|
33
48
|
def template
|
34
49
|
@template ||= File.read template_file
|
35
50
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Madman
|
2
|
+
module Renderers
|
3
|
+
class GitHub
|
4
|
+
def self.render(text, opts={})
|
5
|
+
self.client.markdown text
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def self.client
|
11
|
+
Octokit::Client.new access_token: access_token
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.access_token
|
15
|
+
ENV['GITHUB_ACCESS_TOKEN'] or raise ArgumentError, "Please set GITHUB_ACCESS_TOKEN"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/madman/server.rb
CHANGED
@@ -6,10 +6,15 @@ module Madman
|
|
6
6
|
@@options = opts
|
7
7
|
set :bind, @@options[:bind]
|
8
8
|
set :port, @@options[:port]
|
9
|
+
set :public_folder, File.expand_path(File.dirname(@@options[:file]))
|
9
10
|
end
|
10
11
|
|
11
12
|
def doc
|
12
|
-
|
13
|
+
doc_options = {
|
14
|
+
rtl: @@options[:rtl],
|
15
|
+
renderer: (@@options[:renderer] || :default)
|
16
|
+
}
|
17
|
+
Madman::Document.from_file @@options[:file], doc_options
|
13
18
|
end
|
14
19
|
|
15
20
|
get '/' do
|
data/lib/madman/version.rb
CHANGED
data/lib/madman.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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: 2018-05-
|
11
|
+
date: 2018-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mister_bin
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.14'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: octokit
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '4.9'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '4.9'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rack-test
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,6 +249,9 @@ files:
|
|
235
249
|
- bin/madman-serve.rb
|
236
250
|
- lib/madman.rb
|
237
251
|
- lib/madman/document.rb
|
252
|
+
- lib/madman/renderers.rb
|
253
|
+
- lib/madman/renderers/default.rb
|
254
|
+
- lib/madman/renderers/github.rb
|
238
255
|
- lib/madman/server.rb
|
239
256
|
- lib/madman/version.rb
|
240
257
|
- lib/templates/css.css
|