mdoc 0.0.8 → 0.0.9

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzA4Yzg3YzEwNDI2MzQ0NDFkODY5YWU4ZWNiODYwODllMjllZDYzYQ==
4
+ ZDhlMjI1YzQ4Yjc4ODQ2Nzg2NjRjMWUwMzY0ZDY2NjgxMzk3MTdkNw==
5
5
  data.tar.gz: !binary |-
6
- YTg1YTg3M2M0YzQzYzcyODBjNWVkYWE0NWRhNmJmMGQ0NTEyNDMzMQ==
6
+ MmY3M2I3ODZhNjE3ZTk2OTQxNTlhNDdlY2VjZTlkN2NiMjkxYmNjOA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZGVmZWRkNjc2M2JkNDI5ZDAyMWE5YjY3NmE1NTU5OTY0MjEyYjZmMzcwNmVj
10
- NjA3MzE0Yjk3NjAzMzRlYmJkODZmODQ1YjIxMzBkZWI3OThiODRjMTdhMTMz
11
- OTFkM2MwZDI2YWRhYTJiZGMyYWVkODJkNjJlOWIyYTIyOWJlNDE=
9
+ NmM5NDhhYmYzYWNjZjI2OWI1MjFjM2E4ZjlkZTk3ZmJlZTEwNzI4OTc1MTU4
10
+ ODAxYTQ2NzY4ODAyM2M1ZmVmMjU5YzlkOGVhZWIyMjUxMWMxZDExYmU4Mjlh
11
+ NWEyZGM0YWY5ZTQ0NzA3NWY5YTE0MmM5ZDI3NDQ0YzJkZjViNmQ=
12
12
  data.tar.gz: !binary |-
13
- NGEwNzVmNjU4ZmIzNTUwODNkMDNlMmNmZjUyOTU4OTI3MjhjNzM2NTdlNjk1
14
- MzNmMzEyM2IzOTZkZGNjMWRmZTdhNjEzYjVhOThkMWFmZTU3YTdhYmQzYjJm
15
- ZGU3YjRkMTQyNWFlNmRhYzdjZGI5ZGQyZDQ2ODQ3N2VmOWQ0MjA=
13
+ Y2NkYTdkZmVkYmE0ZGVhNWRmMGU5Y2E4NDRlZjA3MDRmYTVmNTQ4MDlmYmUy
14
+ ZjIyNjU4MWIxNmUxMmE2ZmJhZGVhZGU2ZjkzNjZjYTZhM2FhYzk4NWZmODdi
15
+ Nzg5Mzk1Yjg0NjIzZGU1NjI2MWFjNGZlMzQ0MTlhY2Y3MjhjNmY=
data/.rubocop.yml CHANGED
@@ -1,2 +1,4 @@
1
+ Documentation:
2
+ Enabled: false
1
3
  Encoding:
2
4
  Enabled: false
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # Mdoc-gem
1
+
2
+ Mdoc-gem
3
+ ============
2
4
 
3
5
  A tool for convert document between several different formats.
4
6
 
data/bin/mdoc CHANGED
@@ -2,10 +2,10 @@
2
2
  # encoding: utf-8
3
3
  # vi: ft=ruby
4
4
 
5
- # $LOAD_PATH.unshift 'lib' # debug only
5
+ $LOAD_PATH.unshift 'lib' # debug only
6
6
  require 'mdoc'
7
7
 
8
- Mdoc.load_conf_files %w[/etc/mdoc.conf ~/.mdoc.conf]
8
+ # Mdoc.load_conf_files %w[/etc/mdoc.conf ~/.mdoc.conf]
9
9
  Mdoc.load_cli_options ARGV
10
10
 
11
11
  Mdoc.execute!
data/lib/mdoc/meta.rb CHANGED
@@ -7,7 +7,7 @@ module Mdoc
7
7
 
8
8
  def load(contents)
9
9
  # contents is expected as a hash in yaml format
10
- YAML.load(contents).each { |k, v| self.send("#{k}=".to_sym, v) }
10
+ YAML.load(contents).each { |k, v| send("#{k}=".to_sym, v) }
11
11
  self
12
12
  end
13
13
  end
data/lib/mdoc/pipeline.rb CHANGED
@@ -44,6 +44,11 @@ module Mdoc
44
44
  prc.map { |pn| @processors.delete(pn) }
45
45
  end
46
46
 
47
+ def enabled?(prc)
48
+ prc = get_prc(prc)
49
+ @processors.include(prc)
50
+ end
51
+
47
52
  # recursively apply processors to document
48
53
  def apply!(document)
49
54
  @processors.each do |pn|
data/lib/mdoc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mdoc
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  end
@@ -0,0 +1,25 @@
1
+ module Mdoc
2
+ # delegate output to pandoc (assume pandoc in path)
3
+ class PandocWriter < Writer
4
+ def out(doc)
5
+ @tmp_file = doc.out_file ? doc.out_file + '.temp__' : ''
6
+ Mdoc.opts.no_output ? $stdout : File.new(@tmp_file, 'wb')
7
+ end
8
+
9
+ def process!(doc)
10
+ @tilt = Tilt::ERBTemplate.new(Mdoc.find_tpl_file('pandoc.md'))
11
+ oh = out(doc)
12
+ oh.write @tilt.render(doc)
13
+ unless oh == $stdout
14
+ oh.close
15
+ `pandoc -o #{doc.out_file} #{@tmp_file}`
16
+ File.delete @tmp_file
17
+ end
18
+ end
19
+
20
+ def default_processors
21
+ %w[smart_code_block
22
+ expand_link]
23
+ end
24
+ end
25
+ end
data/lib/mdoc/writer.rb CHANGED
@@ -14,5 +14,14 @@ module Mdoc
14
14
  oh.write @tilt.render(doc)
15
15
  oh.close unless oh == $stdout
16
16
  end
17
+
18
+ def default_processors
19
+ %w[
20
+ add_toc
21
+ add_title
22
+ smart_code_block
23
+ expand_link
24
+ ]
25
+ end
17
26
  end
18
27
  end
data/lib/mdoc.rb CHANGED
@@ -10,6 +10,7 @@ require 'mdoc/processor/add_toc'
10
10
  require 'mdoc/processor/expand_link'
11
11
  require 'mdoc/pipeline'
12
12
  require 'mdoc/writer'
13
+ require 'mdoc/writer/pandoc_writer'
13
14
 
14
15
  # individual processors
15
16
 
@@ -30,11 +31,12 @@ module Mdoc
30
31
  def convert!(fname, doc_type = nil)
31
32
  doc = prepare_doc(fname, doc_type)
32
33
 
33
- # apply pipeline of processors
34
- pli = default_pipeline(doc)
34
+ # apply pipeline of processors # TODO: separate writer
35
+ writer = find_writer(doc)
36
+ pli = default_pipeline(doc, writer)
35
37
  yield pli if block_given? # receive user supplied processors
38
+ pli.writer = writer unless pli.writer
36
39
 
37
- pli.writer = find_writer(doc) unless pli.writer
38
40
  pli.apply!(doc)
39
41
  doc # return doc
40
42
  end
@@ -49,7 +51,7 @@ module Mdoc
49
51
  doc_type = find_doc_type(fname) unless doc_type
50
52
  doc = doc_type.new(fname)
51
53
  # template
52
- doc.tpl_file = find_tpl_file
54
+ doc.tpl_file = find_tpl_file(opts.template)
53
55
 
54
56
  # output file
55
57
  doc.out_file = find_out_file(fname) unless opts.no_output
@@ -58,16 +60,16 @@ module Mdoc
58
60
 
59
61
  # from several directory
60
62
  # rubocop:disable MethodLength
61
- def find_tpl_file
63
+ def find_tpl_file(fname)
62
64
  # add default search directory
63
65
  ipath = File.expand_path(File.dirname(__FILE__) + '/../templates')
64
66
  opts.tpl_directories << ipath unless opts.tpl_directories.include?(ipath)
65
67
  rpath = File.expand_path('./templates')
66
68
  opts.tpl_directories << rpath unless opts.tpl_directories.include?(rpath)
67
69
 
68
- opts.template = 'default.' + opts.template unless opts.template =~ /\./
70
+ fname = 'default.' + fname unless fname =~ /\./
69
71
  cand, buf = [], nil
70
- opts.template.split('.').reverse.each do |b|
72
+ fname.split('.').reverse.each do |b|
71
73
  buf = buf ? b + '.' + buf : b
72
74
  cand.unshift buf
73
75
  end
@@ -79,7 +81,7 @@ module Mdoc
79
81
  end
80
82
  end
81
83
 
82
- raise 'no template file found for ' + opts.template
84
+ # raise 'no template file found for ' + opts.template
83
85
  nil
84
86
  end
85
87
  # rubocop:enable MethodLength
@@ -92,11 +94,9 @@ module Mdoc
92
94
 
93
95
  # get class from keyword and module under Mdoc name space
94
96
  def get_class(cname, mdl = Processor)
95
- begin
96
- mdl.const_get(cname.split(/[\,\_]/).map { |p| p.capitalize }.join)
97
- rescue NameError
98
- return nil
99
- end
97
+ mdl.const_get(cname.split(/[\,\_]/).map { |p| p.capitalize }.join)
98
+ rescue NameError
99
+ return nil
100
100
  end
101
101
 
102
102
  def get_processor(pn)
@@ -118,26 +118,23 @@ module Mdoc
118
118
  end
119
119
 
120
120
  # get a list of processors into a pipline
121
- def default_pipeline(doc)
122
- pli = Pipeline.new default_processors
121
+ def default_pipeline(doc, writer)
122
+ pli = Pipeline.new default_processors(writer)
123
123
  opts.processors.each { |p| pli.append p }
124
124
  opts.no_processors.each { |p| pli.remove p }
125
125
  pli
126
126
  end
127
127
 
128
- def default_processors
129
- %w[
130
- add_toc
131
- add_title
132
- smart_code_block
133
- expand_link
134
- ]
128
+ def default_processors(writer)
129
+ writer.new.default_processors
135
130
  end
136
131
 
137
132
  def find_writer(doc)
138
133
  case opts.template
139
134
  when /pandoc\.\w+$/
140
- Writer::Pandoc
135
+ PandocWriter
136
+ when /(epub|docx)/ # no native support
137
+ PandocWriter
141
138
  else Writer
142
139
  end
143
140
  end
@@ -5,7 +5,7 @@
5
5
  <title>The title for our document</title>
6
6
  <!--this style include the test_md/css screen.css(first) and base.css -->
7
7
  <style type="text/css">
8
- pre code{display:block;background:#fff;color:#4d4d4c;font-family:Menlo, Monaco, Consolas, monospace;font-size:12px;line-height:1.5;border:1px solid #ccc;padding:10px}html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}table{border-collapse:separate;border-spacing:0}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}blockquote:before,blockquote:after,q:before,q:after{content:""}blockquote,q{quotes:"" ""}a img{border:none}body{margin:10px}html{height:100%}body{padding:0;margin:0;font:14px/22px "adelle", Georgia, sans-serif;font-size-adjust:none;font-style:normal;font-variant:normal;font-weight:normal;background:#f4f6ec}a{color:#369}#markdown-toc{float:left;width:230px;margin-right:30px;margin-top:40px}#markdown-toc a{display:block;font-weight:bold;text-decoration:none}#markdown-toc #sections{list-style-type:none;border-bottom:3px solid rgba(0,0,0,0.1);padding-bottom:10px;margin-bottom:10px}#markdown-toc #sections>li>a{padding:5px 0;color:#444;font-size:16px}#markdown-toc #sections ul{margin-bottom:15px}#markdown-toc #sections ul li{list-style-type:none}#markdown-toc #sections ul li a{padding:1px 15px;font-size:13px;font-weight:normal}#markdown-toc .extra{padding:5px 0;min-height:1.4em}#markdown-toc .extra a{color:#555;font-size:14px}#markdown-toc #travis img{margin-top:10px;display:block}#markdown-toc>*:last-child{margin-bottom:20px}#content{padding:30px 30px 20px 30px;min-height:100px;width:600px;background:#fff;float:left;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;margin-top:15px}#content #loader{color:#888;width:300px;height:24px;line-height:24px;position:absolute;top:30px;left:30px;background:url("data:image/gif;base64,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") no-repeat center left;padding-left:32px;font-size:18px}#content>p{zoom:1}#content>p:before,#content>p:after{content:"";display:table}#content>p:after{clear:both}#content p{padding:0 0 0.8125em 0;color:#444}#content p img{float:left;margin:0.5em 0.8125em 0.8125em 0;padding:0}#content img{max-width:100%}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{font-weight:bold;line-height:1.2em}#content h1{font-size:2.125em;margin-bottom:0.4em}#content h2{font-size:1.7em;margin:0.855em 0 0.4em;color:#cc333f}#content h3{font-size:1.3em;margin:0.956em 0 0.4em}#content h4{font-size:1.1em;margin:1.161em 0 0.4em}#content h5,#content h6{font-size:1em;font-weight:bold;margin:1.238em 0 0.4em}#content>h1,#content>h2{margin-top:0}#content ul{list-style-position:outside}#content li ul,#content li ol{margin:0 1.625em}#content ul,#content ol{margin:0 0 1.625em 1.25em}#content dl{margin:0 0 1.625em 0}#content dl dt{font-weight:bold}#content dl dd{margin-left:1.625em}#content a{text-decoration:none}#content a:hover{text-decoration:underline}#content table{margin-bottom:1.625em;border-collapse:collapse}#content th{font-weight:bold}#content tr,#content th,#content td{margin:0;padding:0 1.625em 0 1em;height:26px}#content tfoot{font-style:italic}#content caption{text-align:center;font-family:Georgia, serif}#content abbr,#content acronym{border-bottom:1px dotted #000}#content address{margin-top:1.625em;font-style:italic}#content del{color:#000}#content blockquote{padding:1em 1em 1.625em 1em;font-family:georgia, serif;font-style:italic}#content blockquote:before{content:"\201C";font-size:3em;margin-left:-0.625em;font-family:georgia, serif;color:#aaa;line-height:0}#content blockquote>p{padding:0;margin:0}#content strong{font-weight:bold}#content em,#content dfn{font-style:italic}#content dfn{font-weight:bold}#content pre,#content code{margin:0 0 1.625em;white-space:pre}#content pre,#content code,#content tt{font-size:1em;font-family:Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;line-height:1.5}#content code{background:#f7f8f1;padding:1px 2px;border:1px solid #ccc}#content pre code{padding:10px 12px;word-wrap:normal;overflow-y:auto}#content tt{display:block;margin:1.625em 0}#content hr{margin-bottom:1.625em}#content table{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;width:100%}#content th,#content td{padding:5px 10px;border:1px solid #ccc}#content th{background:#eee;padding:7px 10px}#content td{font-size:0.9em;border-color:#ddd}#content tbody tr:nth-child(2n){background:#f5f5f5}@media only screen and (max-width: 480px){#container{width:100%}#markdown-toc{width:100%;margin-top:10px;float:none}#markdown-toc #sections,#markdown-toc #header,#markdown-toc .extra{padding-left:30px;padding-right:30px}#content{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-width:1px;float:none;margin:0;width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}@media only screen and (min-device-pixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx){#github-ribbon img{width:100px}}*{margin:0;padding:0}body{margin-left:40px}#markdown-toc{float:right !important;position:fixed;left:745px;height:90%;overflow:auto}#content{float:left !important;filter:progid:DXImageTransform.Microsoft.Shadow(color=#909090,direction=120,strength=4);-moz-box-shadow:2px 2px 10px #909090;-webkit-box-shadow:2px 2px 10px #909090;box-shadow:2px 2px 10px #909090}#markdown-toc{width:auto;max-width:300px !important;top:40px}#markdown-toc>li>ul>li>a{color:#cc333f;margin-top:10px}#markdown-toc>li>ul>li>ul>li>a,h3{color:#009999}#markdown-toc>li>ul>li>ul>li>ul>li>a,h4{color:#669999}#markdown-toc>li>a{margin-bottom:20px;padding-bottom:20px;border-bottom:3px solid rgba(0,0,0,0.1);font-size:20px;color:#000000}#content code{border-radius:3px}
8
+ pre code{display:block;background:#fff;color:#4d4d4c;font-family:Menlo, Monaco, Consolas, monospace;font-size:12px;line-height:1.5;border:1px solid #ccc;padding:10px}html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}table{border-collapse:separate;border-spacing:0}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}blockquote:before,blockquote:after,q:before,q:after{content:""}blockquote,q{quotes:"" ""}a img{border:none}body{margin:10px}html{height:100%}body{padding:0;margin:0;font:14px/22px "adelle", Georgia, sans-serif;font-size-adjust:none;font-style:normal;font-variant:normal;font-weight:normal;background:#f4f6ec}a{color:#369}#markdown-toc{float:left;width:230px;margin-right:30px;margin-top:40px}#markdown-toc a{display:block;font-weight:bold;text-decoration:none}#markdown-toc #sections{list-style-type:none;border-bottom:3px solid rgba(0,0,0,0.1);padding-bottom:10px;margin-bottom:10px}#markdown-toc #sections>li>a{padding:5px 0;color:#444;font-size:16px}#markdown-toc #sections ul{margin-bottom:15px}#markdown-toc #sections ul li{list-style-type:none}#markdown-toc #sections ul li a{padding:1px 15px;font-size:13px;font-weight:normal}#markdown-toc .extra{padding:5px 0;min-height:1.4em}#markdown-toc .extra a{color:#555;font-size:14px}#markdown-toc #travis img{margin-top:10px;display:block}#markdown-toc>*:last-child{margin-bottom:20px}#content{padding:30px 30px 20px 30px;min-height:100px;width:600px;background:#fff;float:left;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;margin-top:15px}#content #loader{color:#888;width:300px;height:24px;line-height:24px;position:absolute;top:30px;left:30px;background:url("data:image/gif;base64,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") no-repeat center left;padding-left:32px;font-size:18px}#content>p{zoom:1}#content>p:before,#content>p:after{content:"";display:table}#content>p:after{clear:both}#content p{padding:0 0 0.8125em 0;color:#444}#content p img{float:left;margin:0.5em 0.8125em 0.8125em 0;padding:0}#content img{max-width:100%}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{font-weight:bold;line-height:1.2em}#content h1{font-size:2.125em;margin-bottom:0.4em}#content h2{font-size:1.7em;margin:0.855em 0 0.4em;color:#cc333f}#content h3{font-size:1.3em;margin:0.956em 0 0.4em}#content h4{font-size:1.1em;margin:1.161em 0 0.4em}#content h5,#content h6{font-size:1em;font-weight:bold;margin:1.238em 0 0.4em}#content>h1,#content>h2{margin-top:0}#content ul{list-style-position:outside}#content li ul,#content li ol{margin:0 1.625em}#content ul,#content ol{margin:0 0 1.625em 1.25em}#content dl{margin:0 0 1.625em 0}#content dl dt{font-weight:bold}#content dl dd{margin-left:1.625em}#content a{text-decoration:none}#content a:hover{text-decoration:underline}#content table{margin-bottom:1.625em;border-collapse:collapse}#content th{font-weight:bold}#content tr,#content th,#content td{margin:0;padding:0 1.625em 0 1em;height:26px}#content tfoot{font-style:italic}#content caption{text-align:center;font-family:Georgia, serif}#content abbr,#content acronym{border-bottom:1px dotted #000}#content address{margin-top:1.625em;font-style:italic}#content del{color:#000}#content blockquote{padding:1em 1em 1.625em 1em;font-family:georgia, serif;font-style:italic}#content blockquote:before{content:"\201C";font-size:3em;margin-left:-0.625em;font-family:georgia, serif;color:#aaa;line-height:0}#content blockquote>p{padding:0;margin:0}#content strong{font-weight:bold}#content em,#content dfn{font-style:italic}#content dfn{font-weight:bold}#content pre,#content code{margin:0 0 1.625em;white-space:pre}#content pre,#content code,#content tt{font-size:1em;font-family:Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;line-height:1.5}#content code{background:#f7f8f1;padding:1px 2px;border:1px solid #ccc}#content pre code{padding:10px 12px;word-wrap:normal;overflow-y:auto}#content tt{display:block;margin:1.625em 0}#content hr{margin-bottom:1.625em}#content table{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;width:100%}#content th,#content td{padding:5px 10px;border:1px solid #ccc}#content th{background:#eee;padding:7px 10px}#content td{font-size:0.9em;border-color:#ddd}#content tbody tr:nth-child(2n){background:#f5f5f5}@media only screen and (max-width: 480px){#container{width:100%}#markdown-toc{width:100%;margin-top:10px;float:none}#markdown-toc #sections,#markdown-toc #header,#markdown-toc .extra{padding-left:30px;padding-right:30px}#content{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-width:1px;float:none;margin:0;width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}@media only screen and (min-device-pixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx){#github-ribbon img{width:100px}}*{margin:0;padding:0}body{margin-left:40px}#markdown-toc{float:right !important;position:fixed;left:745px;height:90%;overflow:auto}#content{float:left !important;filter:progid:DXImageTransform.Microsoft.Shadow(color=#909090,direction=120,strength=4);-moz-box-shadow:2px 2px 10px #909090;-webkit-box-shadow:2px 2px 10px #909090;box-shadow:2px 2px 10px #909090}#markdown-toc{width:auto;max-width:300px !important;top:40px}#markdown-toc>li>ul>li>a{color:#cc333f;margin-top:10px}#markdown-toc>li>ul>li>ul>li>a,h3{color:#009999}#markdown-toc>li>ul>li>ul>li>ul>li>a,h4{color:#669999}#markdown-toc>li>a{margin-bottom:20px;padding-bottom:20px;border-bottom:3px solid rgba(0,0,0,0.1);font-size:20px;color:#000000}#content code{border-radius:3px}#content>h1{font-size:2.0em}.title{font-size: 2.4em;color: #ff5456 !important}#markdown-toc>li{margin-bottom: 30px}#markdown-toc>li>a{padding-bottom:10px;}#markdown-toc>li>a{font-size: 18px;}#markdown-toc{white-space: nowrap}h1,h2,h3,h4,h5,h6{margin-bottom:1em !important;}#markdown-toc>li>ul>li>ul>li>ul>li>ul>li>a,h5{color:#7bb8b8 !important}#markdown-toc>li>ul>li>ul>li>ul>li>a,h4{color:#6c9e00 !important}#markdown-toc>li>ul>li>ul>li>a, h3{color:#3C6E6E !important}#markdown-toc>li>ul>li>a, h2{color:#4E6EA0 !important}#markdown-toc>li>a, h1{color:#134da5 !important}body{background:#ffffff}.code pre{border:1px solid rgb(204, 204, 204);overflow:auto;border-radius:3px}.code pre{background: none repeat scroll 0% 0% rgb(247, 248, 241)}#content sup{background: #c8deff}#content sup a{color: #273650}#content .footnotes{background: rgba(0,0,0,0.1);padding: 10px 0 0px 10px;border-radius: 5px}.reversefootnote{color: #000000;}
9
9
  </style>
10
10
  </head>
11
11
 
@@ -30,9 +30,11 @@ module Mdoc
30
30
  end
31
31
  end
32
32
 
33
- class Writer
34
- class NilWriter < Writer
35
- def process!(doc); end
33
+ class NilWriter < Writer
34
+ def process!(doc); end
35
+
36
+ def default_processors
37
+ []
36
38
  end
37
39
  end
38
40
  end
@@ -42,12 +44,13 @@ describe Mdoc::Pipeline do
42
44
  subject(:doc) do
43
45
  Mdoc.convert!('spec/fixtures/multikeys.md') do |pl|
44
46
  pl.insert('proc_wrap')
45
- pl.writer = Mdoc::Writer::NilWriter
47
+ pl.writer = Mdoc::NilWriter
46
48
  end
47
49
  end
48
50
 
49
51
  it 'perform 3 processors' do
50
- doc.performed.size.should eq(3 + Mdoc.default_processors.size)
52
+ ps = Mdoc.default_processors(Mdoc::Writer).size
53
+ doc.performed.size.should eq(3 + ps)
51
54
  doc.performed[Mdoc::Processor::ProcB].should eq(1)
52
55
  end
53
56
  end
@@ -63,7 +66,8 @@ describe Mdoc::Pipeline do
63
66
 
64
67
  it 'perform 5 processors' do
65
68
  doc.is_a?(Mdoc::Document::Kramdown).should be_true
66
- doc.performed.size.should eq(5 + Mdoc.default_processors.size)
69
+ ps = Mdoc.default_processors(Mdoc::Writer).size
70
+ doc.performed.size.should eq(5 + ps)
67
71
  doc.performed[Mdoc::Processor::ProcD].should eq(1)
68
72
  doc.performed[Mdoc::Processor::ProcC].should eq(1)
69
73
  doc.body.should eq('c') # d insert before c
@@ -80,7 +84,7 @@ describe Mdoc::Pipeline do
80
84
  pl.append('proc_b')
81
85
  pl.insert('proc_d', { after: 'proc_b' })
82
86
  pl.remove(['proc_b'])
83
- pl.writer = Mdoc::Writer::NilWriter
87
+ pl.writer = Mdoc::NilWriter
84
88
  end
85
89
  end
86
90
 
data/spec/tpl_out_spec.rb CHANGED
@@ -4,7 +4,7 @@ describe Mdoc do
4
4
  it 'find pandoc.html' do
5
5
  Mdoc.load_defaults
6
6
  Mdoc.load_cli_options %w[-t pandoc.html -d spec/fixtures/templates]
7
- tpl = Mdoc.find_tpl_file
7
+ tpl = Mdoc.find_tpl_file('pandoc.html')
8
8
  tpl.should match(%r|spec/fixtures/templates/pandoc\.html\.erb$|)
9
9
  Mdoc.find_out_file('ff.md').should eq('ff.html')
10
10
  end
@@ -12,7 +12,7 @@ describe Mdoc do
12
12
  it 'find default.html' do
13
13
  Mdoc.load_defaults
14
14
  Mdoc.load_cli_options %w[-t html -d spec/fixtures/templates]
15
- tpl = Mdoc.find_tpl_file
15
+ tpl = Mdoc.find_tpl_file('html')
16
16
  tpl.should match(%r|spec/fixtures/templates/default\.html\.erb$|)
17
17
  Mdoc.find_out_file('ff.md').should eq('ff.html')
18
18
  end
@@ -0,0 +1,5 @@
1
+ <% if title %>% <%= title %><% end %>
2
+ <% if author %>% <%= author %><% end %>
3
+ <% if date %>% <%= date %><% end %>
4
+
5
+ <%= body %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huang Wei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-31 00:00:00.000000000 Z
11
+ date: 2013-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -91,6 +91,7 @@ files:
91
91
  - lib/mdoc/processor/smart_code_block.rb
92
92
  - lib/mdoc/version.rb
93
93
  - lib/mdoc/writer.rb
94
+ - lib/mdoc/writer/pandoc_writer.rb
94
95
  - mdoc.gemspec
95
96
  - spec/add_title_spec.rb
96
97
  - spec/add_toc_spec.rb
@@ -120,6 +121,7 @@ files:
120
121
  - spec/spec_helper.rb
121
122
  - spec/tpl_out_spec.rb
122
123
  - templates/default.html.erb
124
+ - templates/pandoc.md.erb
123
125
  homepage: https://github.com/7lime/mdoc-gem
124
126
  licenses:
125
127
  - MIT