my_help 0.4.3 → 0.4.4
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/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +35 -12
- data/exe/{todo_help → my_todo} +1 -1
- data/hikis/diff_against_org-mode.hiki +34 -0
- data/hikis/tmp.org +20 -0
- data/lib/.emacs_help.rb.swp +0 -0
- data/lib/daddygongon/my_todo.yml +31 -0
- data/lib/emacs_help.rb +15 -0
- data/lib/emacs_help.rb~ +137 -0
- data/lib/my_help/test.rb +3 -0
- data/lib/my_help/version.rb +1 -1
- data/lib/my_help.rb +1 -1
- data/lib/my_todo/my_todo.rb +7 -0
- data/lib/my_todo/my_todo.rb~ +7 -0
- data/lib/specific_help.rb +42 -11
- data/lib/specific_help.rb~ +193 -0
- data/lib/todo.rb +1 -0
- data/lib/todo.rb~ +1 -0
- data/lor +0 -0
- data/my_help.gemspec +4 -2
- data/my_help.wiki/Home.md +1 -1
- data/my_help.wiki/README_ja.md +1 -1
- data/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/.gitignore +1 -0
- data/my_help_nasu/Rakefile +422 -0
- data/my_help_nasu/code.hiki +285 -0
- data/my_help_nasu/consideration.hiki +8 -0
- data/my_help_nasu/features.hiki +185 -0
- data/my_help_nasu/figs/my_help_nasu.001.jpeg +0 -0
- data/my_help_nasu/figs/my_help_nasu.001.jpg +0 -0
- data/my_help_nasu/figs/my_help_nasu1.001.jpg +0 -0
- data/my_help_nasu/head2.tex +9 -0
- data/my_help_nasu/hiki_help.yml +53 -0
- data/my_help_nasu/introduction.hiki +29 -0
- data/my_help_nasu/key_bind_mi +1 -0
- data/my_help_nasu/latex_dir/.gitignore +1 -0
- data/my_help_nasu/latex_dir/Rakefile +420 -0
- data/my_help_nasu/latex_dir/code.aux +25 -0
- data/my_help_nasu/latex_dir/code.tex +271 -0
- data/my_help_nasu/latex_dir/consideration.aux +22 -0
- data/my_help_nasu/latex_dir/consideration.tex +9 -0
- data/my_help_nasu/latex_dir/features.aux +31 -0
- data/my_help_nasu/latex_dir/features.tex +173 -0
- data/my_help_nasu/latex_dir/head.tex +9 -0
- data/my_help_nasu/latex_dir/hiki_help.yml +53 -0
- data/my_help_nasu/latex_dir/introduction.aux +22 -0
- data/my_help_nasu/latex_dir/introduction.tex +23 -0
- data/my_help_nasu/latex_dir/jlisting.sty +216 -0
- data/my_help_nasu/latex_dir/jlisting.tex +216 -0
- data/my_help_nasu/latex_dir/latex_dir/head.tex +9 -0
- data/my_help_nasu/latex_dir/latex_dir/jlisting.tex +216 -0
- data/my_help_nasu/latex_dir/latex_dir/pre.tex +36 -0
- data/my_help_nasu/latex_dir/method_bdd.aux +26 -0
- data/my_help_nasu/latex_dir/method_bdd.tex +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.aux +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.log +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.tex +205 -0
- data/my_help_nasu/latex_dir/method_usage.aux +28 -0
- data/my_help_nasu/latex_dir/method_usage.tex +76 -0
- data/my_help_nasu/latex_dir/my_help_nasu.aux +12 -0
- data/my_help_nasu/latex_dir/my_help_nasu.log +328 -0
- data/my_help_nasu/latex_dir/my_help_nasu.pdf +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.tex +74 -0
- data/my_help_nasu/latex_dir/my_help_nasu.toc +32 -0
- data/my_help_nasu/latex_dir/overview.aux +21 -0
- data/my_help_nasu/latex_dir/overview.tex +12 -0
- data/my_help_nasu/latex_dir/pre.tex +36 -0
- data/my_help_nasu/method_bdd.hiki +24 -0
- data/my_help_nasu/method_cucumber.hiki +184 -0
- data/my_help_nasu/method_usage.hiki +69 -0
- data/my_help_nasu/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/my_help_nasu/my_help_nasu.001.jpeg +0 -0
- data/my_help_nasu/my_help_nasu.hiki +32 -0
- data/my_help_nasu/my_help_nasu.key +0 -0
- data/my_help_nasu/overview.hiki +11 -0
- data/tmp.txt +2 -0
- metadata +104 -10
- data/lib/daddygongon/git_help.yml +0 -30
- data/lib/daddygongon/todo_help.yml +0 -58
@@ -0,0 +1,193 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require "optparse"
|
3
|
+
require "yaml"
|
4
|
+
require "my_help/version"
|
5
|
+
require 'fileutils'
|
6
|
+
require "coderay"
|
7
|
+
|
8
|
+
module SpecificHelp
|
9
|
+
class Command
|
10
|
+
|
11
|
+
def self.run(file,argv=[])
|
12
|
+
new(file, argv).execute
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(file,argv=[])
|
16
|
+
@source_file = file
|
17
|
+
@help_cont = YAML.load(File.read(file))
|
18
|
+
@help_cont[:head].each{|line| print line.chomp+"\n" } if @help_cont[:head] != nil
|
19
|
+
@help_cont[:license].each{|line| print "#{line.chomp}\n" } if @help_cont[:license] != nil
|
20
|
+
@argv = argv
|
21
|
+
end
|
22
|
+
|
23
|
+
def execute
|
24
|
+
if @argv.size==0
|
25
|
+
if @source_file.include?('todo')
|
26
|
+
@argv << '--all'
|
27
|
+
else
|
28
|
+
@argv << '--help'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
command_parser = OptionParser.new do |opt|
|
32
|
+
opt.on('-v', '--version','show program Version.') { |v|
|
33
|
+
opt.version = MyHelp::VERSION
|
34
|
+
puts opt.ver
|
35
|
+
}
|
36
|
+
@help_cont.each_pair{|key,val|
|
37
|
+
next if key==:head or key==:license
|
38
|
+
opts = val[:opts]
|
39
|
+
opt.on(opts[:short],opts[:long],opts[:desc]) {disp_help(key)}
|
40
|
+
}
|
41
|
+
|
42
|
+
opt.on('--edit','edit help contentsを開く'){edit_help}
|
43
|
+
opt.on('--to_hiki','hikiのformatに変更する'){to_hiki}
|
44
|
+
opt.on('--all','すべてのhelp画面を表示させる'){all_help}
|
45
|
+
opt.on('--store [item]','store [item] でback upをとる'){|item| store(item)}
|
46
|
+
opt.on('--remove [item]','remove [item] back upしてるlistを消去する'){|item| remove(item) }
|
47
|
+
opt.on('--add [item]','add new [item]で新しいhelpを作る'){|item| add(item) }
|
48
|
+
opt.on('--backup_list [val]','back upしているlistを表示させる'){|val| backup_list(val)}
|
49
|
+
|
50
|
+
# opt.on('--edit','edit help contents'){edit_help}
|
51
|
+
# opt.on('--to_hiki','convert to hikidoc format'){to_hiki}
|
52
|
+
# opt.on('--all','display all helps'){all_help}
|
53
|
+
# opt.on('--store [item]','store [item] in backfile'){|item| store(item)}
|
54
|
+
# opt.on('--remove [item]','remove [item] and store in backfile'){|item| remove(item) }
|
55
|
+
# opt.on('--add [item]','add new [item]'){|item| add(item) }
|
56
|
+
# opt.on('--backup_list [val]','show last [val] backup list'){|val| backup_list(val)}
|
57
|
+
|
58
|
+
end
|
59
|
+
begin
|
60
|
+
command_parser.parse!(@argv)
|
61
|
+
rescue=> eval
|
62
|
+
p eval
|
63
|
+
end
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
|
67
|
+
def backup_list(val)
|
68
|
+
val = val || 10
|
69
|
+
print "\n ...showing last #{val} stored items in backup.\n"
|
70
|
+
backup=mk_backup_file(@source_file)
|
71
|
+
File.open(backup,'r'){|file|
|
72
|
+
backup_cont = YAML.load(File.read(backup))
|
73
|
+
backup_size = backup_cont.size
|
74
|
+
backup_size = backup_size>val.to_i ? val.to_i : backup_size
|
75
|
+
backup_keys = backup_cont.keys
|
76
|
+
backup_keys.reverse.each_with_index{|item,i|
|
77
|
+
break if i>=backup_size
|
78
|
+
line = item.to_s.split('_')
|
79
|
+
printf("%10s : %8s%8s\n",line[0],line[1],line[2])
|
80
|
+
}
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
def mk_backup_file(file)
|
85
|
+
path = File.dirname(file)
|
86
|
+
base = File.basename(file)
|
87
|
+
backup= File.join(path,"."+base)
|
88
|
+
FileUtils.touch(backup) unless File.exists?(backup)
|
89
|
+
return backup
|
90
|
+
end
|
91
|
+
|
92
|
+
def store(item)
|
93
|
+
if item==nil
|
94
|
+
print "spcify --store [item].\n"
|
95
|
+
exit
|
96
|
+
else
|
97
|
+
print "Trying to store #{item}\n"
|
98
|
+
end
|
99
|
+
backup=mk_backup_file(@source_file)
|
100
|
+
unless store_item = @help_cont[item.to_sym] then
|
101
|
+
print "No #{item} in this help. The items are following...\n"
|
102
|
+
keys = @help_cont.keys
|
103
|
+
keys.each{|key|
|
104
|
+
p key
|
105
|
+
}
|
106
|
+
exit
|
107
|
+
end
|
108
|
+
p store_name = item+"_"+Time.now.strftime("%Y%m%d_%H%M%S")
|
109
|
+
cont = {store_name.to_sym => store_item}
|
110
|
+
backup_cont=YAML.load(File.read(backup)) || {}
|
111
|
+
backup_cont[store_name.to_sym]=store_item
|
112
|
+
File.open(backup,'w'){|file| file.print(YAML.dump(backup_cont))}
|
113
|
+
end
|
114
|
+
|
115
|
+
def add(item='new_item')
|
116
|
+
print "Trying to add #{item}\n"
|
117
|
+
new_item={:opts=>{:short=>'-'+item[0], :long=>'--'+item, :desc=>item},
|
118
|
+
:title=>item, :cont=> [item]}
|
119
|
+
@help_cont[item.to_sym]=new_item
|
120
|
+
File.open(@source_file,'w'){|file| file.print YAML.dump(@help_cont)}
|
121
|
+
end
|
122
|
+
|
123
|
+
def remove(item)
|
124
|
+
print "Trying to remove #{item}\n"
|
125
|
+
store(item)
|
126
|
+
@help_cont.delete(item.to_sym)
|
127
|
+
File.open(@source_file,'w'){|file| file.print YAML.dump(@help_cont)}
|
128
|
+
end
|
129
|
+
|
130
|
+
def edit_help
|
131
|
+
p help_file =@source_file
|
132
|
+
begin
|
133
|
+
p command= "emacs #{help_file}"
|
134
|
+
exec command
|
135
|
+
rescue => e
|
136
|
+
print "\nOption edit is not executable on windows. \n"
|
137
|
+
print "Type the following shell command;\n\n"
|
138
|
+
print "emacs /home/#{ENV['USER']}/.my_help/#{File.basename(@source_file)}\n\n"
|
139
|
+
print "M-x ruby-mode should be good for edit.\n"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def to_hiki
|
144
|
+
@help_cont.each_pair{|key,val|
|
145
|
+
if key==:head or key==:license
|
146
|
+
hiki_disp(val)
|
147
|
+
else
|
148
|
+
hiki_help(key)
|
149
|
+
end
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
def all_help
|
154
|
+
@help_cont.each_pair{|key,val|
|
155
|
+
if key==:head or key==:license
|
156
|
+
val[0]+=":"
|
157
|
+
disp(val)
|
158
|
+
else
|
159
|
+
disp_help(key)
|
160
|
+
end
|
161
|
+
}
|
162
|
+
end
|
163
|
+
|
164
|
+
def hiki_help(key_word)
|
165
|
+
items =@help_cont[key_word]
|
166
|
+
puts "\n!!"+items[:title]+"\n"
|
167
|
+
hiki_disp(items[:cont])
|
168
|
+
end
|
169
|
+
|
170
|
+
def hiki_disp(lines)
|
171
|
+
lines.each{|line| puts "*#{line}"} if lines != nil
|
172
|
+
end
|
173
|
+
|
174
|
+
def disp_help(key_word)
|
175
|
+
print_separater
|
176
|
+
items =@help_cont[key_word]
|
177
|
+
# puts items[:title]
|
178
|
+
puts CodeRay.scan("-#{items[:title]}:", :Taskpaper).term
|
179
|
+
disp(items[:cont])
|
180
|
+
print_separater
|
181
|
+
end
|
182
|
+
|
183
|
+
def disp(lines)
|
184
|
+
# lines.each{|line| puts " +#{line}"} if lines != nil
|
185
|
+
# lines.each{|line| puts CodeRay.scan("*#{line}", :diff).term}
|
186
|
+
lines.each{|line| puts CodeRay.scan("+#{line}", :Taskpaper).term}
|
187
|
+
end
|
188
|
+
|
189
|
+
def print_separater
|
190
|
+
print "---\n"
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
data/lib/todo.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'my_todo/my_todo'
|
data/lib/todo.rb~
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'my_todo/todo'
|
data/lor
ADDED
File without changes
|
data/my_help.gemspec
CHANGED
@@ -32,7 +32,9 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency "minitest", "~> 5.0"
|
33
33
|
spec.add_development_dependency "yard"
|
34
34
|
spec.add_development_dependency "hiki2md"
|
35
|
-
spec.add_development_dependency "
|
36
|
-
spec.add_development_dependency "
|
35
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
+
spec.add_development_dependency "aruba"
|
37
37
|
spec.add_dependency "systemu"
|
38
|
+
spec.add_dependency "coderay"
|
39
|
+
spec.add_dependency "colorize"
|
38
40
|
end
|
data/my_help.wiki/Home.md
CHANGED
@@ -327,4 +327,4 @@ add_yml, to_ymlは3.6から4.0へ移行する時に行ったhelpファイルの
|
|
327
327
|
add_ymlは~/.my_help/*_helpファイルを全て~/.my_help/*_help.ymlに変える.
|
328
328
|
to_ymlは~/.emacs.d/init.elに'.yml'の設定が書き込まれていない時,ruby-modeでemacsを起動するsciptを埋め込む.
|
329
329
|
|
330
|
-
clean_exeは,githubへuploadする時に,開発者個人の
|
330
|
+
clean_exeは,githubへuploadする時に,開発者個人のexeファイルをrmして整頓する.
|
data/my_help.wiki/README_ja.md
CHANGED
@@ -327,4 +327,4 @@ add_yml, to_ymlは3.6から4.0へ移行する時に行ったhelpファイルの
|
|
327
327
|
add_ymlは~/.my_help/*_helpファイルを全て~/.my_help/*_help.ymlに変える.
|
328
328
|
to_ymlは~/.emacs.d/init.elに'.yml'の設定が書き込まれていない時,ruby-modeでemacsを起動するsciptを埋め込む.
|
329
329
|
|
330
|
-
clean_exeは,githubへuploadする時に,開発者個人の
|
330
|
+
clean_exeは,githubへuploadする時に,開発者個人のexeファイルをrmして整頓する.
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
.hikirc
|
@@ -0,0 +1,422 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'systemu'
|
3
|
+
require 'tempfile'
|
4
|
+
require 'colorize'
|
5
|
+
# -*- coding: utf-8 -*-
|
6
|
+
begin
|
7
|
+
$hiki_dir = File.readlines('./.hikirc')[0].chomp
|
8
|
+
rescue => e
|
9
|
+
puts e
|
10
|
+
exit
|
11
|
+
end
|
12
|
+
dirnames=Dir.pwd.split('/')
|
13
|
+
$basename = (dirnames[-1]=='hikis')? dirnames[-2] : dirnames[-1]
|
14
|
+
$latex_dir= 'latex_dir'
|
15
|
+
$section_layer = {}
|
16
|
+
|
17
|
+
task :default do
|
18
|
+
system 'rake -T'
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Githubのdirをsafariでopen"
|
22
|
+
task :github do
|
23
|
+
status, stdout, stderr = systemu %q( git remote -v |grep origin )
|
24
|
+
github_dir=stdout.match(/(.+):(.+) \(push\)/)[2]
|
25
|
+
puts github_dir.blue
|
26
|
+
system "open https://github.com/#{github_dir}"
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "hikiシステムにあるゴミファイルを掃除する"
|
30
|
+
task :reset_hiki do
|
31
|
+
status, stdout, stderr = systemu "hiki -l #{$basename}"
|
32
|
+
print stdout
|
33
|
+
files=[]
|
34
|
+
stdout.split("\n").each{|line|
|
35
|
+
files << line.split(/\s+/)[-1]
|
36
|
+
}
|
37
|
+
p r_files = files.reverse[0..-4]
|
38
|
+
r_files.each{|file|
|
39
|
+
print "remove #{file}[ynqlA]? ".red
|
40
|
+
input=STDIN.gets.chomp
|
41
|
+
case input
|
42
|
+
when 'y'
|
43
|
+
p command="hiki --remove #{file}"
|
44
|
+
system command
|
45
|
+
when 'n'
|
46
|
+
when 'l'
|
47
|
+
p command="hiki -l #{$basename}"
|
48
|
+
system command
|
49
|
+
when 'q'
|
50
|
+
exit
|
51
|
+
when 'A'
|
52
|
+
print "\nAre you sure?[Yn]"
|
53
|
+
input2 = STDIN.gets.chomp
|
54
|
+
case input2
|
55
|
+
when 'Y'
|
56
|
+
r_files.each{|file| system "hiki --remove #{file}"}
|
57
|
+
p target = File.join($hiki_dir,'cache','attach',$basename)
|
58
|
+
exit
|
59
|
+
when 'n'
|
60
|
+
exit
|
61
|
+
end
|
62
|
+
end
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "latex_dirのゴミを掃除"
|
67
|
+
task :reset_latex_dir do
|
68
|
+
system "mv latex_dir/head.tex ."
|
69
|
+
system "rm -rf latex_dir"
|
70
|
+
system "mkdir latex_dir"
|
71
|
+
system "mv head.tex latex_dir/"
|
72
|
+
system "rake latex_all"
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "toc.hikiの作成"
|
76
|
+
task :mk_toc do
|
77
|
+
p target = $basename+'.toc'
|
78
|
+
cont=""
|
79
|
+
File.readlines(File.join('latex_dir',target)).each{|line|
|
80
|
+
if m=line.match(/\\contentsline \{(.+)\}\{\\numberline \{([\d|\.]+)\}(.+)\}\{\d+\}/)
|
81
|
+
layer,sec_no,title=m[1],m[2],m[3]
|
82
|
+
d = case m[1]
|
83
|
+
when 'section'
|
84
|
+
1
|
85
|
+
when 'subsection'
|
86
|
+
2
|
87
|
+
when 'subsubsection'
|
88
|
+
3
|
89
|
+
else
|
90
|
+
4
|
91
|
+
end
|
92
|
+
layer = "!"*d
|
93
|
+
title.gsub!('\_','_')
|
94
|
+
cont << "#{layer}#{sec_no}:#{title}\n"
|
95
|
+
end
|
96
|
+
}
|
97
|
+
print cont
|
98
|
+
File.open("toc.hiki",'w'){|file| file.print cont}
|
99
|
+
end
|
100
|
+
|
101
|
+
desc "FILE.hikiあるいはhikiファイルすべてを最新状態に更新"
|
102
|
+
task :touch do
|
103
|
+
if file=ARGV[1]
|
104
|
+
p target = $basename+"_"+file.split('.')[0]
|
105
|
+
system "hiki -u #{target}"
|
106
|
+
else
|
107
|
+
p target = File.join($hiki_dir,'cache','attach',$basename)
|
108
|
+
system "touch #{target}/*"
|
109
|
+
Dir.entries('.').each{|file|
|
110
|
+
file_split=file.split(".")
|
111
|
+
if file_split[1]=='hiki'
|
112
|
+
next if file_split[0]==$basename
|
113
|
+
p target = $basename+"_"+file_split[0]
|
114
|
+
system "hiki -u #{target}"
|
115
|
+
end
|
116
|
+
}
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
desc "FILE.hikiあるいはhikiファイルをedtiorで開く"
|
121
|
+
task :open do
|
122
|
+
if file=ARGV[1]
|
123
|
+
system "open -a mi #{file}"
|
124
|
+
else
|
125
|
+
Dir.entries('.').each{|file|
|
126
|
+
file_split=file.split(".")
|
127
|
+
if file_split[1]=='hiki'
|
128
|
+
p target = file_split[0]
|
129
|
+
system "open -a mi #{target}"
|
130
|
+
end
|
131
|
+
}
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
desc "FILE1をlatexに変換"
|
136
|
+
task :latex => [:latex_base] do
|
137
|
+
exit
|
138
|
+
end
|
139
|
+
|
140
|
+
desc "FILE1をwrap formatでlatexに変換"
|
141
|
+
task :latex_wrap => [:latex_base, :change_wrap] do
|
142
|
+
exit
|
143
|
+
end
|
144
|
+
|
145
|
+
def latex_loop(entries,opts={})
|
146
|
+
main_file=""
|
147
|
+
entries.each{|file|
|
148
|
+
options={:latex_all=>true}
|
149
|
+
next unless file.split('.')[1]=='hiki'
|
150
|
+
next if file=='toc.hiki'
|
151
|
+
next if file.include?('.hikirc')
|
152
|
+
f_name =File.basename(file,'.hiki')
|
153
|
+
if opts[:main]
|
154
|
+
if f_name==$basename
|
155
|
+
options[:latex]="--listings --head latex_dir/head.tex -p "
|
156
|
+
options[:main]=true
|
157
|
+
main_file=f_name
|
158
|
+
convert_to_latex(file, options)
|
159
|
+
end
|
160
|
+
else
|
161
|
+
if f_name!=$basename
|
162
|
+
p level = $section_layer[f_name] || 1
|
163
|
+
options[:latex]="-l #{level} --listings -b "
|
164
|
+
convert_to_latex(file, options)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
}
|
168
|
+
return main_file
|
169
|
+
end
|
170
|
+
|
171
|
+
def check_section_layers(lines)
|
172
|
+
p reg_exp = Regexp.new("#{$basename}_(.+)")
|
173
|
+
lines.each{|line|
|
174
|
+
p line
|
175
|
+
if m=line.match(/(!+)\[\[(.+)\]\]/)
|
176
|
+
p count = m[1].count('!')
|
177
|
+
p file_name=m[2].match(reg_exp)[1]
|
178
|
+
$section_layer[file_name]=count
|
179
|
+
end
|
180
|
+
}
|
181
|
+
p $section_layer
|
182
|
+
end
|
183
|
+
|
184
|
+
def check_bounding_box
|
185
|
+
# $bounding_box="0 0 442 432"
|
186
|
+
$bounding_box=" 0 0 737 453"
|
187
|
+
end
|
188
|
+
|
189
|
+
desc "すべてのhikiファイルをlatex変換"
|
190
|
+
task :latex_all do
|
191
|
+
p entries=Dir.entries('.')
|
192
|
+
check_bounding_box
|
193
|
+
main_file = latex_loop(entries,opts={:main=>true})
|
194
|
+
latex_loop(entries)
|
195
|
+
cont=""
|
196
|
+
p reg_exp = Regexp.new("#{$basename}_(.+)")
|
197
|
+
toc = false
|
198
|
+
File.readlines(File.join($latex_dir,"#{main_file}.tex")).each{|line|
|
199
|
+
line, toc = "", true if line.match(/\\tableofcontents/) and toc == true #only one
|
200
|
+
line ="\\usepackage{listings,jlisting}" if line.match(/\\usepackage{listings}/)
|
201
|
+
if line.match(/section{(.+)}/)
|
202
|
+
if m=line.match(/\\verb\|(.+)\((.+)\)\|/)
|
203
|
+
p m
|
204
|
+
p m_t=m[2].match(reg_exp)[1]
|
205
|
+
line = "\\include{#{m_t}}\n"
|
206
|
+
elsif m=line.match(/section{\\verb\|(.+)\|}/)
|
207
|
+
p m
|
208
|
+
p m_t=m[1].match(reg_exp)[1]
|
209
|
+
line = "\\include{#{m_t}}\n"
|
210
|
+
else
|
211
|
+
# line = ""
|
212
|
+
end
|
213
|
+
end
|
214
|
+
cont << line
|
215
|
+
}
|
216
|
+
File.open(File.join($latex_dir,"#{main_file}.tex"),'w'){|file| file.print cont}
|
217
|
+
system "open latex_dir/#{main_file}.tex"
|
218
|
+
exit
|
219
|
+
end
|
220
|
+
|
221
|
+
task :latex_base do
|
222
|
+
Dir.mkdir($latex_dir) unless Dir.exist?($latex_dir)
|
223
|
+
convert_to_latex(ARGV[1])
|
224
|
+
system("open #{$save_name}")
|
225
|
+
end
|
226
|
+
|
227
|
+
def convert_to_latex(file_name, options={})
|
228
|
+
p file_name = file_name.include?('.hiki')? file_name : file_name+'.hiki'
|
229
|
+
p tex_name = File.basename(file_name,'.hiki')+'.tex'
|
230
|
+
p $save_name = ARGV[2] || File.join($latex_dir,tex_name)
|
231
|
+
pre_name = File.join($latex_dir,'pre.tex')
|
232
|
+
p pre_command = File.exist?(pre_name) ? '--pre '+pre_name : nil
|
233
|
+
lines = File.readlines(file_name)
|
234
|
+
check_section_layers(lines) if options[:main]
|
235
|
+
cont = ""
|
236
|
+
lines.each_with_index{|line,i|
|
237
|
+
if m=line.match(/\{\{attach_view\((.*),(.*)\)\}\}/)
|
238
|
+
p line="\{\{attach_view\(#{m[1]}\)\}\}\n"
|
239
|
+
elsif options[:latex_all] and i<5
|
240
|
+
line="" if line.match(/^!title:|^!author:|^!date:/)
|
241
|
+
end
|
242
|
+
cont << line
|
243
|
+
}
|
244
|
+
tf1,tf2='tmp1.txt','tmp2.txt'
|
245
|
+
File.open(tf1,'w'){|file| file.print cont}
|
246
|
+
system "hiki2latex #{pre_command} #{options[:latex]} #{tf1} > #{tf2}"
|
247
|
+
lines = File.readlines(tf2)
|
248
|
+
system "rm #{tf1} #{tf2}"
|
249
|
+
cont = ""
|
250
|
+
lines.each{|line|
|
251
|
+
if m=line.match(/\\includegraphics\[width=6cm\]\{(.+)\}/)
|
252
|
+
p line="\\includegraphics\[width=10cm,bb=#{$bounding_box}\]\{../figs/#{m[1]}\}\n"
|
253
|
+
cont << line
|
254
|
+
else
|
255
|
+
cont << line
|
256
|
+
end
|
257
|
+
}
|
258
|
+
File.open($save_name,'w'){|file| file.print cont }
|
259
|
+
end
|
260
|
+
|
261
|
+
task :change_wrap do
|
262
|
+
lines = File.readlines($save_name)
|
263
|
+
|
264
|
+
cont = ""
|
265
|
+
lines.each{|line|
|
266
|
+
if line.include?('\begin{figure}[htbp]\begin{center}')
|
267
|
+
p line
|
268
|
+
cont << '\begin{wrapfigure}{r}{8cm}'+"\n"
|
269
|
+
cont << '\vspace{-2\baselineskip}'+"\n"
|
270
|
+
cont << '\begin{center}'+"\n"
|
271
|
+
elsif line.include?('\label{default}\end{center}\end{figure}')
|
272
|
+
p line
|
273
|
+
cont << '\end{center}'+"\n"
|
274
|
+
cont << '\vspace{2\baselineskip}'+"\n"
|
275
|
+
cont << '\end{wrapfigure}'+"\n"
|
276
|
+
else
|
277
|
+
cont << line
|
278
|
+
end
|
279
|
+
}
|
280
|
+
File.open($save_name,'w'){|file| file.print cont }
|
281
|
+
|
282
|
+
system("open #{$save_name}")
|
283
|
+
exit
|
284
|
+
end
|
285
|
+
|
286
|
+
|
287
|
+
desc "increment fig NUBERS in FILE"
|
288
|
+
task :increment do
|
289
|
+
number=ARGV[1]
|
290
|
+
file = ARGV[2]
|
291
|
+
dir = ARGV[3] || nil
|
292
|
+
lines = File.readlines(file)
|
293
|
+
cont = ""
|
294
|
+
lines.each{|line|
|
295
|
+
if m=line.match(/\{\{attach_view\((\w+|_).(\d+).jpeg\)\}\}/)
|
296
|
+
new_num=sprintf("%03d",m[2].to_i+number.to_i)
|
297
|
+
line="\{\{attach_view\(#{m[1]}.#{new_num}.jpeg,#{dir}\)\}\}\n"
|
298
|
+
cont << line
|
299
|
+
else
|
300
|
+
cont << line
|
301
|
+
end
|
302
|
+
}
|
303
|
+
print cont
|
304
|
+
exit
|
305
|
+
end
|
306
|
+
|
307
|
+
desc "numbering figs from the NUBER in FILE"
|
308
|
+
task :number do
|
309
|
+
number=ARGV[1].to_i
|
310
|
+
file = ARGV[2]
|
311
|
+
dir = ARGV[3] || nil
|
312
|
+
lines = File.readlines(file)
|
313
|
+
cont = ""
|
314
|
+
lines.each{|line|
|
315
|
+
if m=line.match(/\{\{attach_view\((\w+|_).(\d+).jpeg,(\w+)\)\}\}/)
|
316
|
+
new_num=sprintf("%03d",number)
|
317
|
+
line="\{\{attach_view\(#{m[1]}.#{new_num}.jpeg,#{m[3]}\)\}\}\n"
|
318
|
+
cont << line
|
319
|
+
number += 1
|
320
|
+
else
|
321
|
+
cont << line
|
322
|
+
end
|
323
|
+
}
|
324
|
+
print cont
|
325
|
+
exit
|
326
|
+
end
|
327
|
+
|
328
|
+
desc "convert fig size SCALE TARGET_DIR"
|
329
|
+
task :convert do
|
330
|
+
scale = ARGV[1]
|
331
|
+
target_dir=ARGV[2]
|
332
|
+
Dir.entries(target_dir)[2..-1].each{|file|
|
333
|
+
p file
|
334
|
+
source = File.join(target_dir,file)
|
335
|
+
target = File.join('figs',file)
|
336
|
+
p command = "convert #{source} -resize #{scale}\% #{target}"
|
337
|
+
system command
|
338
|
+
}
|
339
|
+
exit
|
340
|
+
end
|
341
|
+
|
342
|
+
desc "hikiの同期"
|
343
|
+
task :sync => [:check_previous,:sync0]
|
344
|
+
|
345
|
+
|
346
|
+
desc "hikiの強制同期"
|
347
|
+
task :force_sync => [:sync0]
|
348
|
+
|
349
|
+
task :sync0 do
|
350
|
+
entries=Dir.entries('.')
|
351
|
+
entries[2..-1].each{|source| #cp *.hiki
|
352
|
+
next unless source.split('.')[1]=='hiki'
|
353
|
+
next if source.include?('.hikirc')
|
354
|
+
p base = source.split('.')[0]
|
355
|
+
name = (base==$basename)? base : $basename+'_'+base
|
356
|
+
p target = File.join($hiki_dir,'text',name)
|
357
|
+
FileUtils.cp(source,target,:verbose=>true)
|
358
|
+
}
|
359
|
+
p entries=Dir.entries('./figs') #cp files in figs
|
360
|
+
p target = File.join($hiki_dir,'cache','attach',$basename)
|
361
|
+
FileUtils.mkdir_p(target,:verbose=>true) unless File.exists?(target)
|
362
|
+
entries[2..-1].each{|file|
|
363
|
+
p source = File.join('./figs',file)
|
364
|
+
FileUtils.cp(source,target,:verbose=>true)
|
365
|
+
}
|
366
|
+
|
367
|
+
File.open('./.hikirc','w'){|file|
|
368
|
+
status, stdout, stderr =systemu "hiki -l #{$basename}*"
|
369
|
+
file.print($hiki_dir+"\n")
|
370
|
+
stdout.split("\n")[3..-1].each{|line|
|
371
|
+
file.print line+"\n"
|
372
|
+
}
|
373
|
+
}
|
374
|
+
exit
|
375
|
+
end
|
376
|
+
|
377
|
+
desc "For hiki Errno::ENOENT, Errno::EACCES"
|
378
|
+
task :chenv do
|
379
|
+
p user = ENV['USER']
|
380
|
+
system("sudo chmod -R a+w #{$hiki_dir}")
|
381
|
+
# system("sudo chown -R #{user} #{$hiki_dir}")
|
382
|
+
end
|
383
|
+
|
384
|
+
desc "self copy to hikiutils template directory"
|
385
|
+
task :self_copy do
|
386
|
+
p cp_files=[[File.join(Dir.pwd,'Rakefile'),'Rakefile_hiki_sync'],
|
387
|
+
[File.join(ENV['HOME'],'.my_help','hiki_help.yml'),'hiki_help.yml']]
|
388
|
+
cp_files.each{|files|
|
389
|
+
p source = files[0]
|
390
|
+
p target = File.join('/Users/bob/Github/hikiutils/lib/templates/',files[1])
|
391
|
+
FileUtils.cp(source,target,:verbose=>true)
|
392
|
+
}
|
393
|
+
end
|
394
|
+
|
395
|
+
task :check_previous do
|
396
|
+
current={}
|
397
|
+
print "current hiki dir\n"
|
398
|
+
status, stdout, stderr = systemu("hiki -l #{$basename}*")
|
399
|
+
stdout.split("\n")[3..-1].each{|line|
|
400
|
+
p line
|
401
|
+
file= line.split(/\s+/)[-1]
|
402
|
+
current[file]=line
|
403
|
+
}
|
404
|
+
previous={}
|
405
|
+
print "previous sync\n"
|
406
|
+
File.readlines('.hikirc')[1..-1].each{|line|
|
407
|
+
p line.chomp
|
408
|
+
file= line.split(/\s+/)[-1]
|
409
|
+
previous[file]=line.chomp
|
410
|
+
}
|
411
|
+
changed = []
|
412
|
+
current.each_pair{|key,val|
|
413
|
+
if !previous.include?(key) or previous[key]!=val
|
414
|
+
changed << val+"\n"
|
415
|
+
end
|
416
|
+
}
|
417
|
+
if changed.size != 0
|
418
|
+
print("hiki dirで変更が発生しています.\n")
|
419
|
+
changed.each{|line| print line+"\n"}
|
420
|
+
exit
|
421
|
+
end
|
422
|
+
end
|