hikiutils 0.2.3.8 → 0.2.3.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/hikiutils_bob/Rakefile +16 -4
  3. data/hikiutils_bob/figs/hikiutils_bob.002.bb +5 -0
  4. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.002.bb +5 -0
  5. data/hikiutils_bob/latex_all.hiki +3 -3
  6. data/hikiutils_bob/latex_dir/hikiutils_bob.log +59 -24
  7. data/hikiutils_bob/latex_dir/hikiutils_bob.pdf +0 -0
  8. data/hikiutils_bob/latex_dir/hikiutils_bob.synctex.gz +0 -0
  9. data/hikiutils_bob/latex_dir/latex_all.tex +3 -3
  10. data/hikiutils_bob/latex_dir/sync.aux +1 -1
  11. data/hikiutils_bob/latex_dir/sync.tex +17 -13
  12. data/hikiutils_bob/sync.hiki +9 -6
  13. data/hikiutils_bob/toc.hiki +19 -15
  14. data/hikiutils_yamane/{results.hiki → command.hiki} +11 -13
  15. data/hikiutils_yamane/compare.hiki +13 -297
  16. data/hikiutils_yamane/figs/hikiutils_yamane.001.jpg +0 -0
  17. data/hikiutils_yamane/figs/hikiutils_yamane.002.bb +5 -0
  18. data/hikiutils_yamane/figs/hikiutils_yamane.002.jpg +0 -0
  19. data/hikiutils_yamane/figs/hikiutils_yamane.003.jpg +0 -0
  20. data/hikiutils_yamane/figs/hikiutils_yamane.004.jpg +0 -0
  21. data/hikiutils_yamane/figs/hikiutils_yamane.005.jpg +0 -0
  22. data/hikiutils_yamane/hikiutils_yamane.hiki +8 -7
  23. data/hikiutils_yamane/introduction.hiki +9 -26
  24. data/hikiutils_yamane/latex_dir/command.aux +34 -0
  25. data/hikiutils_yamane/latex_dir/{results.tex → command.tex} +10 -22
  26. data/hikiutils_yamane/latex_dir/compare.aux +24 -0
  27. data/hikiutils_yamane/latex_dir/compare.tex +13 -333
  28. data/hikiutils_yamane/latex_dir/hikiutils_yamane.aux +8 -7
  29. data/hikiutils_yamane/latex_dir/hikiutils_yamane.log +126 -87
  30. data/hikiutils_yamane/latex_dir/hikiutils_yamane.pdf +0 -0
  31. data/hikiutils_yamane/latex_dir/hikiutils_yamane.synctex.gz +0 -0
  32. data/hikiutils_yamane/latex_dir/hikiutils_yamane.tex +6 -5
  33. data/hikiutils_yamane/latex_dir/hikiutils_yamane.toc +25 -21
  34. data/hikiutils_yamane/latex_dir/{purpose.aux → introduction.aux} +6 -4
  35. data/hikiutils_yamane/latex_dir/introduction.tex +7 -29
  36. data/hikiutils_yamane/latex_dir/optparse.aux +29 -0
  37. data/hikiutils_yamane/latex_dir/optparse.tex +116 -0
  38. data/hikiutils_yamane/latex_dir/thor.aux +32 -0
  39. data/hikiutils_yamane/latex_dir/thor.tex +112 -0
  40. data/hikiutils_yamane/optparse.hiki +113 -0
  41. data/hikiutils_yamane/thor.hiki +108 -0
  42. data/hikiutils_yamane/toc.hiki +15 -17
  43. data/lib/hikiutils/version.rb +1 -1
  44. data/lib/templates/Rakefile_hiki_sync +16 -4
  45. data/lib/templates/hiki_help.yml +2 -2
  46. metadata +61 -80
  47. data/hikiutils_yamane/clidescription.hiki +0 -35
  48. data/hikiutils_yamane/code.hiki +0 -285
  49. data/hikiutils_yamane/command_table.hiki +0 -19
  50. data/hikiutils_yamane/figs/hikiutils_yamane.001.jpeg +0 -0
  51. data/hikiutils_yamane/figs/hikiutils_yamane.002.jpeg +0 -0
  52. data/hikiutils_yamane/figs/hikiutils_yamane.003.jpeg +0 -0
  53. data/hikiutils_yamane/figs/hikiutils_yamane.004.jpeg +0 -0
  54. data/hikiutils_yamane/figs/hikiutils_yamane.005.jpeg +0 -0
  55. data/hikiutils_yamane/figs/hikiutils_yamane.006.jpeg +0 -0
  56. data/hikiutils_yamane/figs/hikiutils_yamane.007.jpeg +0 -0
  57. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.001.jpg +0 -0
  58. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.002.jpg +0 -0
  59. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.003.jpg +0 -0
  60. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.004.jpg +0 -0
  61. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.005.jpg +0 -0
  62. data/hikiutils_yamane/hikiutils_yamane.key +0 -0
  63. data/hikiutils_yamane/latex_dir/clidescription.aux +0 -24
  64. data/hikiutils_yamane/latex_dir/clidescription.tex +0 -41
  65. data/hikiutils_yamane/latex_dir/code.aux +0 -41
  66. data/hikiutils_yamane/latex_dir/code.tex +0 -319
  67. data/hikiutils_yamane/latex_dir/command_table.tex +0 -29
  68. data/hikiutils_yamane/latex_dir/method.aux +0 -25
  69. data/hikiutils_yamane/latex_dir/method.tex +0 -14
  70. data/hikiutils_yamane/latex_dir/purpose.tex +0 -8
  71. data/hikiutils_yamane/latex_dir/results.aux +0 -28
  72. data/hikiutils_yamane/latex_dir/system.tex +0 -23
  73. data/hikiutils_yamane/method.hiki +0 -12
  74. data/hikiutils_yamane/mi +0 -0
  75. data/hikiutils_yamane/purpose.hiki +0 -7
  76. data/hikiutils_yamane/system.hiki +0 -18
  77. /data/hikiutils_yamane/figs/{hikiutils_yamane_09_copy.006.jpg → hikiutils_yamane.006.jpg} +0 -0
  78. /data/hikiutils_yamane/figs/{hikiutils_yamane_09_copy.007.jpg → hikiutils_yamane.007.jpg} +0 -0
  79. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.001.jpg → hikiutils_yamane/hikiutils_yamane.001.jpg} +0 -0
  80. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.002.jpg → hikiutils_yamane/hikiutils_yamane.002.jpg} +0 -0
  81. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.003.jpg → hikiutils_yamane/hikiutils_yamane.003.jpg} +0 -0
  82. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.004.jpg → hikiutils_yamane/hikiutils_yamane.004.jpg} +0 -0
  83. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.005.jpg → hikiutils_yamane/hikiutils_yamane.005.jpg} +0 -0
  84. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.006.jpg → hikiutils_yamane/hikiutils_yamane.006.jpg} +0 -0
  85. /data/hikiutils_yamane/{hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.007.jpg → hikiutils_yamane/hikiutils_yamane.007.jpg} +0 -0
  86. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  87. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  88. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_familychineseoahu_en_00317_2040x1360-96.jpeg +0 -0
  89. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_familychineseoahu_en_02016_981x654-97.jpeg +0 -0
  90. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_familychineseoahu_en_02390_2880x1921-94.jpeg +0 -0
  91. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/110809_familychineseoahu_en_02390_2880x1921-small-95.jpg +0 -0
  92. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt0@2x-102.jpg +0 -0
  93. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt10@2x-112.jpg +0 -0
  94. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt1@2x-103.jpg +0 -0
  95. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt2@2x-104.jpg +0 -0
  96. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt3@2x-105.jpg +0 -0
  97. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt4@2x-106.jpg +0 -0
  98. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt5@2x-107.jpg +0 -0
  99. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt6@2x-108.jpg +0 -0
  100. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt7@2x-109.jpg +0 -0
  101. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt8@2x-110.jpg +0 -0
  102. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/mt9@2x-111.jpg +0 -0
  103. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/pasted-image-100.tiff +0 -0
  104. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/pasted-image-98.tiff +0 -0
  105. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/pasted-image-small-101.png +0 -0
  106. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/pasted-image-small-99.png +0 -0
  107. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st0-113.jpg +0 -0
  108. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st1-114.jpg +0 -0
  109. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st2-115.jpg +0 -0
  110. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st3-116.jpg +0 -0
  111. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st4-117.jpg +0 -0
  112. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st5-118.jpg +0 -0
  113. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/st6-119.jpg +0 -0
  114. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Data/tile_paper_medgray-93.jpg +0 -0
  115. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Index.zip +0 -0
  116. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Metadata/BuildVersionHistory.plist +0 -0
  117. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Metadata/DocumentIdentifier +0 -0
  118. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/Metadata/Properties.plist +0 -0
  119. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/preview-micro.jpg +0 -0
  120. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/preview-web.jpg +0 -0
  121. /data/hikiutils_yamane/{hikiutils_yamane_09_copy.key → hikiutils_yamane.key}/preview.jpg +0 -0
@@ -1,319 +0,0 @@
1
-
2
- \subsection{Thorの初期化}
3
- \begin{figure}[htbp]\begin{center}
4
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.003.jpg}
5
- \caption{}
6
- \label{default}\end{center}\end{figure}
7
- \begin{itemize}
8
- \item Thorのinitializeでのコード
9
- \end{itemize}
10
- \begin{enumerate}
11
- \item Hikithor::CLI.start(ARGV)が呼ばれる
12
- \item initializeメソッドが呼ばれる
13
- \item これではThorのinitializeメソッドが呼ばれない
14
- \item superを書くことでThorのinitializeメソッドが呼ばれる
15
- \end{enumerate}
16
- optparseではrequireでoptparseを呼びoptparseのinitializeを定義する必要はないが,Thorはinitializeを定義する必要がある.
17
- Thorの定義方法はrequireでThorを呼びCLIクラスで継承し,initializeメソッドにsuperを書くことでThorのinitializeが呼ばれる.
18
- initializeメソッド内ではThorの初期設定がされていないため,スーパークラスのメソッドを読み出してくれるsuperを書き加えることで図のようにinitializeメソッド内でThorのinitilalizeメソッドが
19
- 呼ばれ定義される.
20
-
21
- \subsubsection{コード}\begin{lstlisting}[style=customRuby]
22
- # -*- coding: utf-8 -*-
23
- require 'thor'
24
- require 'kconv'
25
- require 'hikidoc'
26
- require 'erb'
27
- require "hikiutils/version"
28
- require "hikiutils/tmarshal"
29
- require "hikiutils/infodb"
30
- require 'systemu'
31
- require 'fileutils'
32
- require 'yaml'
33
- require 'pp'
34
-
35
- module Hikithor
36
-
37
- DATA_FILE=File.join(ENV['HOME'],'.hikirc')
38
- attr_accessor :src, :target, :editor_command, :browser, :data_name, :l_dir
39
-
40
- class CLI < Thor
41
- def initialize(*args)
42
- super
43
- @data_name=['nick_name','local_dir','local_uri','global_dir','global_uri']
44
- data_path = File.join(ENV['HOME'], '.hikirc')
45
- DataFiles.prepare(data_path)
46
-
47
- file = File.open(DATA_FILE,'r')
48
- @src = YAML.load(file.read)
49
- file.close
50
- @target = @src[:target]
51
- @l_dir=@src[:srcs][@target][:local_dir]
52
- browser = @src[:browser]
53
- @browser = (browser==nil) ? 'firefox' : browser
54
- p editor_command = @src[:editor_command]
55
- @editor_command = (editor_command==nil) ? 'open -a mi' : editor_command
56
- end
57
- \end{lstlisting}
58
- \subsection{コマンド表示と処理}
59
- \subsubsection{Thor}
60
- \begin{figure}[htbp]\begin{center}
61
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.004.jpg}
62
- \caption{}
63
- \label{default}\end{center}\end{figure}
64
- \begin{enumerate}
65
- \item コマンド名,コマンドの説明を一覧に表示させる
66
- \item パブリックメソッドのコマンドを別のコマンド名でも実行できるようにする
67
- \item コマンドの命令の実行コード
68
- \end{enumerate}
69
- Thorではdescで一覧を表示させるコマンド名,コマンドの説明を登録する.しかし,ここで記述したコマンドは一覧で表示させるものであり,実行されることはないので実際のコマンドと対応させる必要がある.
70
- Thorでは処理実行を行うメソッドがコマンドとなる.しかし,それではコマンド名は1つしか使うことができない.
71
- ここで用いるものがmapである.
72
- \begin{quote}\begin{verbatim}
73
- map A => B
74
- \end{verbatim}\end{quote}
75
- mapとはBでしか読めないものをAでも読めるようにしてくれるものである.
76
- よって,これを使うことで別のコマンドも指定することができる.
77
-
78
- \subsubsection{optparse}
79
- \begin{figure}[htbp]\begin{center}
80
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.005.jpg}
81
- \caption{}
82
- \label{default}\end{center}\end{figure}
83
- \begin{enumerate}
84
- \item OptionParserオブジェクトoptを生成
85
- \item optにコマンドを登録
86
- \item 入力されたコマンドの処理のメソッドへ移動
87
- \end{enumerate}
88
- optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけで
89
- コマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録された
90
- コマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録は
91
- また別の手段でやらなくてはいけない.
92
- 以上より,Thorではコマンドの指定と処理にはdesc,map,処理メソッドだけで済むが,optparseではコマンドを登録するためのメソッドと処理メソッドが必要になってくる.
93
- また,コマンドはThorでは処理メソッドがコマンド名になるが,optparseではコマンドを登録するための処理も必要となってくる.
94
-
95
- \subsubsection{コード}
96
- \begin{itemize}
97
- \item Thor
98
- \end{itemize}\begin{lstlisting}[style=customRuby]
99
- desc 'show,--show', 'show sources'
100
- map "--show" => "show"
101
- def show
102
- printf("target_no:%i\n",@src[:target])
103
- printf("editor_command:%s\n",@src[:editor_command])
104
- @i_size,@n_size,@l_size,@g_size=3,5,30,15 #i,g_size are fixed
105
- n_l,l_l=0,0
106
- @src[:srcs].each_with_index{|src,i|
107
- n_l =(n_l= src[:nick_name].length)>@n_size? n_l:@n_size
108
- l_l =(l_l= src[:local_dir].length)>@l_size? l_l:@l_size
109
- }
110
- @n_size,@l_size=n_l,l_l
111
- command = Command.new
112
- header = command.display_format('id','name','local directory','global uri',@i_size,@n_size,@l_size,@g_size)
113
-
114
- puts header
115
- puts '-' * header.size
116
-
117
- @src[:srcs].each_with_index{|src,i|
118
- target = i==@src[:target] ? '*':' '
119
- id = target+i.to_s
120
- name=src[:nick_name]
121
- local=src[:local_dir]
122
- global=src[:global_uri]
123
- puts command.display_format(id,name,local,global,@i_size,@n_size,@l_size,@g_size)
124
- }
125
- end
126
- \end{lstlisting}
127
- \begin{itemize}
128
- \item optparse
129
- \end{itemize}\begin{lstlisting}[style=customRuby]
130
- def execute
131
- @argv << '--help' if @argv.size==0
132
- command_parser = OptionParser.new do |opt|
133
- opt.on('-v', '--version','show program Version.') { |v|
134
- opt.version = HikiUtils::VERSION
135
- puts opt.ver
136
- }
137
- opt.on('-s', '--show','show sources') {show_sources}
138
- opt.on('-a', '--add','add sources info') {add_sources }
139
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val)}
140
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
141
- opt.on('-l', '--list [FILE]','list files') {|file| list_files(file)}
142
- opt.on('-u', '--update FILE','update file') {|file| update_file(file) }
143
- opt.on('-r', '--rsync','rsync files') {rsync_files}
144
- opt.on('--database FILE','read database file') {|file| db_file(file)}
145
- opt.on('--display FILE','display converted hikifile') {|file| display(file)}
146
- opt.on('-c', '--checkdb','check database file') {check_db}
147
- opt.on('--remove FILE','remove file') {|file| remove_file(file)}
148
- opt.on('--move FILES','move file1,file2',Array) {|files| move_file(files)}
149
- opt.on('--euc FILE','translate file to euc') {|file| euc_file(file)}
150
- opt.on('--initialize','initialize source directory') {dir_init() }
151
- end
152
- begin
153
- command_parser.parse!(@argv)
154
- rescue=> eval
155
- p eval
156
- end
157
- dump_sources
158
- exit
159
- end
160
-
161
- def show_sources()
162
- printf("target_no:%i\n",@src[:target])
163
- printf("editor_command:%s\n",@src[:editor_command])
164
- check_display_size()
165
- header = display_format('id','name','local directory','global uri')
166
-
167
- puts header
168
- puts '-' * header.size
169
-
170
- @src[:srcs].each_with_index{|src,i|
171
- target = i==@src[:target] ? '*':' '
172
- id = target+i.to_s
173
- name=src[:nick_name]
174
- local=src[:local_dir]
175
- global=src[:global_uri]
176
- puts display_format(id,name,local,global)
177
- }
178
- end
179
-
180
- def add_sources
181
- cont = {}
182
- @data_name.each{|name|
183
- printf("%s ? ", name)
184
- tmp = gets.chomp
185
- cont[name.to_sym] = tmp
186
- }
187
- @src[:srcs] << cont
188
- show_sources
189
- end
190
- \end{lstlisting}
191
- \subsection{CLIの実行}
192
- \subsubsection{Thor}
193
- \begin{figure}[htbp]\begin{center}
194
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.006.jpg}
195
- \caption{}
196
- \label{default}\end{center}\end{figure}
197
- \begin{itemize}
198
- \item 実行手順
199
- \end{itemize}
200
- \begin{enumerate}
201
- \item hiki\_thorのHikithor::CLI.start(ARGV)でhikiutils\_thor.rbのCLIクラスを呼ぶ
202
- \item hikiutils\_thor.rbのCLIクラスのメソッドを順に実行していく
203
- \end{enumerate}
204
- Thorではstart(ARGV)を呼び出すことでCLIを開始する.Hikithor::CLI.start(ARGV)を実行されることによりrequireで呼ばれているhikiutils\_thor.rbのCLIコマンドを順に実行する.
205
- そして,入力されたコマンドと一致するメソッドを探し,そのコマンドの処理が実行される.
206
-
207
- \subsubsection{optparse}
208
- \begin{figure}[htbp]\begin{center}
209
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.007.jpg}
210
- \caption{}
211
- \label{default}\end{center}\end{figure}
212
- \begin{itemize}
213
- \item 実行手順
214
- \end{itemize}
215
- \begin{enumerate}
216
- \item HikiのHikiUtils::Command.run(ARGV)でhikiutils.rbのrunメソッドを呼ぶ
217
- \item new(argv).executeでexecuteメソッドが実行される
218
- \end{enumerate}
219
- 一方,optparseではHikiutils::Command.run(ARGV)を実行される.requireで呼び出されたhikiutils.rbでrunメソッドが実行される.
220
- そこでコマンドを登録しているexecuteメソッドへ移動し入力したコマンドと対応させる.そして,対応したコマンドの処理が行われるメソッドに移動することで実行される.
221
- このようにoptparseでは実行を行うためのメソッドが必要であるが,Thorではクラスのメソッドを順に実行していくため
222
- runメソッドとexecuteメソッドは必要ない.また,optparseでの実行手順はメソッドの移動回数が多く複雑であるが,Thorは単純で分かりやすいものとなっている.
223
-
224
- \subsubsection{コード}
225
- \begin{itemize}
226
- \item Thor
227
- \end{itemize}\begin{lstlisting}[style=customRuby]
228
- #!/usr/bin/env ruby
229
-
230
- require "hikiutils_thor"
231
-
232
- Hikithor::CLI.start(ARGV)
233
- \end{lstlisting}\begin{lstlisting}[style=customRuby]
234
- # -*- coding: utf-8 -*-
235
- require 'thor'
236
- require 'kconv'
237
- require 'hikidoc'
238
- require 'erb'
239
- require "hikiutils/version"
240
- require "hikiutils/tmarshal"
241
- require "hikiutils/infodb"
242
- require 'systemu'
243
- require 'fileutils'
244
- require 'yaml'
245
- require 'pp'
246
-
247
- module Hikithor
248
-
249
- DATA_FILE=File.join(ENV['HOME'],'.hikirc')
250
- attr_accessor :src, :target, :editor_command, :browser, :data_name, :l_dir
251
-
252
- class CLI < Thor
253
- def initialize(*args)
254
- super
255
- @data_name=['nick_name','local_dir','local_uri','global_dir','global_uri']
256
- data_path = File.join(ENV['HOME'], '.hikirc')
257
- DataFiles.prepare(data_path)
258
-
259
- file = File.open(DATA_FILE,'r')
260
- @src = YAML.load(file.read)
261
- file.close
262
- @target = @src[:target]
263
- @l_dir=@src[:srcs][@target][:local_dir]
264
- browser = @src[:browser]
265
- @browser = (browser==nil) ? 'firefox' : browser
266
-
267
- \end{lstlisting}
268
- \begin{itemize}
269
- \item optparse
270
- \end{itemize}\begin{lstlisting}[style=customRuby]
271
- #!/usr/bin/env ruby
272
-
273
- require "hikiutils"
274
-
275
- HikiUtils::Command.run(ARGV)
276
- \end{lstlisting}\begin{lstlisting}[style=customRuby]
277
- def self.run(argv=[])
278
- print "hikiutils: provide utilities for helping hiki editing.\n"
279
- new(argv).execute
280
- end
281
-
282
- def execute
283
- @argv << '--help' if @argv.size==0
284
- command_parser = OptionParser.new do |opt|
285
- opt.on('-v', '--version','show program Version.') { |v|
286
- opt.version = HikiUtils::VERSION
287
- puts opt.ver
288
- }
289
- opt.on('-s', '--show','show sources') {show_sources}
290
- opt.on('-a', '--add','add sources info') {add_sources }
291
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val) }
292
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
293
- opt.on('-l', '--list [FILE]','list files') {|file| list_files(file) }
294
- opt.on('-u', '--update FILE','update file') {|file| update_file(file) }
295
- opt.on('-r', '--rsync','rsync files') {rsync_files}
296
- opt.on('--database FILE','read database file') {|file| db_file(file)}
297
- opt.on('--display FILE','display converted hikifile') {|file| display(f\
298
- ile)}
299
- opt.on('-c', '--checkdb','check database file') {check_db}
300
- opt.on('--remove FILE','remove file') {|file| remove_file(file)}
301
- opt.on('--move FILES','move file1,file2',Array) {|files| move_file(file\
302
- s)}
303
- opt.on('--euc FILE','translate file to euc') {|file| euc_file(file) }
304
- opt.on('--initialize','initialize source directory') {dir_init() }
305
- end
306
- begin
307
- command_parser.parse!(@argv)
308
- rescue=> eval
309
- p eval
310
- end
311
- dump_sources
312
- exit
313
- end
314
- \end{lstlisting}
315
- コードからもThorのほうが短くなっていることが分かる.
316
- よって,Thorとoptparseでのコードの違いは以上の部分になるが全体的にもThorのほうがコードが短くなり,
317
- コマンドの定義も簡単に行うことができる.また,実行手順も分かりやすくコードが読みやすいため書き換えもすぐ行うことが
318
- できるので,より直感的なコマンドを実装することも可能となった.
319
-
@@ -1,29 +0,0 @@
1
- \section{コマンド名の検討}
2
- bashあるいはtcshなどのshellコマンドの振る舞いに似た振る舞いをするコマンドはおなじ名前を振るべきと考えられる.そこで,次のように検討を加える.
3
-
4
- \begin{table}[htbp]\begin{center}
5
- \caption{}
6
- \begin{tabular}{llll}
7
- \hline
8
- 現在のcommand &変える? &検討内容 \\ \hline
9
- add & &add sources info \\
10
- checkdb & &check database file \\
11
- datebase FILE & &read datebase file \\
12
- display FILE &? &display converted hikifile \\
13
- edit FILE &open &open file \\
14
- euc FILE & &translate file to euc \\
15
- help [COMMAND] & &Describe available commands or one specific command \\
16
- list [FILE] &ls &list files \\
17
- move [FILE] &mv| move file \\
18
- remove [FILE] &rm &remove files \\
19
- rsync & &rsync files \\
20
- show &?? &lsとかぶる. \\
21
- target VAL &cd &set target id \\
22
- update FILE &touch &update file \\
23
- version & &show program version \\
24
- \hline
25
- \end{tabular}
26
- \label{default}
27
- \end{center}\end{table}
28
- %for inserting separate lines, use \hline, \cline{2-3} etc.
29
-
@@ -1,25 +0,0 @@
1
- \relax
2
- \@writefile{toc}{\contentsline {section}{\numberline {3}方法}{5}}
3
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}既存システムの説明}{5}}
4
- \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces hiki web systemとhiki systemの対応関係.}}{5}}
5
- \newlabel{default}{{1}{5}}
6
- \@setckpt{method}{
7
- \setcounter{page}{7}
8
- \setcounter{equation}{0}
9
- \setcounter{enumi}{0}
10
- \setcounter{enumii}{0}
11
- \setcounter{enumiii}{0}
12
- \setcounter{enumiv}{0}
13
- \setcounter{footnote}{0}
14
- \setcounter{mpfootnote}{0}
15
- \setcounter{part}{0}
16
- \setcounter{section}{3}
17
- \setcounter{subsection}{1}
18
- \setcounter{subsubsection}{0}
19
- \setcounter{paragraph}{0}
20
- \setcounter{subparagraph}{0}
21
- \setcounter{figure}{1}
22
- \setcounter{table}{0}
23
- \setcounter{lstnumber}{1}
24
- \setcounter{lstlisting}{0}
25
- }
@@ -1,14 +0,0 @@
1
- \section{方法}
2
- \subsection{既存システムの説明}
3
- 図に従ってhiki systemの動作概要を説明する.
4
-
5
- \begin{figure}[htbp]\begin{center}
6
- \includegraphics[width=6cm,bb=0 0 442 432]{../figs/./hikiutils_yamane_09_copy.001.jpg}
7
- \caption{hiki web systemとhiki systemの対応関係.}
8
- \label{default}\end{center}\end{figure}
9
- hikiは,hiki記法を用いたwiki cloneです.wikiはウォード・カニンガムが作ったwikiwikiwebを源流とするhome page制作を容易にするシステムで,hikiもwikiの基本要求仕様を満足するシステムを提供しています.wikiの特徴であるweb上で編集する機能を提供しています.これを便宜上hiki web systemと呼びます.図にある通り,一般的な表示画面の他に,編集画面が提供されており,ユーザーはこの編集画面からコンテンツを編集することが可能です.リンクやヘッダー,リスト,引用,表,図の表示などの基本テキストフォーマットが用意されています.
10
-
11
- hiki web systemの実際の基本動作は,hiki.cgiプログラムを介して行われています.こちらを便宜上hiki systemと呼びます.hiki systemは,data/textに置かれた書かれたプレーンテキストをhtmlへ変換します.この変換はhikidoc[1-1]というhikiフォーマットconverterを使っています.また,添付書類はcache/attachに,一度フォーマットしたhtmlはparserに置かれており,それらを参照してhtmlを表示する画面をhiki.cgiは作っています.さらにhiki systemでは検索機能,自動リンク作成などが提供されています
12
-
13
- 研究室内の内部文書,あるいは外部への宣伝資料,さらにwikipediaのように重要な研究成果の発信などに西谷研ではこのhiki systemを利用しています.初心者にも覚えやすい直感的な操作です.しかし,慣れてくるとテキスト編集や画面更新にいちいちweb画面へ移行せねばならず,編集の思考が停止します.そこで,テキスト編集に優れたeditorとの連携や,terminal上のshell commandと連携しやすいようにhikiutilsというcli(command line interface)を作成して運用しています.このhikiutilsのコマンドオプションの実装をしなおして,より使いやすくすることが本研究の目的です.
14
-
@@ -1,8 +0,0 @@
1
- \section{目的}
2
- 本研究ではhikiの編集作業をより容易にするためのツールの開発を行った.
3
- hikiは通常web上で編集を行っているが,GUIとCUIが混在しており,操作に不便な点がある.
4
- そこで,編集操作が CUI で完結するために開発をされたのが hikiutils である.
5
- しかし,そのユーザインタフェースにはコマンドが直感的でないという問題点がある.
6
- そこで,Thorというコマンドラインツール作成ライブラリを用いる.
7
- optparseというコマンドライン解析ライブラリを使用しているhikiutilsを新たなコマンドライン解析ライブラリを使用することコマンドを書き換え,より直感的なコマンドにして使いやすくする.
8
-
@@ -1,28 +0,0 @@
1
- \relax
2
- \@writefile{toc}{\contentsline {subsection}{\numberline {4.1}コマンドの命名原則}{8}}
3
- \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}hikiutilsがあらかじめ想定している利用形態}{8}}
4
- \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces hikiutilsがあらかじめ想定している利用形態}}{8}}
5
- \newlabel{default}{{2}{8}}
6
- \@writefile{toc}{\contentsline {subsection}{\numberline {4.3}コメンド名と振る舞いの詳細}{10}}
7
- \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces }}{10}}
8
- \newlabel{default}{{1}{10}}
9
- \@setckpt{results}{
10
- \setcounter{page}{12}
11
- \setcounter{equation}{0}
12
- \setcounter{enumi}{0}
13
- \setcounter{enumii}{0}
14
- \setcounter{enumiii}{0}
15
- \setcounter{enumiv}{0}
16
- \setcounter{footnote}{0}
17
- \setcounter{mpfootnote}{0}
18
- \setcounter{part}{0}
19
- \setcounter{section}{4}
20
- \setcounter{subsection}{3}
21
- \setcounter{subsubsection}{0}
22
- \setcounter{paragraph}{0}
23
- \setcounter{subparagraph}{0}
24
- \setcounter{figure}{2}
25
- \setcounter{table}{1}
26
- \setcounter{lstnumber}{12}
27
- \setcounter{lstlisting}{0}
28
- }
@@ -1,23 +0,0 @@
1
- \subsubsection{hiki}
2
- hikiとはプログラミング言語Rubyを用いられることで作られたwikiクローンの1つである.\verb|{{br}}|
3
- hikiの主な特徴として
4
-
5
- \begin{itemize}
6
- \item オリジナルwikiに似たシンプルな書式
7
- \item プラグインによる機能拡張
8
- \item 出力するHTMLを柔軟に変更可能
9
- \item ページにカテゴリ付けできる
10
- \item CSSを使ったテーマ機能
11
- \item 携帯端末可能
12
- \item InterWikiのサポート
13
- \item HikiFarmに対応
14
- \item ページの追加,編集がしやすい
15
- \end{itemize}
16
- 等がある
17
-
18
- \subsubsection{hikiutils}
19
- hikiutils は hiki の編集作業を容易に行うことができるよう にするツール群であり,プログラミング言語 Ruby のライブ ラリである gem フォーマットに従って提供されている.
20
- hikiutils は CLI(Command Line Interface) で操作するため, オプション解析をおこなう必要がある.
21
- gem には,この用途 に適合したライブラリがいくつも提供されている.
22
- この中 で,あまり利用頻度は高くないが古くから開発され,使用例 が広く紹介されている optparse を利用している.
23
-
@@ -1,12 +0,0 @@
1
- !方法
2
- !!既存システムの説明
3
- 図に従ってhiki systemの動作概要を説明する.
4
-
5
- !!!caption:hiki web systemとhiki systemの対応関係.
6
- {{attach_view(hikiutils_yamane_09_copy.001.jpg,hikiutils_yamane)}}
7
-
8
- hikiは,hiki記法を用いたwiki cloneです.wikiはウォード・カニンガムが作ったwikiwikiwebを源流とするhome page制作を容易にするシステムで,hikiもwikiの基本要求仕様を満足するシステムを提供しています.wikiの特徴であるweb上で編集する機能を提供しています.これを便宜上hiki web systemと呼びます.図にある通り,一般的な表示画面の他に,編集画面が提供されており,ユーザーはこの編集画面からコンテンツを編集することが可能です.リンクやヘッダー,リスト,引用,表,図の表示などの基本テキストフォーマットが用意されています.
9
-
10
- hiki web systemの実際の基本動作は,hiki.cgiプログラムを介して行われています.こちらを便宜上hiki systemと呼びます.hiki systemは,data/textに置かれた書かれたプレーンテキストをhtmlへ変換します.この変換はhikidoc[1-1]というhikiフォーマットconverterを使っています.また,添付書類はcache/attachに,一度フォーマットしたhtmlはparserに置かれており,それらを参照してhtmlを表示する画面をhiki.cgiは作っています.さらにhiki systemでは検索機能,自動リンク作成などが提供されています
11
-
12
- 研究室内の内部文書,あるいは外部への宣伝資料,さらにwikipediaのように重要な研究成果の発信などに西谷研ではこのhiki systemを利用しています.初心者にも覚えやすい直感的な操作です.しかし,慣れてくるとテキスト編集や画面更新にいちいちweb画面へ移行せねばならず,編集の思考が停止します.そこで,テキスト編集に優れたeditorとの連携や,terminal上のshell commandと連携しやすいようにhikiutilsというcli(command line interface)を作成して運用しています.このhikiutilsのコマンドオプションの実装をしなおして,より使いやすくすることが本研究の目的です.
data/hikiutils_yamane/mi DELETED
File without changes
@@ -1,7 +0,0 @@
1
- !目的
2
- 本研究ではhikiの編集作業をより容易にするためのツールの開発を行った.
3
- hikiは通常web上で編集を行っているが,GUIとCUIが混在しており,操作に不便な点がある.
4
- そこで,編集操作が CUI で完結するために開発をされたのが hikiutils である.
5
- しかし,そのユーザインタフェースにはコマンドが直感的でないという問題点がある.
6
- そこで,Thorというコマンドラインツール作成ライブラリを用いる.
7
- optparseというコマンドライン解析ライブラリを使用しているhikiutilsを新たなコマンドライン解析ライブラリを使用することコマンドを書き換え,より直感的なコマンドにして使いやすくする.
@@ -1,18 +0,0 @@
1
- !!!hiki
2
- hikiとはプログラミング言語Rubyを用いられることで作られたwikiクローンの1つである.{{br}}
3
- hikiの主な特徴として
4
- *オリジナルwikiに似たシンプルな書式
5
- *プラグインによる機能拡張
6
- *出力するHTMLを柔軟に変更可能
7
- *ページにカテゴリ付けできる
8
- *CSSを使ったテーマ機能
9
- *携帯端末可能
10
- *InterWikiのサポート
11
- *HikiFarmに対応
12
- *ページの追加,編集がしやすい
13
- 等がある
14
- !!!hikiutils
15
- hikiutils は hiki の編集作業を容易に行うことができるよう にするツール群であり,プログラミング言語 Ruby のライブ ラリである gem フォーマットに従って提供されている.
16
- hikiutils は CLI(Command Line Interface) で操作するため, オプション解析をおこなう必要がある.
17
- gem には,この用途 に適合したライブラリがいくつも提供されている.
18
- この中 で,あまり利用頻度は高くないが古くから開発され,使用例 が広く紹介されている optparse を利用している.