madowu 0.0.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.
@@ -0,0 +1,109 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ #
5
+ #
6
+ #
7
+ class Madowu::HtmlGenerator
8
+ DEFAULT_MARKDOWN_COMMAND = 'markdown'
9
+
10
+ #
11
+ def initialize(md_file, markdown = DEFAULT_MARKDOWN_COMMAND)
12
+ @md_file = md_file
13
+ @markdown = markdown || DEFAULT_MARKDOWN_COMMAND
14
+ @markup_lines = `#{@markdown} #{@md_file}`.split("\n")
15
+ end
16
+
17
+ #unless ARGV.size == 1
18
+ # PRINTUSAGE;
19
+ # exit
20
+ #end
21
+
22
+ def self.get_title(md_file)
23
+ `grep -E '^#' #{md_file} | head -n 1`.sub(/^#\s*/, '').strip
24
+ end
25
+
26
+ # 'title' element in head is set as first /^#/ in md_file.
27
+ def generate(options = {})
28
+ embed_outline if options[:outline]
29
+
30
+ if options[:dirmap]
31
+ md_dir = Pathname.new(@md_file).dirname.expand_path
32
+ embed_sidebar( Madowu::DirectoryMapper.dirmap(md_dir) )
33
+ end
34
+
35
+ if options[:sidebar]
36
+ lines = File.open( options[:sidebar], "r").readlines
37
+ embed_sidebar(lines)
38
+ end
39
+
40
+ result = [
41
+ make_header(options[:css]),
42
+ @markup_lines,
43
+ "</div></div></body></html>",
44
+ ''
45
+ ].join("\n")
46
+ end
47
+
48
+ private
49
+
50
+ def embed_sidebar(lines)
51
+ lines.unshift "<div class='sidebar'>"
52
+ lines.push "</div>"
53
+ @markup_lines += lines
54
+ end
55
+
56
+ def embed_outline
57
+ new_lines = []
58
+ outlines = []
59
+ outlines << "<div class='header'>"
60
+ outlines << "<p>Outline:</p>"
61
+ outlines << "<ul class='outline'>"
62
+ counter = 0
63
+
64
+ @markup_lines.each do |line|
65
+ #pp line
66
+ new_line = line
67
+ if /^\<h(\d)\>(.*)\<\/h(\d)\>$/ =~ line
68
+ new_line = "<h#{$1}><a name='#{counter.to_s}'>#{$2}</a></h#{$3}>"
69
+ outlines << " <li><a href='\##{counter}'>#{' + ' * ($1.to_i-1)}#{$2}</a></ll>"
70
+ counter += 1
71
+ end
72
+ new_lines << new_line
73
+ end
74
+ outlines << "</ul>"
75
+ outlines << "</div>"
76
+
77
+ @markup_lines = outlines + new_lines
78
+ end
79
+
80
+ def make_header(css)
81
+ #title = `grep -E '^#' #{@md_file} | head -n 1`.sub(/^#\s*/, '').strip
82
+ title = self.class.get_title(@md_file)
83
+
84
+ results = []
85
+ results << "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>"
86
+ results << "<HTML lang=\'ja\'>"
87
+ results << "<head>"
88
+ results << " <title>#{title}</title>"
89
+ results << " <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>"
90
+
91
+ if css
92
+ if File.exist? css
93
+ md_dir = Pathname.new(@md_file).dirname.expand_path
94
+ css_path = Pathname.new(css).expand_path
95
+ rel_path = css_path.relative_path_from(md_dir)
96
+ #pp md_dir
97
+ #pp css_path
98
+ #pp rel_path
99
+ results << " <link rel='stylesheet' type='text/css' href='#{rel_path}' media='all'>"
100
+ end
101
+ end
102
+ results << "</head>"
103
+ results << "<body>"
104
+ results << "<div class='main'>"
105
+ results << "<div class='body'>"
106
+ end
107
+
108
+ end
109
+
data/lib/madowu.rb ADDED
@@ -0,0 +1,5 @@
1
+ module Madowu; end
2
+
3
+ require 'madowu/htmlgenerator.rb'
4
+ require 'madowu/directorymapper.rb'
5
+ require 'pathname'
@@ -0,0 +1 @@
1
+ **/*.html
@@ -0,0 +1 @@
1
+ # head
@@ -0,0 +1 @@
1
+ # dir_index_md
@@ -0,0 +1 @@
1
+ # foo_md
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
2
+ <HTML lang='ja'>
3
+ <head>
4
+ <title>title_index.html</title>
5
+ <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
6
+ <link rel='stylesheet' type='text/css' href='madowu.css' media='all'>
7
+ </head>
8
+ <body>
9
+ </body></html>
File without changes
File without changes
@@ -0,0 +1,17 @@
1
+ # head1
2
+ line1
3
+
4
+ ## head2
5
+ line2
6
+
7
+ ### head3
8
+ line3
9
+
10
+ #### head4
11
+ line4
12
+
13
+ ##### head5
14
+ line5
15
+
16
+ ###### head6
17
+ line6
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
2
+ <HTML lang='ja'>
3
+ <head>
4
+ <title>title_index.html</title>
5
+ <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
6
+ <link rel='stylesheet' type='text/css' href='madowu.css' media='all'>
7
+ </head>
8
+ <body>
9
+ </body></html>
data/test/empty.md ADDED
File without changes
data/test/head.md ADDED
@@ -0,0 +1,17 @@
1
+ # head1
2
+ line1
3
+
4
+ ## head2
5
+ line2
6
+
7
+ ### head3
8
+ line3
9
+
10
+ #### head4
11
+ line4
12
+
13
+ ##### head5
14
+ line5
15
+
16
+ ###### head6
17
+ line6
data/test/head1.md ADDED
@@ -0,0 +1 @@
1
+ # head1
data/test/helper.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'simplecov'
2
+
3
+ module SimpleCov::Configuration
4
+ def clean_filters
5
+ @filters = []
6
+ end
7
+ end
8
+
9
+ SimpleCov.configure do
10
+ clean_filters
11
+ load_adapter 'test_frameworks'
12
+ end
13
+
14
+ ENV["COVERAGE"] && SimpleCov.start do
15
+ add_filter "/.rvm/"
16
+ end
17
+ require 'rubygems'
18
+ require 'bundler'
19
+ begin
20
+ Bundler.setup(:default, :development)
21
+ rescue Bundler::BundlerError => e
22
+ $stderr.puts e.message
23
+ $stderr.puts "Run `bundle install` to install missing gems"
24
+ exit e.status_code
25
+ end
26
+ require 'test/unit'
27
+
28
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
29
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
30
+ require 'madowu'
31
+
32
+ class Test::Unit::TestCase
33
+ end
File without changes
data/test/test.css ADDED
File without changes
@@ -0,0 +1,61 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "pp"
5
+ require "helper"
6
+ #require "test/unit"
7
+ #require "pkg/klass.rb"
8
+
9
+ class TC_Klass < Test::Unit::TestCase
10
+ #def setup
11
+ # @k = Klass.new
12
+ #end
13
+
14
+ def test_map
15
+ correct = []
16
+ correct << "<p>Parent directory:</p>"
17
+ correct << "<ul>"
18
+ correct << " <li> <a href='../'>../</a>"
19
+ correct << "</ul>"
20
+ correct << "<p>Current directory:</p>"
21
+ correct << "<ul>"
22
+ correct << " <li> <a href='dir/index.html'>dir/</a>(dir_index_md)"
23
+ correct << " <li> <a href='foo.html'>foo.html</a>(foo_md)"
24
+ correct << " <li> <a href='index.html'>index.html</a>(title_index.html)"
25
+ correct << "</ul>"
26
+ assert_equal(correct, Madowu::DirectoryMapper.dirmap("test/directorymapper/dir2"))
27
+
28
+ #pp Madowu::DirectoryMapper.dirmap("/home/ippei/doc/bookmark/")
29
+
30
+
31
+
32
+ end
33
+
34
+ def test_get_title
35
+ # markdown without heading
36
+ #assert_equal('empty.html',
37
+ assert_equal('',
38
+ Madowu::DirectoryMapper.get_title('test/directorymapper/empty.md')
39
+ )
40
+
41
+ # markdown without heading
42
+
43
+ assert_equal('head1',
44
+ Madowu::DirectoryMapper.get_title('test/directorymapper/head.md')
45
+ )
46
+
47
+ # html
48
+ assert_equal('title_index.html',
49
+ Madowu::DirectoryMapper.get_title('test/directorymapper/title.html')
50
+ )
51
+
52
+ # dir
53
+ assert_equal('dir1/',
54
+ Madowu::DirectoryMapper.get_title('test/directorymapper/dir1')
55
+ )
56
+
57
+
58
+ end
59
+
60
+ end
61
+
@@ -0,0 +1,117 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "pp"
5
+ require "helper"
6
+ #require "test/unit"
7
+ #require "pkg/klass.rb"
8
+
9
+ class Madowu::HtmlGenerator
10
+ public :embed_outline, :embed_sidebar
11
+ attr_reader :markup_lines
12
+ end
13
+
14
+ class TC_HtmlGenerator < Test::Unit::TestCase
15
+ def setup
16
+ @h00 = Madowu::HtmlGenerator.new("test/empty.md")
17
+ @h01 = Madowu::HtmlGenerator.new("test/head.md")
18
+ @h02 = Madowu::HtmlGenerator.new("test/head1.md")
19
+ end
20
+
21
+ def test_generate
22
+ correct = []
23
+ correct << "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>"
24
+ correct << "<HTML lang=\'ja\'>"
25
+ correct << "<head>"
26
+ correct << " <title></title>"
27
+ correct << " <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>"
28
+ correct << "</head>"
29
+ correct << "<body>"
30
+ correct << "<div class='main'>"
31
+ correct << "<div class='body'>"
32
+ correct << ""
33
+ correct << "</div></div></body></html>"
34
+ correct << ""
35
+ correct = correct.join("\n")
36
+ assert_equal( correct, @h00.generate)
37
+
38
+
39
+ h04 = Madowu::HtmlGenerator.new("test/subdir/empty.md")
40
+ options = {:css => "test/test.css"}
41
+ correct = []
42
+ correct << "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>"
43
+ correct << "<HTML lang=\'ja\'>"
44
+ correct << "<head>"
45
+ correct << " <title></title>"
46
+ correct << " <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>"
47
+ correct << " <link rel='stylesheet' type='text/css' href='../test.css' media='all'>"
48
+ correct << "</head>"
49
+ correct << "<body>"
50
+ correct << "<div class='main'>"
51
+ correct << "<div class='body'>"
52
+ correct << ""
53
+ correct << "</div></div></body></html>"
54
+ correct << ""
55
+ correct = correct.join("\n")
56
+ assert_equal( correct, h04.generate(options))
57
+ end
58
+
59
+ def test_embed_outline
60
+ correct = []
61
+ correct << "<div class='header'>"
62
+ correct << "<p>Outline:</p>"
63
+ correct << "<ul class='outline'>"
64
+ correct << " <li><a href='#0'>head1</a></ll>"
65
+ correct << " <li><a href='#1'> + head2</a></ll>"
66
+ correct << " <li><a href='#2'> + + head3</a></ll>"
67
+ correct << " <li><a href='#3'> + + + head4</a></ll>"
68
+ correct << " <li><a href='#4'> + + + + head5</a></ll>"
69
+ correct << " <li><a href='#5'> + + + + + head6</a></ll>"
70
+ correct << "</ul>"
71
+ correct << "</div>"
72
+ correct << "<h1><a name='0'>head1</a></h1>"
73
+ correct << ""
74
+ correct << "<p>line1</p>"
75
+ correct << ""
76
+ correct << "<h2><a name='1'>head2</a></h2>"
77
+ correct << ""
78
+ correct << "<p>line2</p>"
79
+ correct << ""
80
+ correct << "<h3><a name='2'>head3</a></h3>"
81
+ correct << ""
82
+ correct << "<p>line3</p>"
83
+ correct << ""
84
+ correct << "<h4><a name='3'>head4</a></h4>"
85
+ correct << ""
86
+ correct << "<p>line4</p>"
87
+ correct << ""
88
+ correct << "<h5><a name='4'>head5</a></h5>"
89
+ correct << ""
90
+ correct << "<p>line5</p>"
91
+ correct << ""
92
+ correct << "<h6><a name='5'>head6</a></h6>"
93
+ correct << ""
94
+ correct << "<p>line6</p>"
95
+
96
+ @h01.embed_outline
97
+ #puts correct
98
+ #puts "-"*60
99
+ #puts @h01.markup_lines
100
+ #exit
101
+ assert_equal( correct, @h01.markup_lines)
102
+ end
103
+
104
+ def test_embed_sidebar
105
+ lines = ['1', '2' ]
106
+ @h02.embed_sidebar(lines)
107
+ correct = []
108
+ correct << "<h1>head1</h1>"
109
+ correct << "<div class='sidebar'>"
110
+ correct << "1"
111
+ correct << "2"
112
+ correct << "</div>"
113
+ assert_equal(correct, @h02.markup_lines)
114
+ end
115
+
116
+ end
117
+
@@ -0,0 +1,6 @@
1
+ require 'helper'
2
+
3
+ class TestMadowu < Test::Unit::TestCase
4
+ def test_something_for_real
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: madowu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - ippei94da
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jeweler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.1'
83
+ description: Markdown to HTML with table of contents, sidebar to neighboring directories.
84
+ email: ippei94da@gmail.com
85
+ executables:
86
+ - dirmap
87
+ - madowu
88
+ extensions: []
89
+ extra_rdoc_files:
90
+ - LICENSE.txt
91
+ - README.rdoc
92
+ files:
93
+ - ".document"
94
+ - CHANGES
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.rdoc
98
+ - Rakefile
99
+ - VERSION
100
+ - bin/dirmap
101
+ - bin/madowu
102
+ - example/.gitignore
103
+ - example/Rakefile
104
+ - example/enum.md
105
+ - example/heading.md
106
+ - example/index.md
107
+ - example/list.md
108
+ - example/madowu.css
109
+ - example/subdir/index.md
110
+ - example/subdir/subdir2/index.md
111
+ - lib/madowu.rb
112
+ - lib/madowu/directorymapper.rb
113
+ - lib/madowu/htmlgenerator.rb
114
+ - test/directorymapper/.gitignore
115
+ - test/directorymapper/dir1/foo.md
116
+ - test/directorymapper/dir2/dir/index.md
117
+ - test/directorymapper/dir2/foo.md
118
+ - test/directorymapper/dir2/index.html
119
+ - test/directorymapper/empty.md
120
+ - test/directorymapper/file1.md
121
+ - test/directorymapper/head.md
122
+ - test/directorymapper/title.html
123
+ - test/empty.md
124
+ - test/head.md
125
+ - test/head1.md
126
+ - test/helper.rb
127
+ - test/subdir/empty.md
128
+ - test/test.css
129
+ - test/test_directorymapper.rb
130
+ - test/test_htmlgenerator.rb
131
+ - test/test_madowu.rb
132
+ homepage: http://github.com/ippei94da/madowu
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.2.2
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Madowu, MArkDOWn to markUp, to build html
156
+ test_files: []