madowu 0.0.2 → 0.0.3
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/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
|
+
|