mdoc 0.0.3 → 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.
Files changed (53) hide show
  1. data/.rubocop.yml +2 -0
  2. data/README.md +134 -47
  3. data/bin/mdoc +11 -32
  4. data/lib/mdoc/document/kramdown.rb +25 -0
  5. data/lib/mdoc/document.rb +87 -0
  6. data/lib/mdoc/meta.rb +14 -0
  7. data/lib/mdoc/options.rb +104 -0
  8. data/lib/mdoc/pipeline.rb +59 -0
  9. data/lib/mdoc/processor/add_title.rb +15 -0
  10. data/lib/mdoc/processor/add_toc.rb +11 -0
  11. data/lib/mdoc/processor/smart_code_block.rb +37 -0
  12. data/lib/mdoc/processor.rb +21 -0
  13. data/lib/mdoc/version.rb +3 -4
  14. data/lib/mdoc/writer.rb +18 -0
  15. data/lib/mdoc.rb +143 -2
  16. data/mdoc.gemspec +19 -19
  17. data/spec/add_title_spec.rb +10 -0
  18. data/spec/add_toc_spec.rb +12 -0
  19. data/spec/document_spec.rb +34 -0
  20. data/spec/execute_spec.rb +12 -0
  21. data/spec/find_doc_type_spec.rb +14 -0
  22. data/spec/fixtures/README.md +135 -0
  23. data/spec/fixtures/config/mdoc_a.cnf +1 -0
  24. data/spec/fixtures/config/mdoc_b.cnf +1 -0
  25. data/spec/fixtures/executes/a +0 -0
  26. data/spec/fixtures/executes/b +0 -0
  27. data/spec/fixtures/executes/c +0 -0
  28. data/spec/fixtures/general.txt +10 -0
  29. data/spec/fixtures/multikeys.html +18 -0
  30. data/{examples → spec/fixtures}/multikeys.md +10 -8
  31. data/{examples → spec/fixtures}/original.md +10 -10
  32. data/{examples → spec/fixtures}/pandoc.md +7 -7
  33. data/spec/fixtures/process.test.md +11 -0
  34. data/spec/fixtures/templates/default.html.erb +0 -0
  35. data/spec/fixtures/templates/pandoc.html.erb +0 -0
  36. data/spec/get_class_spec.rb +35 -0
  37. data/spec/kramdown_spec.rb +10 -0
  38. data/spec/meta_spec.rb +6 -0
  39. data/spec/options_spec.rb +66 -0
  40. data/spec/pipeline_spec.rb +95 -0
  41. data/spec/smart_code_block_spec.rb +10 -0
  42. data/spec/spec_helper.rb +40 -7
  43. data/spec/tpl_out_spec.rb +19 -0
  44. data/templates/default.html.erb +17 -0
  45. metadata +63 -25
  46. data/ROADMAP +0 -24
  47. data/config/members.yml +0 -16
  48. data/docs/css/jsgantt.css +0 -53
  49. data/docs/gantt.html +0 -237
  50. data/docs/js/jsgantt.js +0 -1681
  51. data/lib/mdoc/convert.rb +0 -92
  52. data/lib/mdoc/parser.rb +0 -80
  53. data/spec/parser_spec.rb +0 -32
data/lib/mdoc/convert.rb DELETED
@@ -1,92 +0,0 @@
1
- require 'tempfile'
2
- require 'launchy'
3
- require 'rest_client'
4
-
5
- module Mdoc
6
- class Html < Text
7
- def convert
8
- htmlname = @file.gsub(/\.md$/, '.html')
9
- # content = `curl -X POST --data-urlencode content@#{@file} http://documentup.com/compiled`
10
- title = @title
11
- title = 'Preview' unless (title and title.size > 0)
12
-
13
- resp = RestClient.post 'http://documentup.com/compiled', :content => @body, :name => title
14
- content = resp.body
15
-
16
- # convert the received content
17
- content.gsub!('<title>undefined</title>', "<title>#{title}</title>")
18
- content.gsub!('<a href="#" id="logo">undefined</a>', "<a href='\#' id='logo'>#{title}</a>")
19
- wfh = File.new(htmlname, 'w')
20
- wfh.write content
21
- wfh.close
22
- Launchy.open("file://" + htmlname)
23
- end
24
- end
25
-
26
- class Pandoc < Text
27
- def _convert type
28
- base_name = @file.gsub(/\.md$/, '')
29
- tmp_file = base_name + "__.md"
30
-
31
- tfh = File.new(tmp_file, 'w:utf-8')
32
- tfh.puts("% #{@title}") if @title
33
- tfh.puts("% #{@author}") if @author
34
- tfh.puts("% #{@date}") if @date
35
- tfh.puts("")
36
- tfh.puts(@body)
37
- tfh.close
38
-
39
- `pandoc -o #{base_name}.#{type} #{tmp_file}`
40
- File.unlink tmp_file
41
- end
42
- end
43
-
44
- class Rtf < Pandoc
45
- def convert; self._convert('rtf') end
46
- end
47
-
48
- class Docx < Pandoc
49
- def convert; self._convert('docx') end
50
- end
51
-
52
- class Epub < Pandoc
53
- def convert; self._convert('epub') end
54
- end
55
-
56
- class Odt < Pandoc
57
- def convert; self._convert('odt') end
58
- end
59
-
60
- class Pdf < Pandoc
61
- def convert
62
- self._convert('tex')
63
- basename = @file.gsub(/\.md$/, '')
64
- File.rename(basename + ".tex", basename + '__.tex')
65
- fh = File.new(@file.gsub(/\.md$/, '.tex'), 'w:utf-8')
66
- hd =<<ENDHEADER
67
- \\documentclass[11pt,twocolumn]{article}
68
- \\setlength{\\parindent}{2em}
69
- \\usepackage{fontspec}
70
- \\setmainfont{NSimSun}
71
- \\usepackage{xeCJK}
72
-
73
- \\begin{document}
74
- ENDHEADER
75
-
76
- fh.puts hd
77
- rfh = File.new(basename + '__.tex', 'r:utf-8')
78
- rfh.each do |line|
79
- fh.puts line
80
- end
81
-
82
- fh.puts "\n\n\\end{document}\n\n"
83
- rfh.close
84
- fh.close
85
-
86
- #`xelatex #{basename + ".tex"}`
87
-
88
- #%w[log tex aux].each {|type| File.unlink(basename + ".#{type}")}
89
- #File.unlink(basename + '__.tex')
90
- end
91
- end
92
- end
data/lib/mdoc/parser.rb DELETED
@@ -1,80 +0,0 @@
1
- require 'yaml'
2
-
3
- module Mdoc
4
- class Text
5
- attr_accessor :meta, :body, :title, :author, :date
6
-
7
- def initialize file
8
- @file = file
9
- fh = file.is_a?(String) ? ::File.new(file, 'r:utf-8') : file
10
-
11
- @raw_meta = Array.new
12
- @body = String.new
13
-
14
- first_line = true # if this is the first line
15
- meta_type = nil # three meta format supported
16
- on_meta = true # read lines on meta or on body
17
-
18
- # parse the file, load all into the object
19
- fh.each do |line|
20
-
21
- # ignore heading blank lines
22
- next if first_line and /^\s*$/.match(line)
23
-
24
- # parse first line, determine the meta format
25
- if first_line
26
- first_line = false
27
- if /\%\s*\-{3,}\s*$/ =~ line
28
- meta_type = :o # original format
29
- next # skip the first line
30
- elsif /\%\s*.+$/ =~ line
31
- meta_type = :p # pandoc format
32
- elsif /^[a-z]+\:\s*/ =~ line
33
- meta_type = :m # multi-key format
34
- else
35
- on_meta = false
36
- end
37
- end
38
-
39
- if on_meta
40
- # catch end of meta line
41
- if meta_type == :o and /\%\s*\-{3,}\s*$/ =~ line
42
- on_meta = false
43
- next # skip the
44
- elsif meta_type == :p
45
- on_meta = false unless /^\%/ =~ line
46
- elsif meta_type == :m and /^\s*$/ =~ line
47
- on_meta = false
48
- next
49
- end
50
-
51
- # puts line
52
- @raw_meta << line.gsub(/^\s*\%\s*/, '').chomp
53
- next
54
- end
55
-
56
- @body << line
57
- end # parse lines
58
-
59
- # set title, author and date
60
- if meta_type == :p
61
- @title = @raw_meta[0] || ''
62
- @author= @raw_meta[1] || ''
63
- @date = @raw_meta[2] || ''
64
- @meta = {
65
- 'title' => @title,
66
- 'author' => @author,
67
- 'date' => @date
68
- }
69
- else
70
- @meta = YAML.load(@raw_meta.join("\n"))
71
- if @meta
72
- @title = @meta['title'] || ''
73
- @author= @meta['author'] || ''
74
- @date = @meta['date'].to_s || ''
75
- end
76
- end
77
- end
78
- end
79
- end
80
-
data/spec/parser_spec.rb DELETED
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mdoc::Text do
4
- context "pandoc format" do
5
- subject(:mf) { Mdoc::Text.new('examples/pandoc.md') }
6
-
7
- its(:title) { should eq('Pandoc Title') }
8
- its(:author) { should eq('Author Like Me') }
9
- its(:date) { should eq('Date in Some Format') }
10
- its(:body) { should match('The first line of contents') }
11
- its(:body) { should match('The Third line of contents') }
12
- its(:body) { should eq("The first line of contents\r\n\r\nThe Third line of contents\r\n")}
13
- end
14
-
15
- context "original format" do
16
- subject(:mf) { Mdoc::Text.new('examples/original.md') }
17
-
18
- its(:title) { should eq('The title for our document') }
19
- its(:author) { should eq('unknown person') }
20
- its(:date) { should eq('2009-08-01') }
21
- its(:body) { should eq("\r\nThe content inside\r\n")}
22
- end
23
-
24
- context "multi-key format" do
25
- subject(:mf) { Mdoc::Text.new('examples/multikeys.md') }
26
-
27
- its(:title) { should eq('The title for our document') }
28
- its(:author) { should eq('unknown person') }
29
- its(:date) { should eq('2009-08-01') }
30
- its(:body) { should match("The content inside")}
31
- end
32
- end