madowu 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +20 -1
- data/Gemfile +3 -3
- data/VERSION +1 -1
- data/bin/dirmap +33 -9
- data/bin/madowu +7 -3
- data/bin/tex2image +72 -0
- data/doc/.dirmap.md +9 -0
- data/doc/.gitignore +2 -0
- data/doc/Rakefile +109 -0
- data/doc/index.md +166 -0
- data/doc/madowu.css +624 -0
- data/example/.gitignore +2 -0
- data/example/Rakefile +71 -36
- data/example/eq.tex +9 -0
- data/example/index.md +3 -0
- data/example/madowu.css +11 -2
- data/example/subdir/Rakefile +109 -0
- data/example/subdir/madowu.css +624 -0
- data/example/subdir/subdir2/Rakefile +109 -0
- data/example/subdir/subdir2/madowu.css +624 -0
- data/example/tex2image/.gitignore +2 -0
- data/example/tex2image/eq.tex +9 -0
- data/lib/madowu/directorymapper.rb +9 -9
- data/lib/madowu/htmlgenerator.rb +52 -18
- data/madowu.gemspec +26 -13
- data/test/test_directorymapper.rb +24 -15
- data/test/test_htmlgenerator.rb +106 -41
- metadata +31 -17
data/example/Rakefile
CHANGED
@@ -1,57 +1,50 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# Rakefile for Markdown documents.
|
3
3
|
|
4
|
-
|
4
|
+
DIRMAP_MD = '.dirmap.md'
|
5
5
|
ENCODING = "UTF-8"
|
6
6
|
HTML2PDF = "wkhtmltopdf"
|
7
|
+
TEX2IMAGE = "tex2image"
|
7
8
|
HTML2PDF_OPTIONS = "-B 1cm -L 1.5cm -R 1.5cm -T 1.5cm -s A4 --encoding #{ENCODING} "
|
9
|
+
CONVERT_COMMAND = "convert -alpha deactivate -density 150x150"
|
8
10
|
|
9
11
|
require "pp"
|
10
12
|
require "fileutils"
|
11
13
|
require "pathname"
|
12
14
|
|
13
|
-
|
14
|
-
#
|
15
|
-
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
##pp dirmaps
|
29
|
-
#task :dirmaps => dirmaps
|
30
|
-
|
31
|
-
desc "Make *.html from *.md"
|
32
|
-
md_files = FileList["**/*.md"]
|
15
|
+
## .dirmap.md
|
16
|
+
# dirmap コマンドは必ず実行なので task タスク。
|
17
|
+
# これを file にすると存在するときに実行されない。
|
18
|
+
# 生成物の .dirmap.md から task タスクへの依存を設定すると、
|
19
|
+
# .dirmap.md に依存する file タスクに「必ず実行」が伝播して必ず実行になってしまう。
|
20
|
+
# DIRMAP_MD というファイルに対する file タスクへの依存として扱うことで、
|
21
|
+
# .dirmap.md に依存する file タスクに「必ず実行」が伝播するのを防いでいる。
|
22
|
+
desc "update .dirmap.md if directory changed."
|
23
|
+
file DIRMAP_MD => :dirmap_command
|
24
|
+
task :dirmap_command do
|
25
|
+
sh "dirmap"
|
26
|
+
end
|
27
|
+
|
28
|
+
## *.html
|
29
|
+
md_files = FileList["*.md"]
|
33
30
|
html_files = md_files.ext("html")
|
34
|
-
|
31
|
+
html_tasks = []
|
35
32
|
html_files.each do |html_file|
|
36
33
|
md_file = html_file.ext("md")
|
37
34
|
md_path = Pathname.new( md_file)
|
38
35
|
dirpath = md_path.dirname
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
#sh "madowu -o -s #{dirmap} -c madowu.css #{md_file}"
|
43
|
-
sh "madowu -o -d -c madowu.css -C UTF-8 #{md_file}"
|
36
|
+
src = FileList[md_file, DIRMAP_MD]
|
37
|
+
file html_file => [DIRMAP_MD, md_file] do
|
38
|
+
sh "madowu -O -s .dirmap.md -c madowu.css -C UTF-8 #{md_file}"
|
44
39
|
end
|
40
|
+
html_tasks << html_file
|
45
41
|
end
|
46
42
|
|
47
|
-
desc "
|
48
|
-
task :
|
49
|
-
html_files.each do |html_file|
|
50
|
-
File.utime(Time.now, Time.now, html_file)
|
51
|
-
end
|
52
|
-
end
|
43
|
+
desc "make *.html from *.md"
|
44
|
+
task :md2html => [DIRMAP_MD, * html_tasks]
|
53
45
|
|
54
|
-
|
46
|
+
|
47
|
+
desc "make *.pdf from *.html"
|
55
48
|
pdf_files = html_files.ext("pdf")
|
56
49
|
task :html2pdf => FileList[pdf_files]
|
57
50
|
pdf_files.each do |pdf_file|
|
@@ -62,13 +55,55 @@ pdf_files.each do |pdf_file|
|
|
62
55
|
end
|
63
56
|
|
64
57
|
|
58
|
+
desc "make .png from .eps."
|
59
|
+
eps_files = FileList["*.eps"]
|
60
|
+
png_files = eps_files.ext("png")
|
61
|
+
task :eps2png => FileList[png_files]
|
62
|
+
png_files.each do |png_file|
|
63
|
+
eps_file = png_file.ext("eps")
|
64
|
+
t = [eps_file]
|
65
|
+
file png_file => t do
|
66
|
+
sh "#{CONVERT_COMMAND} #{eps_file} #{png_file}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
desc "make *.png from *.tex"
|
72
|
+
tex_files = FileList["*.tex"]
|
73
|
+
png_files = tex_files.ext("png")
|
74
|
+
task :tex2png => FileList[png_files]
|
75
|
+
png_files.each do |png_file|
|
76
|
+
tex_file = png_file.ext("tex")
|
77
|
+
file png_file => tex_file do
|
78
|
+
#pp png_file, tex_file; exit
|
79
|
+
sh "#{TEX2IMAGE} #{tex_file}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
# recursive だと、サブディレクトリの Rakefile も
|
85
|
+
# recursive ターゲットを持っているという前提が必要。
|
86
|
+
desc "execute 'rake' in all subdirs with Rakefile"
|
87
|
+
rakefiles = FileList["**/Rakefile"]
|
88
|
+
dirs = rakefiles.map{|path| Pathname.new(path).dirname.to_s}
|
89
|
+
dirs.delete_if {|i| i == '.' }
|
90
|
+
dirs.map!{|path| File.absolute_path(path)}
|
91
|
+
task :subdir do
|
92
|
+
dirs.each do |dir|
|
93
|
+
Dir.chdir dir
|
94
|
+
system "rake"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
task :all => [:md2html, :subdir]
|
99
|
+
|
65
100
|
task :pdf => :html2pdf
|
66
|
-
task :default => :tree
|
101
|
+
#task :default => [:tree, :tex2png, :eps2png]
|
102
|
+
task :default => [:md2html, :tex2png, :eps2png]
|
67
103
|
|
68
104
|
require "rake/clean"
|
69
105
|
CLEAN.include( [
|
70
106
|
html_files,
|
71
107
|
pdf_files,
|
72
|
-
#dirmaps,
|
73
108
|
])
|
74
109
|
|
data/example/eq.tex
ADDED
data/example/index.md
CHANGED
data/example/madowu.css
CHANGED
@@ -56,6 +56,7 @@ span.adminmenu {
|
|
56
56
|
white-space: nowrap;
|
57
57
|
}
|
58
58
|
|
59
|
+
/*
|
59
60
|
h1 {
|
60
61
|
height: 64px;
|
61
62
|
line-height: 64px;
|
@@ -67,13 +68,20 @@ h1 {
|
|
67
68
|
h2 {
|
68
69
|
font-size: 160%;
|
69
70
|
}
|
71
|
+
*/
|
70
72
|
|
71
73
|
div.body {
|
72
74
|
margin-left: 1.8em;
|
73
75
|
line-height: 120%;
|
76
|
+
font-size: 100%;
|
77
|
+
}
|
78
|
+
|
79
|
+
div.body h1 {
|
80
|
+
font-size: 160%;
|
74
81
|
}
|
75
82
|
|
76
83
|
div.body h2 {
|
84
|
+
font-size: 150%;
|
77
85
|
margin-top: 1.5em;
|
78
86
|
margin-bottom: 0.5em;
|
79
87
|
padding: 0.4em 0.4em 0.4em 0.4em;
|
@@ -83,6 +91,7 @@ div.body h2 {
|
|
83
91
|
}
|
84
92
|
|
85
93
|
div.body h3 {
|
94
|
+
font-size: 140%;
|
86
95
|
margin-top: 1.5em;
|
87
96
|
margin-bottom: 0.5em;
|
88
97
|
padding: 0.4em 0.4em 0.4em 0.4em;
|
@@ -92,14 +101,14 @@ div.body h3 {
|
|
92
101
|
}
|
93
102
|
|
94
103
|
div.body h4 {
|
95
|
-
font-size:
|
104
|
+
font-size: 130%;
|
96
105
|
padding: 0.4em 0.4em 0.4em 0.4em;
|
97
106
|
border-top: solid 2px #48c;
|
98
107
|
border-left: solid 2px #48c;
|
99
108
|
border-right: solid 2px #48c;
|
100
109
|
}
|
101
110
|
div.body h5 {
|
102
|
-
font-size:
|
111
|
+
font-size: 120%;
|
103
112
|
padding: 0.4em 0.4em 0.4em 0.4em;
|
104
113
|
border-top: solid 1px #48c;
|
105
114
|
border-left: solid 1px #48c;
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# Rakefile for Markdown documents.
|
3
|
+
|
4
|
+
DIRMAP_MD = '.dirmap.md'
|
5
|
+
ENCODING = "UTF-8"
|
6
|
+
HTML2PDF = "wkhtmltopdf"
|
7
|
+
TEX2IMAGE = "tex2image"
|
8
|
+
HTML2PDF_OPTIONS = "-B 1cm -L 1.5cm -R 1.5cm -T 1.5cm -s A4 --encoding #{ENCODING} "
|
9
|
+
CONVERT_COMMAND = "convert -alpha deactivate -density 150x150"
|
10
|
+
|
11
|
+
require "pp"
|
12
|
+
require "fileutils"
|
13
|
+
require "pathname"
|
14
|
+
|
15
|
+
## .dirmap.md
|
16
|
+
# dirmap コマンドは必ず実行なので task タスク。
|
17
|
+
# これを file にすると存在するときに実行されない。
|
18
|
+
# 生成物の .dirmap.md から task タスクへの依存を設定すると、
|
19
|
+
# .dirmap.md に依存する file タスクに「必ず実行」が伝播して必ず実行になってしまう。
|
20
|
+
# DIRMAP_MD というファイルに対する file タスクへの依存として扱うことで、
|
21
|
+
# .dirmap.md に依存する file タスクに「必ず実行」が伝播するのを防いでいる。
|
22
|
+
desc "update .dirmap.md if directory changed."
|
23
|
+
file DIRMAP_MD => :dirmap_command
|
24
|
+
task :dirmap_command do
|
25
|
+
sh "dirmap"
|
26
|
+
end
|
27
|
+
|
28
|
+
## *.html
|
29
|
+
md_files = FileList["*.md"]
|
30
|
+
html_files = md_files.ext("html")
|
31
|
+
html_tasks = []
|
32
|
+
html_files.each do |html_file|
|
33
|
+
md_file = html_file.ext("md")
|
34
|
+
md_path = Pathname.new( md_file)
|
35
|
+
dirpath = md_path.dirname
|
36
|
+
src = FileList[md_file, DIRMAP_MD]
|
37
|
+
file html_file => [DIRMAP_MD, md_file] do
|
38
|
+
sh "madowu -O -s .dirmap.md -c madowu.css -C UTF-8 #{md_file}"
|
39
|
+
end
|
40
|
+
html_tasks << html_file
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "make *.html from *.md"
|
44
|
+
task :md2html => [DIRMAP_MD, * html_tasks]
|
45
|
+
|
46
|
+
|
47
|
+
desc "make *.pdf from *.html"
|
48
|
+
pdf_files = html_files.ext("pdf")
|
49
|
+
task :html2pdf => FileList[pdf_files]
|
50
|
+
pdf_files.each do |pdf_file|
|
51
|
+
html_file = pdf_file.ext("html")
|
52
|
+
file pdf_file => html_file do
|
53
|
+
sh "#{HTML2PDF} #{HTML2PDF_OPTIONS} #{html_file} #{pdf_file}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
desc "make .png from .eps."
|
59
|
+
eps_files = FileList["*.eps"]
|
60
|
+
png_files = eps_files.ext("png")
|
61
|
+
task :eps2png => FileList[png_files]
|
62
|
+
png_files.each do |png_file|
|
63
|
+
eps_file = png_file.ext("eps")
|
64
|
+
t = [eps_file]
|
65
|
+
file png_file => t do
|
66
|
+
sh "#{CONVERT_COMMAND} #{eps_file} #{png_file}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
desc "make *.png from *.tex"
|
72
|
+
tex_files = FileList["*.tex"]
|
73
|
+
png_files = tex_files.ext("png")
|
74
|
+
task :tex2png => FileList[png_files]
|
75
|
+
png_files.each do |png_file|
|
76
|
+
tex_file = png_file.ext("tex")
|
77
|
+
file png_file => tex_file do
|
78
|
+
#pp png_file, tex_file; exit
|
79
|
+
sh "#{TEX2IMAGE} #{tex_file}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
# recursive だと、サブディレクトリの Rakefile も
|
85
|
+
# recursive ターゲットを持っているという前提が必要。
|
86
|
+
desc "execute 'rake' in all subdirs with Rakefile"
|
87
|
+
rakefiles = FileList["**/Rakefile"]
|
88
|
+
dirs = rakefiles.map{|path| Pathname.new(path).dirname.to_s}
|
89
|
+
dirs.delete_if {|i| i == '.' }
|
90
|
+
dirs.map!{|path| File.absolute_path(path)}
|
91
|
+
task :subdir do
|
92
|
+
dirs.each do |dir|
|
93
|
+
Dir.chdir dir
|
94
|
+
system "rake"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
task :all => [:md2html, :subdir]
|
99
|
+
|
100
|
+
task :pdf => :html2pdf
|
101
|
+
#task :default => [:tree, :tex2png, :eps2png]
|
102
|
+
task :default => [:md2html, :tex2png, :eps2png]
|
103
|
+
|
104
|
+
require "rake/clean"
|
105
|
+
CLEAN.include( [
|
106
|
+
html_files,
|
107
|
+
pdf_files,
|
108
|
+
])
|
109
|
+
|