hikiutils 0.2.3.15 → 0.2.3.16

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 194f3cdc8e097266bfb45ce254caa7c80122f81b
4
- data.tar.gz: a84cd96a79493510e8008d37294cb48039310a57
3
+ metadata.gz: d1a5c575e0620e966b2df629ea55328d3e96c712
4
+ data.tar.gz: 35159b030aa4d490796706c24043f8388d266587
5
5
  SHA512:
6
- metadata.gz: c28d5d95b1da7561729cb0c3220ce94c8cfb5891ed70cb1d912f8f89ed45f7edb7d5459922ed129c712350dfd1b578ae0f56e389ccd71291ca92938ccc79d984
7
- data.tar.gz: 8c65f56c7749c5900497edf09132222a521bcf1fa291783599e073ad3c3913fba77a4ee5df95480baf01031eb1d580650920cca53543cef64406d635dcbaed59
6
+ metadata.gz: ba083977c2fec6016885cfa5e06c4d28104cfddfeb065614fca4b3f744ab5f76d6670b3843fda0195847ada542203c5c9e8aeba5e534a655dd160f1f917b13e8
7
+ data.tar.gz: c40c231fc2715f409c2a7ca781093940e0a1151f0885fd7f80b9532ed8b292bbb0f414e0c2d46d74ff5344f2e128aa6a7900e752103082bd686ef74d8bf66523
@@ -1,3 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+
1
3
  # -*- coding: utf-8 -*-
2
4
  require 'systemu'
3
5
  require 'tempfile'
@@ -186,7 +188,10 @@ end
186
188
 
187
189
  def check_bounding_box
188
190
  # $bounding_box="0 0 442 432"
189
- $bounding_box=" 0 0 737 553"
191
+ # $bounding_box=" 0 0 737 553"
192
+ # $fig_width="10"
193
+ $bounding_box=" 0 0 937 753"
194
+ $fig_width="12"
190
195
  end
191
196
 
192
197
  desc "すべてのhikiファイルをlatex変換"
@@ -206,7 +211,7 @@ task :latex_all do
206
211
  line = ''
207
212
  end
208
213
  end
209
- line ="\\usepackage{listings,jlisting}" if line.match(/\\usepackage{listings}/)
214
+ line ="\\usepackage{url}\n\\usepackage{listings,jlisting}\n" if line.match(/\\usepackage{listings}/)
210
215
  if line.match(/section{(.+)}/)
211
216
  if m=line.match(/\\verb\|(.+)\((.+)\)\|/)
212
217
  p m
@@ -273,10 +278,12 @@ def convert_to_latex(file_name, options={})
273
278
  line = "\\end{thebibliography}\n"
274
279
  end
275
280
  if m=line.match(/\\item\[(.+)\](.+)/) and in_bib==true
276
- line ="\\bibitem{#{m[1]}} #{m[2]}"
281
+ tmp=m[2].gsub!(/\\verb\|(.*?)\|/){ "\\url{#{$1}}" }
282
+ line ="\\bibitem{#{m[1]}} #{tmp}"
283
+ puts line.blue
277
284
  end
278
285
  if m=line.match(/\\includegraphics\[width=6cm\]\{(.+)\}/)
279
- p line="\\includegraphics\[width=10cm,bb=#{$bounding_box}\]\{../figs/#{m[1]}\}\n"
286
+ p line="\\includegraphics\[width=#{$fig_width}cm,bb=#{$bounding_box}\]\{../figs/#{m[1]}\}\n"
280
287
  cont << line
281
288
  else
282
289
  cont << line
@@ -14,10 +14,10 @@
14
14
  //!![[hikiutilsのthorのコード解説|hikiutils_yamane_thor]]
15
15
  ![[議論|hikiutils_yamane_discussion]]
16
16
  !reference:
17
- :1-1: hikidoc, https://rubygems.org/gems/hikidoc/versions/0.1.0, https://github.com/hiki/hikidoc,2017/1/30 アクセス.
17
+ :1-1: hikidoc, https://rubygems.org/gems/hikidoc/versions/0.1.0, https://github.com/hiki/hikidoc, 2017/1/30 アクセス.
18
18
  // 「hiki」,hikiwiki.org/ja/about.html ,2017/1/30 アクセス.
19
19
  // 「hikiutils」,https://rubygems.org/gems/hikiutils ,2017/1/30 アクセス.
20
20
  // 「The Ruby Toolbox」, CLI Option Parsers,https://www.ruby-toolbox.com/categories/CLI_Option_Parsers ,2017/1/30 アクセス.
21
- :1-2: 「Thorの使い方まとめ」,http://qiita.com/succi0303/items/32560103190436c9435b 2015/01/14更新,2017/1/30 アクセス.
22
- :1-3: 「15.5. optparse - コマンドラインオプション解析器」, http://docs.python.jp/2/library/optparse.html ,2017/1/30 アクセス.
23
- :1-4: 「library optparse」, https://docs.ruby-lang.org/ja/latest/library/optparse.html ,2017/1/30 アクセス.
21
+ :1-2: 「Thorの使い方まとめ」, http://qiita.com/succi0303/items/32560103190436c9435b 2015/01/14更新, 2017/1/30 アクセス.
22
+ :1-3: 「15.5. optparse - コマンドラインオプション解析器」, http://docs.python.jp/2/library/optparse.html, 2017/1/30 アクセス.
23
+ :1-4: 「library optparse」, https://docs.ruby-lang.org/ja/latest/library/optparse.html, 2017/1/30 アクセス.
@@ -1,7 +1,7 @@
1
1
  \relax
2
- \@writefile{toc}{\contentsline {section}{\numberline {5}optparseからThorへの移行}{23}}
2
+ \@writefile{toc}{\contentsline {section}{\numberline {5}optparseからThorへの移行}{24}}
3
3
  \@setckpt{discussion}{
4
- \setcounter{page}{24}
4
+ \setcounter{page}{25}
5
5
  \setcounter{equation}{0}
6
6
  \setcounter{enumi}{2}
7
7
  \setcounter{enumii}{0}
@@ -1,4 +1,4 @@
1
- This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26) 12 FEB 2017 12:03
1
+ This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26) 14 FEB 2017 14:31
2
2
  entering extended mode
3
3
  restricted \write18 enabled.
4
4
  file:line:error style messages enabled.
@@ -87,6 +87,10 @@ Package color Info: Driver file: dvipdfmx.def on input line 147.
87
87
  (/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/dvipsnam.def
88
88
  File: dvipsnam.def 2016/06/17 v3.0m Driver-dependent file (DPC,SPQR)
89
89
  ))
90
+ (/usr/local/texlive/2016/texmf-dist/tex/latex/url/url.sty
91
+ \Urlmuskip=\muskip10
92
+ Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
93
+ )
90
94
  (/usr/local/texlive/2016/texmf-dist/tex/latex/listings/listings.sty
91
95
  \lst@mode=\count91
92
96
  \lst@gtempboxa=\box42
@@ -143,51 +147,51 @@ LaTeX Warning: Label `default' multiply defined.
143
147
  ) (./discussion.aux))
144
148
  \openout1 = `hikiutils_yamane.aux'.
145
149
 
146
- LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 38.
147
- LaTeX Font Info: ... okay on input line 38.
148
- LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 38.
149
- LaTeX Font Info: ... okay on input line 38.
150
- LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 38.
151
- LaTeX Font Info: ... okay on input line 38.
152
- LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 38.
153
- LaTeX Font Info: ... okay on input line 38.
154
- LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 38.
155
- LaTeX Font Info: ... okay on input line 38.
156
- LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 38.
157
- LaTeX Font Info: ... okay on input line 38.
158
- LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 38.
159
- LaTeX Font Info: ... okay on input line 38.
160
- LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 38.
161
- LaTeX Font Info: ... okay on input line 38.
150
+ LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 40.
151
+ LaTeX Font Info: ... okay on input line 40.
152
+ LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 40.
153
+ LaTeX Font Info: ... okay on input line 40.
154
+ LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 40.
155
+ LaTeX Font Info: ... okay on input line 40.
156
+ LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 40.
157
+ LaTeX Font Info: ... okay on input line 40.
158
+ LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 40.
159
+ LaTeX Font Info: ... okay on input line 40.
160
+ LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 40.
161
+ LaTeX Font Info: ... okay on input line 40.
162
+ LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 40.
163
+ LaTeX Font Info: ... okay on input line 40.
164
+ LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 40.
165
+ LaTeX Font Info: ... okay on input line 40.
162
166
  \c@lstlisting=\count100
163
167
  LaTeX Font Info: Font shape `JT1/mc/m/n' will be
164
- (Font) scaled to size 16.60605pt on input line 44.
168
+ (Font) scaled to size 16.60605pt on input line 46.
165
169
  LaTeX Font Info: Font shape `JY1/mc/m/n' will be
166
- (Font) scaled to size 16.60605pt on input line 44.
170
+ (Font) scaled to size 16.60605pt on input line 46.
167
171
  LaTeX Font Info: Font shape `JT1/mc/m/n' will be
168
- (Font) scaled to size 11.53198pt on input line 44.
172
+ (Font) scaled to size 11.53198pt on input line 46.
169
173
  LaTeX Font Info: Font shape `JY1/mc/m/n' will be
170
- (Font) scaled to size 11.53198pt on input line 44.
174
+ (Font) scaled to size 11.53198pt on input line 46.
171
175
  LaTeX Font Info: External font `cmex10' loaded for size
172
- (Font) <12> on input line 44.
176
+ (Font) <12> on input line 46.
173
177
  LaTeX Font Info: External font `cmex10' loaded for size
174
- (Font) <8> on input line 44.
178
+ (Font) <8> on input line 46.
175
179
  LaTeX Font Info: External font `cmex10' loaded for size
176
- (Font) <6> on input line 44.
180
+ (Font) <6> on input line 46.
177
181
  LaTeX Font Info: Font shape `JY1/mc/m/n' will be
178
- (Font) scaled to size 5.76599pt on input line 44.
182
+ (Font) scaled to size 5.76599pt on input line 46.
179
183
  LaTeX Font Info: Font shape `JT1/gt/m/n' will be
180
- (Font) scaled to size 9.60999pt on input line 47.
184
+ (Font) scaled to size 9.60999pt on input line 49.
181
185
  LaTeX Font Info: Font shape `JY1/gt/m/n' will be
182
- (Font) scaled to size 9.60999pt on input line 47.
186
+ (Font) scaled to size 9.60999pt on input line 49.
183
187
  LaTeX Font Info: Font shape `JT1/mc/m/n' will be
184
- (Font) scaled to size 13.83836pt on input line 47.
188
+ (Font) scaled to size 13.83836pt on input line 49.
185
189
  LaTeX Font Info: Font shape `JY1/mc/m/n' will be
186
- (Font) scaled to size 13.83836pt on input line 47.
190
+ (Font) scaled to size 13.83836pt on input line 49.
187
191
  LaTeX Font Info: Font shape `JT1/gt/m/n' will be
188
- (Font) scaled to size 13.83836pt on input line 47.
192
+ (Font) scaled to size 13.83836pt on input line 49.
189
193
  LaTeX Font Info: Font shape `JY1/gt/m/n' will be
190
- (Font) scaled to size 13.83836pt on input line 47.
194
+ (Font) scaled to size 13.83836pt on input line 49.
191
195
  (./hikiutils_yamane.toc [1
192
196
 
193
197
  ]
@@ -260,75 +264,67 @@ LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <7> not available
260
264
  ]
261
265
  [8] [9]
262
266
  File: ../figs/./hikiutils_yamane.005.jpg Graphic file (type eps)
263
- <../figs/./hikiutils_yamane.005.jpg> [10]
267
+ <../figs/./hikiutils_yamane.005.jpg> [10] [11]
264
268
  File: ../figs/./hikiutils_yamane.007.jpg Graphic file (type eps)
265
269
 
266
- <../figs/./hikiutils_yamane.007.jpg> [11] [12] [13]) [14]
270
+ <../figs/./hikiutils_yamane.007.jpg> [12] [13]) [14]
267
271
  \openout2 = `results.aux'.
268
272
 
269
273
  (./results.tex
270
274
  File: ../figs/./hikiutils_yamane.002.jpg Graphic file (type eps)
271
275
 
272
276
  <../figs/./hikiutils_yamane.002.jpg>
273
- LaTeX Font Info: Try loading font information for OMS+cmr on input line 24.
277
+ LaTeX Font Info: Try loading font information for OMS+cmr on input line 23.
274
278
 
275
279
  (/usr/local/texlive/2016/texmf-dist/tex/latex/base/omscmr.fd
276
280
  File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
277
281
  )
278
282
  LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
279
- (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 24.
283
+ (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 23.
280
284
  [15
281
285
 
282
286
 
283
287
  ] [16]
284
288
  [17]
285
289
  File: ../figs/./hikiutils_yamane.003.jpg Graphic file (type eps)
286
- <../figs/./hikiutils_yamane.003.jpg> [18]
290
+ <../figs/./hikiutils_yamane.003.jpg> [18] [19]
287
291
  File: ../figs/./hikiutils_yamane.004.jpg Graphic file (type eps)
288
292
 
289
- <../figs/./hikiutils_yamane.004.jpg> [19] [20]
293
+ <../figs/./hikiutils_yamane.004.jpg> [20]
290
294
  File: ../figs/./hikiutils_yamane.006.jpg Graphic file (type eps)
291
-
292
- <../figs/./hikiutils_yamane.006.jpg>
293
- Overfull \hbox (3.95764pt too wide) in paragraph at lines 215--216
295
+ <../figs/./hikiutils_yamane.006.jpg>
296
+ Overfull \hbox (3.95764pt too wide) in paragraph at lines 223--224
294
297
  \OT1/cmr/m/n/10 Thor \JY1/mc/m/n/10 では \OT1/cmr/m/n/10 start(ARGV) \JY1/mc/m/
295
298
  n/10 を呼び出すことで \OT1/cmr/m/n/10 CLI \JY1/mc/m/n/10 を開始する . \OT1/cmr
296
299
  /m/n/10 Hikithor::CLI.start(ARGV)
297
300
  []
298
301
 
299
- [21]) [22]
302
+ [21] [22]) [23]
300
303
  \openout2 = `discussion.aux'.
301
304
 
302
- (./discussion.tex) [23
305
+ (./discussion.tex) [24
303
306
 
304
307
 
305
308
  ]
306
- Underfull \hbox (badness 10000) in paragraph at lines 55--56
307
- []\OT1/cmr/m/n/10 hikidoc, \OT1/cmtt/m/n/10 https://rubygems.org/gems/hikidoc/v
308
- ersions/0.1.0,
309
+ Underfull \hbox (badness 1303) in paragraph at lines 57--58
310
+ []\OT1/cmr/m/n/10 hikidoc, $\OT1/cmtt/m/n/10 https : / / rubygems . org / gems
311
+ / hikidoc / versions / 0 . 1 . 0,[]$ $https : / /
309
312
  []
310
313
 
311
314
 
312
- Overfull \hbox (28.25214pt too wide) in paragraph at lines 56--57
315
+ Underfull \hbox (badness 10000) in paragraph at lines 58--59
313
316
  []\JY1/mc/m/n/10 「\OT1/cmr/m/n/10 Thor \JY1/mc/m/n/10 の使い方まとめ 」 \OT1/c
314
- mr/m/n/10 ,\OT1/cmtt/m/n/10 http://qiita.com/succi0303/items/32560103190436c943
315
- 5b
316
- []
317
-
318
-
319
- Underfull \hbox (badness 10000) in paragraph at lines 57--58
320
- []\JY1/mc/m/n/10 「\OT1/cmr/m/n/10 15.5. opt-parse - \JY1/mc/m/n/10 コマンドラ
321
- インオプシ ョン解析器 」 \OT1/cmr/m/n/10 ,
317
+ mr/m/n/10 , $\OT1/cmtt/m/n/10 http : / / qiita . com / succi0303 / items /
322
318
  []
323
319
 
324
320
 
325
- Overfull \hbox (38.02074pt too wide) in paragraph at lines 58--59
321
+ Underfull \hbox (badness 10000) in paragraph at lines 60--61
326
322
  []\JY1/mc/m/n/10 「\OT1/cmr/m/n/10 library opt-parse\JY1/mc/m/n/10 」 \OT1/cmr/
327
- m/n/10 , \OT1/cmtt/m/n/10 https://docs.ruby-lang.org/ja/latest/library/optparse
328
- .html
323
+ m/n/10 , $\OT1/cmtt/m/n/10 https : / / docs . ruby-[]lang . org / ja / latest /
324
+ library /
329
325
  []
330
326
 
331
- [24
327
+ [25
332
328
 
333
329
  ] (./hikiutils_yamane.aux (./abstract.aux) (./introduction.aux)
334
330
  (./method.aux) (./results.aux) (./discussion.aux))
@@ -337,12 +333,12 @@ LaTeX Warning: There were multiply-defined labels.
337
333
 
338
334
  )
339
335
  Here is how much of TeX's memory you used:
340
- 2619 strings out of 493683
341
- 36077 string characters out of 6149653
342
- 259998 words of memory out of 5000000
343
- 6153 multiletter control sequences out of 15000+600000
336
+ 2693 strings out of 493683
337
+ 36983 string characters out of 6149653
338
+ 262086 words of memory out of 5000000
339
+ 6223 multiletter control sequences out of 15000+600000
344
340
  15673 words of font info for 72 fonts, out of 8000000 for 9000
345
341
  934 hyphenation exceptions out of 8191
346
- 35i,9n,51p,777b,1684s stack positions out of 5000i,500n,10000p,200000b,80000s
342
+ 35i,9n,51p,777b,1682s stack positions out of 5000i,500n,10000p,200000b,80000s
347
343
 
348
- Output written on hikiutils_yamane.dvi (24 pages, 95744 bytes).
344
+ Output written on hikiutils_yamane.dvi (25 pages, 96256 bytes).
@@ -1,7 +1,9 @@
1
1
  \documentclass[12pt,a4paper]{jsarticle}
2
2
  \usepackage[dvipdfmx]{graphicx}
3
3
  \usepackage[dvipdfmx]{color}
4
- \usepackage{listings,jlisting}% to use japanese correctly, install jlistings.
4
+ \usepackage{url}
5
+ \usepackage{listings,jlisting}
6
+ % to use japanese correctly, install jlistings.
5
7
  \lstset{
6
8
  basicstyle={\ttfamily},
7
9
  identifierstyle={},
@@ -52,9 +54,9 @@
52
54
  \include{results}
53
55
  \include{discussion}
54
56
  \begin{thebibliography}{99}
55
- \bibitem{1-1} hikidoc, \verb|https://rubygems.org/gems/hikidoc/versions/0.1.0,| \verb|https://github.com/hiki/hikidoc,2017/1/30| アクセス.
56
- \bibitem{1-2} 「Thorの使い方まとめ」,\verb|http://qiita.com/succi0303/items/32560103190436c9435b| 2015/01/14更新,2017/1/30 アクセス.
57
- \bibitem{1-3} 「15.5. optparse - コマンドラインオプション解析器」, \verb|http://docs.python.jp/2/library/optparse.html| ,2017/1/30 アクセス.
58
- \bibitem{1-4} 「library optparse」, \verb|https://docs.ruby-lang.org/ja/latest/library/optparse.html| ,2017/1/30 アクセス.
57
+ \bibitem{1-1} hikidoc, \url{https://rubygems.org/gems/hikidoc/versions/0.1.0,} \url{https://github.com/hiki/hikidoc,} 2017/1/30 アクセス.
58
+ \bibitem{1-2} 「Thorの使い方まとめ」, \url{http://qiita.com/succi0303/items/32560103190436c9435b} 2015/01/14更新, 2017/1/30 アクセス.
59
+ \bibitem{1-3} 「15.5. optparse - コマンドラインオプション解析器」, \url{http://docs.python.jp/2/library/optparse.html,} 2017/1/30 アクセス.
60
+ \bibitem{1-4} 「library optparse」, \url{https://docs.ruby-lang.org/ja/latest/library/optparse.html,} 2017/1/30 アクセス.
59
61
  \end{thebibliography}
60
62
  \end{document}
@@ -1,7 +1,7 @@
1
1
  \contentsline {section}{\numberline {1}概要}{4}
2
2
  \contentsline {section}{\numberline {2}序論}{5}
3
3
  \contentsline {section}{\numberline {3}方法}{7}
4
- \contentsline {subsection}{\numberline {3.1}optparseとthorの比較}{7}
4
+ \contentsline {subsection}{\numberline {3.1}optparseとThorの比較}{7}
5
5
  \contentsline {subsubsection}{\numberline {3.1.1}Thor}{7}
6
6
  \contentsline {paragraph}{fizzbuzzメソッド,versionメソッド}{8}
7
7
  \contentsline {subsubsection}{\numberline {3.1.2}optparse}{8}
@@ -12,8 +12,8 @@
12
12
  \contentsline {paragraph}{versionメソッド}{10}
13
13
  \contentsline {subsection}{\numberline {3.2}既存のhikiutilsのコマンド解説}{10}
14
14
  \contentsline {subsubsection}{\numberline {3.2.1}コマンドの登録と実行メソッド}{10}
15
- \contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{11}
16
- \contentsline {subsubsection}{\numberline {3.2.3}コード}{12}
15
+ \contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{12}
16
+ \contentsline {subsubsection}{\numberline {3.2.3}コード}{13}
17
17
  \contentsline {section}{\numberline {4}結果}{15}
18
18
  \contentsline {subsection}{\numberline {4.1}コマンドの命名原則}{15}
19
19
  \contentsline {subsubsection}{\numberline {4.1.1}hikiutilsの想定利用形態}{15}
@@ -26,6 +26,6 @@
26
26
  \contentsline {paragraph}{cd VAL}{18}
27
27
  \contentsline {subsection}{\numberline {4.2}Thorによる実装}{18}
28
28
  \contentsline {subsubsection}{\numberline {4.2.1}クラス初期化}{18}
29
- \contentsline {subsubsection}{\numberline {4.2.2}コマンド定義}{19}
29
+ \contentsline {subsubsection}{\numberline {4.2.2}コマンド定義}{20}
30
30
  \contentsline {subsubsection}{\numberline {4.2.3}CLIの実行プロセス}{21}
31
- \contentsline {section}{\numberline {5}optparseからThorへの移行}{23}
31
+ \contentsline {section}{\numberline {5}optparseからThorへの移行}{24}
@@ -4,7 +4,7 @@ hikiは,hiki記法を用いたwiki cloneである.wikiはウォード・カ
4
4
  hiki web systemの実際の基本動作は,hiki.cgiプログラムを介して行われている.こちらを便宜上hiki systemと呼ぶ.図\ref{fig:one}に従ってhiki systemの動作概要を説明する.hiki systemは,data/textに置かれた書かれたプレーンテキストをhtmlへ変換する.この変換はhikidoc\cite{1-1}というhikiフォーマットconverterを使っている.また,添付書類はcache/attachに,一度フォーマットしたhtmlはparserに置かれており,それらを参照してhtmlを表示する画面をhiki.cgiは作っている.さらにhiki systemでは検索機能,自動リンク作成などが提供されている
5
5
 
6
6
  \begin{figure}[htbp]\begin{center}
7
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.001.jpg}
7
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.001.jpg}
8
8
  \caption{hiki web systemとhiki systemの対応関係.}
9
9
  \label{fig:one}
10
10
  \label{default}\end{center}\end{figure}
@@ -3,7 +3,7 @@
3
3
  \citation{1-2}
4
4
  \citation{1-2}
5
5
  \@writefile{toc}{\contentsline {section}{\numberline {3}方法}{7}}
6
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}optparseとthorの比較}{7}}
6
+ \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}optparseとThorの比較}{7}}
7
7
  \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Thor}{7}}
8
8
  \citation{1-3}
9
9
  \citation{1-4}
@@ -19,11 +19,11 @@
19
19
  \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces コマンドの登録と実行メソッドの対応.}}{10}}
20
20
  \newlabel{fig:005}{{2}{10}}
21
21
  \newlabel{default}{{2}{10}}
22
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{11}}
22
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{12}}
23
23
  \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces CLIの実行プロセス.}}{12}}
24
24
  \newlabel{fig:007}{{3}{12}}
25
25
  \newlabel{default}{{3}{12}}
26
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}コード}{12}}
26
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}コード}{13}}
27
27
  \@setckpt{method}{
28
28
  \setcounter{page}{15}
29
29
  \setcounter{equation}{0}
@@ -1,6 +1,6 @@
1
1
 
2
2
  \section{方法}
3
- \subsection{optparseとthorの比較}
3
+ \subsection{optparseとThorの比較}
4
4
  今回の研究対象のhikiutilsは,optparseというコマンドライン解析ライブラリで実装されている.
5
5
  本研究ではこの代替ライブラリとしてThorの採用を検討した.
6
6
  本章の最初では,FizzBuzzという簡単なコードを例にoptparseとThorにより作成するコマンドライン解析コードの比較を行う.FizzBuzzはThorの使い方を解説した記事\cite{1-2}で紹介されている.比較しやすくするためoptparseでFizzBuzzを新たに実装した.
@@ -126,8 +126,10 @@ optparseの特徴は,「コマンドの登録,実行method」に分けて記
126
126
  また,CLIの起動の仕方が特徴的である.この二つを取り出して,動作とコードを説明する.
127
127
 
128
128
  \subsubsection{コマンドの登録と実行メソッド}
129
+ optparseのコマンド登録と実行メソッドの呼び出し関係は図\ref{fig:005}の通りである.
130
+
129
131
  \begin{figure}[htbp]\begin{center}
130
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.005.jpg}
132
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.005.jpg}
131
133
  \caption{コマンドの登録と実行メソッドの対応.}
132
134
  \label{fig:005}
133
135
  \label{default}\end{center}\end{figure}
@@ -138,7 +140,7 @@ optparseでは以下の通り,コマンドの登録と実行が行われる.
138
140
  \item optにコマンドを登録
139
141
  \item 入力されたコマンドの処理のメソッドへ移動
140
142
  \end{enumerate}
141
- optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけでコマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録されたコマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録はまた別の手段でやらなくてはいけない.
143
+ この実装コードは次の通りである.
142
144
  \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
143
145
  def execute
144
146
  @argv << '--help' if @argv.size==0
@@ -175,13 +177,17 @@ optparseではOptionParserオブジェクトoptの生成を行い,コマンド
175
177
  以下略
176
178
 
177
179
  \end{lstlisting}
180
+ optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけでコマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録されたコマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録はまた別の手段でやらなくてはいけない.
181
+
178
182
  \subsubsection{CLIの実行プロセス}
183
+ optparseを用いた場合のCLIの実行プロセスは図\ref{fig:007}の通りとなる.
184
+
179
185
  \begin{figure}[htbp]\begin{center}
180
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.007.jpg}
186
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.007.jpg}
181
187
  \caption{CLIの実行プロセス.}
182
188
  \label{fig:007}
183
189
  \label{default}\end{center}\end{figure}
184
- optparseを用いた場合のCLIの実行プロセスは次の通りとなる.
190
+ CLIの実行プロセスは次の通りとなる.
185
191
 
186
192
  \begin{enumerate}
187
193
  \item HikiのHikiUtils::Command.run(ARGV)でhikiutils.rbのrunメソッドを呼ぶ
@@ -243,5 +249,5 @@ s)}
243
249
  end
244
250
  \end{lstlisting}
245
251
  runメソッドでは「hikiutils: provide utilities for helping hiki editing.」を表示させ,executeメソッドを実行させる.
246
- executeメソッドでは最初に「@argv \<\< '--help' if @argv.size==0」と記述する.これはもしargv配列の中身が空であればargv配列に'--help'を代入する.「command\_parser = OptionParser.new do |opt|」ではOptionParserオブジェクトがoptを生成しコマンドを登録していき,command\_parserに代入する.そして,「command\_parser.parse!(@argv)」では@argvにある文字列をcommand\_parserでparseする.つまり,ここでは入力されたコマンドを解析し,登録されたコマンドと一致すればその処理が行われる.もし,一致しなければevalメソッドで表示する.
252
+ executeメソッドでは最初に「@argv << '--help' if @argv.size==0」と記述する.これはもしargv配列の中身が空であればargv配列に'--help'を代入する.「command\_parser = OptionParser.new do |opt|」ではOptionParserオブジェクトがoptを生成しコマンドを登録していき,command\_parserに代入する.そして,「command\_parser.parse!(@argv)」では@argvにある文字列をcommand\_parserでparseする.つまり,ここでは入力されたコマンドを解析し,登録されたコマンドと一致すればその処理が行われる.もし,一致しなければevalメソッドで表示する.
247
253
 
@@ -2,9 +2,9 @@
2
2
  \@writefile{toc}{\contentsline {section}{\numberline {4}結果}{15}}
3
3
  \@writefile{toc}{\contentsline {subsection}{\numberline {4.1}コマンドの命名原則}{15}}
4
4
  \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}hikiutilsの想定利用形態}{15}}
5
- \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces hikiutilsがあらかじめ想定している利用形態.}}{15}}
6
- \newlabel{fig:002}{{4}{15}}
7
- \newlabel{default}{{4}{15}}
5
+ \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces hikiutilsがあらかじめ想定している利用形態.}}{16}}
6
+ \newlabel{fig:002}{{4}{16}}
7
+ \newlabel{default}{{4}{16}}
8
8
  \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}コメンド名と振る舞いの詳細}{16}}
9
9
  \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces コマンドオプションとshellコマンドの対応.}}{17}}
10
10
  \newlabel{table:ShellOption}{{1}{17}}
@@ -17,18 +17,19 @@
17
17
  \@writefile{toc}{\contentsline {paragraph}{cd VAL}{18}}
18
18
  \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Thorによる実装}{18}}
19
19
  \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}クラス初期化}{18}}
20
- \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Thorのinitializeでのコード}}{19}}
20
+ \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Thorのinitializeでのコード.}}{19}}
21
+ \newlabel{fig:003}{{5}{19}}
21
22
  \newlabel{default}{{5}{19}}
22
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}コマンド定義}{19}}
23
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}コマンド定義}{20}}
23
24
  \@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Thorにおけるコマンド記述のひな形.}}{20}}
24
25
  \newlabel{fig:004}{{6}{20}}
25
26
  \newlabel{default}{{6}{20}}
26
27
  \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}CLIの実行プロセス}{21}}
27
- \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces CLIの実行プロセス.}}{21}}
28
- \newlabel{fig:006}{{7}{21}}
29
- \newlabel{default}{{7}{21}}
28
+ \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces CLIの実行プロセス.}}{22}}
29
+ \newlabel{fig:006}{{7}{22}}
30
+ \newlabel{default}{{7}{22}}
30
31
  \@setckpt{results}{
31
- \setcounter{page}{23}
32
+ \setcounter{page}{24}
32
33
  \setcounter{equation}{0}
33
34
  \setcounter{enumi}{2}
34
35
  \setcounter{enumii}{0}
@@ -1,20 +1,19 @@
1
1
 
2
2
  \section{結果}
3
3
  \subsection{コマンドの命名原則}
4
- 機能ごとの動作はコマンドのオプションによって指定されます.
4
+ 機能ごとの動作はコマンドのオプションによって指定される.
5
5
  このオプションにどのような名前をつけるかは,どれだけコマンドを覚えやすいかという
6
- 意味で重要です.コマンドの振る舞いを的確に表す名称をつける必要があります.
6
+ 意味で重要である.コマンドの振る舞いを的確に表す名称をつける必要がある.
7
7
 
8
- この振る舞いとしてもっとも受け入れやすいのがshellで用意されているコマンドです.
9
- pwd, ls, rm, touch, openなどはもっとも直感的に動作がわかるコマンドです.
10
- hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前でオプションを提供する
11
- ようにします.
8
+ この振る舞いとしてもっとも受け入れやすいのがshellで用意されているコマンドである.
9
+ pwd, ls, rm, touch, openなどはもっとも直感的に動作がわかるコマンドである.
10
+ hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前でオプションを提供する.
12
11
 
13
12
  \subsubsection{hikiutilsの想定利用形態}
14
- ここでhikiutilsがあらかじめ想定している利用形態を解説しておきます.
13
+ ここでhikiutilsがあらかじめ想定している利用形態を解説する.
15
14
 
16
15
  \begin{figure}[htbp]\begin{center}
17
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.002.jpg}
16
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.002.jpg}
18
17
  \caption{hikiutilsがあらかじめ想定している利用形態.}
19
18
  \label{fig:002}
20
19
  \label{default}\end{center}\end{figure}
@@ -24,11 +23,11 @@ hikiutilsは,
24
23
  \item local PCとglobal serverとが用意されており,
25
24
  \item それらのデータをrsyncで同期する
26
25
  \end{itemize}
27
- ことで動作することを想定しています.これは,ネットに繋がっていないオフラインの状況でも
28
- テキストなどの編集が可能で,さらに不用意な書き換えを防ぐための機構です.さらに,
29
- どちらもが何かあった時のバックアップともなって,ミスによる手戻りを防いでいます.
26
+ ことで動作することを想定される.これは,ネットに繋がっていないオフラインの状況でも
27
+ テキストなどの編集が可能で,さらに不用意な書き換えを防ぐための機構である.さらに,
28
+ どちらもが何かあった時のバックアップともなって,ミスによる手戻りを防いでいる.
30
29
 
31
- これらの設定は,~/.hikircにyaml形式で記述・保存されています.
30
+ これらの設定は,~/.hikircにyaml形式で記述・保存されている.
32
31
  \begin{lstlisting}[style=,basicstyle={\scriptsize\ttfamily}]
33
32
  bob% cat ~/.hikirc
34
33
  :srcs:
@@ -44,7 +43,7 @@ bob% cat ~/.hikirc
44
43
  :global_uri: http://nishitani0.kwansei.ac.jp/~bob/nishitani0/Internal
45
44
  \end{lstlisting}
46
45
  また,一般的に一人のユーザがいくつものまとまりとしてのlocal-globalペアを
47
- 保持して管理することが普通です.それぞれにnicke\_nameをつけて管理しています.
46
+ 保持して管理することが普通である.それぞれにnicke\_nameをつけて管理している.
48
47
  \begin{lstlisting}[style=,basicstyle={\scriptsize\ttfamily}]
49
48
  bob% hiki -s
50
49
  hikiutils: provide utilities for helping hiki editing.
@@ -58,11 +57,11 @@ editor_command:open -a mi
58
57
  2 | ist | /Users/bob/Sites/hiki-data/data | http://ist.ksc.k
59
58
  3 | new_maple | /Users/bob/Sites/new_ist_data/maple_hiki_d| http://ist.ksc.k
60
59
  \end{lstlisting}
61
- とすると,それらの一覧と,いまtargetにしているnick\_nameディレクリが表示されます.
60
+ とすると,それらの一覧と,いまtargetにしているnick\_nameディレクリが表示される.
62
61
 
63
62
  \subsubsection{コメンド名と振る舞いの詳細}
64
- 検討の結果コマンドを以下の表\ref{table:ShellOption}のとおり書き換えることとします.
65
- 上部に記した,特によく使うコマンドに関しては,shellでよく使われるコマンド名と一致するにようにしました.
63
+ 検討の結果コマンドを以下の表\ref{table:ShellOption}のとおり書き換えることとする.
64
+ 上部に記した,特によく使うコマンドに関しては,shellでよく使われるコマンド名と一致するにようにした.
66
65
 
67
66
  \begin{table}[htbp]\begin{center}
68
67
  \caption{コマンドオプションとshellコマンドの対応.}
@@ -92,7 +91,7 @@ version &-v &show program version \\
92
91
  \end{center}\end{table}
93
92
  %for inserting separate lines, use \hline, \cline{2-3} etc.
94
93
 
95
- それぞれの意図を動作の解説として記述しています.
94
+ それぞれの意図を動作の解説として記述する.
96
95
 
97
96
  \paragraph{open FILE}
98
97
  ファイルを編集のためにeditorでopen.Editorは~/.hikircに
@@ -134,11 +133,14 @@ targetを変える,change directoryとのメタファ.ただし,いまの
134
133
  について詳しく検討を行う.
135
134
 
136
135
  \subsubsection{クラス初期化}
136
+ Thorのinitializeでのコードの呼び出し関係は図\ref{fig:003}の通りである.
137
+
137
138
  \begin{figure}[htbp]\begin{center}
138
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.003.jpg}
139
- \caption{Thorのinitializeでのコード}
139
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.003.jpg}
140
+ \caption{Thorのinitializeでのコード.}
141
+ \label{fig:003}
140
142
  \label{default}\end{center}\end{figure}
141
- Thorのinitializeでのコードはつぎの通りである.
143
+ この動きを順を追って説明すると
142
144
 
143
145
  \begin{enumerate}
144
146
  \item Hikithor::CLI.start(ARGV)が呼ばれる
@@ -146,7 +148,9 @@ Thorのinitializeでのコードはつぎの通りである.
146
148
  \item これではThorのinitializeメソッドが呼ばれない
147
149
  \item superを書くことでThorのinitializeメソッドが呼ばれる
148
150
  \end{enumerate}
149
- optparseではrequireでoptparseを呼びoptparseのinitializeを定義する必要はないが,Thorはinitializeを定義する必要がある.Thorの定義方法はrequireでThorを呼びCLIクラスで継承し,initializeメソッドにsuperを書くことでThorのinitializeが呼ばれる.initializeメソッド内ではThorの初期設定がされていないため,スーパークラスのメソッドを読み出してくれるsuperを書き加えることで図のようにinitializeメソッド内でThorのinitilalizeメソッドが呼ばれ定義される.
151
+ となる.
152
+
153
+ この実装コードは次の通りである.
150
154
  \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
151
155
 
152
156
  module Hikithor
@@ -164,29 +168,24 @@ module Hikithor
164
168
  ...以下略...
165
169
  end
166
170
  \end{lstlisting}
171
+ optparseではrequireでoptparseを呼びoptparseのinitializeを定義する必要はないが,Thorはinitializeを定義する必要がある.Thorの定義方法はrequireでThorを呼びCLIクラスで継承し,initializeメソッドにsuperを書くことでThorのinitializeが呼ばれる.initializeメソッド内ではThorの初期設定がされていないため,スーパークラスのメソッドを読み出してくれるsuperを書き加えることで図のようにinitializeメソッド内でThorのinitilalizeメソッドが呼ばれ定義される.
172
+
167
173
  \subsubsection{コマンド定義}
168
- Thorではoptparseのような登録処理はない.図\ref{fig:004}にある通りにコマンドが記述される.
174
+ Thorではoptparseのような登録処理はない.コマンド記述のひな形は図\ref{fig:004}の通りである.
169
175
 
170
176
  \begin{figure}[htbp]\begin{center}
171
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.004.jpg}
177
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.004.jpg}
172
178
  \caption{Thorにおけるコマンド記述のひな形.}
173
179
  \label{fig:004}
174
180
  \label{default}\end{center}\end{figure}
175
- それらは以下のように構成される.
181
+ このひな形を順を追って説明する.
176
182
 
177
183
  \begin{enumerate}
178
184
  \item desc以降にコマンド名と,その説明が記述される.これらはコマンドhelpで一覧として表示させる
179
185
  \item mapによって別のコマンド名でも実行できるように定義される.
180
186
  \item defで定義されたメソッドの実行コード
181
187
  \end{enumerate}
182
- Thorではdescで一覧を表示されるコマンド名,コマンドの説明を登録する.しかし,ここで記述したコマンドは単に一覧で表示させるためのものであり,実際に実行される時に呼び出すコマンド名は,defで定義された名前である.Thorでは処理実行を行うメソッド名がコマンド名となり,コマンド名1つが対応する.
183
-
184
- これに別名を与えるために利用されるキーワードがmapである.
185
- \begin{quote}\begin{verbatim}
186
- map A => B
187
- \end{verbatim}\end{quote}
188
- mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれるものである.
189
- よって,これを使うことでコマンドの別名を指定することができる.
188
+ この実装コードは次の通りである.
190
189
  \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
191
190
  desc 'show,--show', 'show sources'
192
191
  map "--show" => "show"
@@ -196,17 +195,26 @@ mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれる
196
195
  ,,,以下略...
197
196
  end
198
197
  \end{lstlisting}
198
+ Thorではdescで一覧を表示されるコマンド名,コマンドの説明を登録する.しかし,ここで記述したコマンドは単に一覧で表示させるためのものであり,実際に実行される時に呼び出すコマンド名は,defで定義された名前である.Thorでは処理実行を行うメソッド名がコマンド名となり,コマンド名1つが対応する.
199
+
200
+ これに別名を与えるために利用されるキーワードがmapである.
201
+ \begin{quote}\begin{verbatim}
202
+ map A => B
203
+ \end{verbatim}\end{quote}
204
+ mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれるものである.
205
+ よって,これを使うことでコマンドの別名を指定することができる.
206
+
199
207
  以上より,Thorではコマンドの指定と処理にはdesc,map,処理メソッドだけで済む.optparseではコマンドを登録するためのメソッドと処理メソッドの両方が必要になっていた.一方Thorでは,処理メソッドが直接コマンド名となるため記述が簡潔になる.
200
208
 
201
209
  \subsubsection{CLIの実行プロセス}
202
210
  CLIの実行プロセスは図\ref{fig:006}の通りである.
203
211
 
204
212
  \begin{figure}[htbp]\begin{center}
205
- \includegraphics[width=10cm,bb= 0 0 737 553]{../figs/./hikiutils_yamane.006.jpg}
213
+ \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.006.jpg}
206
214
  \caption{CLIの実行プロセス.}
207
215
  \label{fig:006}
208
216
  \label{default}\end{center}\end{figure}
209
- Thorにおけるcliの実行プロセスは次の通りである.
217
+ ThorにおけるCLIの実行プロセスは次の通りである.
210
218
 
211
219
  \begin{enumerate}
212
220
  \item hiki\_thorのHikithor::CLI.start(ARGV)でhikiutils\_thor.rbのCLIクラスを呼ぶ
@@ -1,6 +1,6 @@
1
1
  {{toc}}
2
2
  !方法
3
- !!optparseとthorの比較
3
+ !!optparseとThorの比較
4
4
  今回の研究対象のhikiutilsは,optparseというコマンドライン解析ライブラリで実装されている.
5
5
  本研究ではこの代替ライブラリとしてThorの採用を検討した.
6
6
  本章の最初では,FizzBuzzという簡単なコードを例にoptparseとThorにより作成するコマンドライン解析コードの比較を行う.FizzBuzzはThorの使い方を解説した記事{{cite(1-2)}}で紹介されている.比較しやすくするためoptparseでFizzBuzzを新たに実装した.
@@ -119,6 +119,7 @@ optparseの特徴は,「コマンドの登録,実行method」に分けて記
119
119
  また,CLIの起動の仕方が特徴的である.この二つを取り出して,動作とコードを説明する.
120
120
 
121
121
  !!!コマンドの登録と実行メソッド
122
+ optparseのコマンド登録と実行メソッドの呼び出し関係は図{{ref(fig:005)}}の通りである.
122
123
 
123
124
  !!!!caption:(fig:005)コマンドの登録と実行メソッドの対応.
124
125
  {{attach_view(hikiutils_yamane.005.jpg,hikiutils_yamane)}}
@@ -127,8 +128,8 @@ optparseでは以下の通り,コマンドの登録と実行が行われる.
127
128
  #OptionParserオブジェクトoptを生成
128
129
  #optにコマンドを登録
129
130
  #入力されたコマンドの処理のメソッドへ移動
130
- optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけでコマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録されたコマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録はまた別の手段でやらなくてはいけない.
131
131
 
132
+ この実装コードは次の通りである.
132
133
  <<< ruby
133
134
  def execute
134
135
  @argv << '--help' if @argv.size==0
@@ -165,12 +166,15 @@ optparseではOptionParserオブジェクトoptの生成を行い,コマンド
165
166
  以下略
166
167
 
167
168
  >>>
169
+ optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけでコマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録されたコマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録はまた別の手段でやらなくてはいけない.
168
170
 
169
171
  !!!CLIの実行プロセス
172
+ optparseを用いた場合のCLIの実行プロセスは図{{ref(fig:007)}}の通りとなる.
173
+
170
174
  !!!!caption:(fig:007)CLIの実行プロセス.
171
175
  {{attach_view(hikiutils_yamane.007.jpg,hikiutils_yamane)}}
172
176
 
173
- optparseを用いた場合のCLIの実行プロセスは次の通りとなる.
177
+ CLIの実行プロセスは次の通りとなる.
174
178
  #HikiのHikiUtils::Command.run(ARGV)でhikiutils.rbのrunメソッドを呼ぶ
175
179
  #new(argv).executeでexecuteメソッドが実行される
176
180
 
@@ -2,18 +2,17 @@
2
2
  !結果
3
3
  !!コマンドの命名原則
4
4
 
5
- 機能ごとの動作はコマンドのオプションによって指定されます.
5
+ 機能ごとの動作はコマンドのオプションによって指定される.
6
6
  このオプションにどのような名前をつけるかは,どれだけコマンドを覚えやすいかという
7
- 意味で重要です.コマンドの振る舞いを的確に表す名称をつける必要があります.
7
+ 意味で重要である.コマンドの振る舞いを的確に表す名称をつける必要がある.
8
8
 
9
- この振る舞いとしてもっとも受け入れやすいのがshellで用意されているコマンドです.
10
- pwd, ls, rm, touch, openなどはもっとも直感的に動作がわかるコマンドです.
11
- hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前でオプションを提供する
12
- ようにします.
9
+ この振る舞いとしてもっとも受け入れやすいのがshellで用意されているコマンドである.
10
+ pwd, ls, rm, touch, openなどはもっとも直感的に動作がわかるコマンドである.
11
+ hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前でオプションを提供する.
13
12
 
14
13
 
15
14
  !!!hikiutilsの想定利用形態
16
- ここでhikiutilsがあらかじめ想定している利用形態を解説しておきます.
15
+ ここでhikiutilsがあらかじめ想定している利用形態を解説する.
17
16
 
18
17
  !!!caption:(fig:002)hikiutilsがあらかじめ想定している利用形態.
19
18
  {{attach_view(hikiutils_yamane.002.jpg,hikiutils_yamane)}}
@@ -21,11 +20,11 @@ hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前
21
20
  hikiutilsは,
22
21
  *local PCとglobal serverとが用意されており,
23
22
  *それらのデータをrsyncで同期する
24
- ことで動作することを想定しています.これは,ネットに繋がっていないオフラインの状況でも
25
- テキストなどの編集が可能で,さらに不用意な書き換えを防ぐための機構です.さらに,
26
- どちらもが何かあった時のバックアップともなって,ミスによる手戻りを防いでいます.
23
+ ことで動作することを想定される.これは,ネットに繋がっていないオフラインの状況でも
24
+ テキストなどの編集が可能で,さらに不用意な書き換えを防ぐための機構である.さらに,
25
+ どちらもが何かあった時のバックアップともなって,ミスによる手戻りを防いでいる.
27
26
 
28
- これらの設定は,~/.hikircにyaml形式で記述・保存されています.
27
+ これらの設定は,~/.hikircにyaml形式で記述・保存されている.
29
28
  <<< yaml
30
29
  bob% cat ~/.hikirc
31
30
  :srcs:
@@ -41,7 +40,7 @@ bob% cat ~/.hikirc
41
40
  :global_uri: http://nishitani0.kwansei.ac.jp/~bob/nishitani0/Internal
42
41
  >>>
43
42
  また,一般的に一人のユーザがいくつものまとまりとしてのlocal-globalペアを
44
- 保持して管理することが普通です.それぞれにnicke_nameをつけて管理しています.
43
+ 保持して管理することが普通である.それぞれにnicke_nameをつけて管理している.
45
44
  <<< bash
46
45
  bob% hiki -s
47
46
  hikiutils: provide utilities for helping hiki editing.
@@ -55,12 +54,12 @@ editor_command:open -a mi
55
54
  2 | ist | /Users/bob/Sites/hiki-data/data | http://ist.ksc.k
56
55
  3 | new_maple | /Users/bob/Sites/new_ist_data/maple_hiki_d| http://ist.ksc.k
57
56
  >>>
58
- とすると,それらの一覧と,いまtargetにしているnick_nameディレクリが表示されます.
57
+ とすると,それらの一覧と,いまtargetにしているnick_nameディレクリが表示される.
59
58
 
60
59
  !!!コメンド名と振る舞いの詳細
61
60
 
62
- 検討の結果コマンドを以下の表{{ref(table:ShellOption)}}のとおり書き換えることとします.
63
- 上部に記した,特によく使うコマンドに関しては,shellでよく使われるコマンド名と一致するにようにしました.
61
+ 検討の結果コマンドを以下の表{{ref(table:ShellOption)}}のとおり書き換えることとする.
62
+ 上部に記した,特によく使うコマンドに関しては,shellでよく使われるコマンド名と一致するにようにした.
64
63
 
65
64
  !!!caption:(table:ShellOption)コマンドオプションとshellコマンドの対応.
66
65
  ||変更前||変更後||動作の解説
@@ -81,7 +80,7 @@ editor_command:open -a mi
81
80
  ||help [COMMAND] ||-h|| Describe available commands
82
81
  ||version ||-v|| show program version
83
82
 
84
- それぞれの意図を動作の解説として記述しています.
83
+ それぞれの意図を動作の解説として記述する.
85
84
 
86
85
  !!!! open FILE
87
86
  ファイルを編集のためにeditorでopen.Editorは~/.hikircに
@@ -117,16 +116,19 @@ targetを変える,change directoryとのメタファ.ただし,いまの
117
116
  について詳しく検討を行う.
118
117
 
119
118
  !!!クラス初期化
120
- !!!!caption:Thorのinitializeでのコード
119
+ Thorのinitializeでのコードの呼び出し関係は図{{ref(fig:003)}}の通りである.
120
+
121
+ !!!!caption:(fig:003)Thorのinitializeでのコード.
121
122
  {{attach_view(hikiutils_yamane.003.jpg,hikiutils_yamane)}}
122
123
 
123
- Thorのinitializeでのコードはつぎの通りである.
124
+ この動きを順を追って説明すると
124
125
  #Hikithor::CLI.start(ARGV)が呼ばれる
125
126
  #initializeメソッドが呼ばれる
126
127
  #これではThorのinitializeメソッドが呼ばれない
127
128
  #superを書くことでThorのinitializeメソッドが呼ばれる
128
- optparseではrequireでoptparseを呼びoptparseのinitializeを定義する必要はないが,Thorはinitializeを定義する必要がある.Thorの定義方法はrequireでThorを呼びCLIクラスで継承し,initializeメソッドにsuperを書くことでThorのinitializeが呼ばれる.initializeメソッド内ではThorの初期設定がされていないため,スーパークラスのメソッドを読み出してくれるsuperを書き加えることで図のようにinitializeメソッド内でThorのinitilalizeメソッドが呼ばれ定義される.
129
+ となる.
129
130
 
131
+ この実装コードは次の通りである.
130
132
  <<< ruby
131
133
 
132
134
  module Hikithor
@@ -144,27 +146,20 @@ module Hikithor
144
146
  ...以下略...
145
147
  end
146
148
  >>>
149
+ optparseではrequireでoptparseを呼びoptparseのinitializeを定義する必要はないが,Thorはinitializeを定義する必要がある.Thorの定義方法はrequireでThorを呼びCLIクラスで継承し,initializeメソッドにsuperを書くことでThorのinitializeが呼ばれる.initializeメソッド内ではThorの初期設定がされていないため,スーパークラスのメソッドを読み出してくれるsuperを書き加えることで図のようにinitializeメソッド内でThorのinitilalizeメソッドが呼ばれ定義される.
147
150
 
148
151
  !!!コマンド定義
149
- Thorではoptparseのような登録処理はない.図{{ref(fig:004)}}にある通りにコマンドが記述される.
152
+ Thorではoptparseのような登録処理はない.コマンド記述のひな形は図{{ref(fig:004)}}の通りである.
150
153
 
151
154
  !!!!caption:(fig:004)Thorにおけるコマンド記述のひな形.
152
155
  {{attach_view(hikiutils_yamane.004.jpg,hikiutils_yamane)}}
153
156
 
154
- それらは以下のように構成される.
157
+ このひな形を順を追って説明する.
155
158
  #desc以降にコマンド名と,その説明が記述される.これらはコマンドhelpで一覧として表示させる
156
159
  #mapによって別のコマンド名でも実行できるように定義される.
157
160
  #defで定義されたメソッドの実行コード
158
161
 
159
- Thorではdescで一覧を表示されるコマンド名,コマンドの説明を登録する.しかし,ここで記述したコマンドは単に一覧で表示させるためのものであり,実際に実行される時に呼び出すコマンド名は,defで定義された名前である.Thorでは処理実行を行うメソッド名がコマンド名となり,コマンド名1つが対応する.
160
-
161
- これに別名を与えるために利用されるキーワードがmapである.
162
- <<<
163
- map A => B
164
- >>>
165
- mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれるものである.
166
- よって,これを使うことでコマンドの別名を指定することができる.
167
-
162
+ この実装コードは次の通りである.
168
163
  <<< ruby
169
164
  desc 'show,--show', 'show sources'
170
165
  map "--show" => "show"
@@ -174,6 +169,14 @@ mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれる
174
169
  ,,,以下略...
175
170
  end
176
171
  >>>
172
+ Thorではdescで一覧を表示されるコマンド名,コマンドの説明を登録する.しかし,ここで記述したコマンドは単に一覧で表示させるためのものであり,実際に実行される時に呼び出すコマンド名は,defで定義された名前である.Thorでは処理実行を行うメソッド名がコマンド名となり,コマンド名1つが対応する.
173
+
174
+ これに別名を与えるために利用されるキーワードがmapである.
175
+ <<<
176
+ map A => B
177
+ >>>
178
+ mapとはBと呼ばれるメソッドをAでも呼べるようにしてくれるものである.
179
+ よって,これを使うことでコマンドの別名を指定することができる.
177
180
 
178
181
  以上より,Thorではコマンドの指定と処理にはdesc,map,処理メソッドだけで済む.optparseではコマンドを登録するためのメソッドと処理メソッドの両方が必要になっていた.一方Thorでは,処理メソッドが直接コマンド名となるため記述が簡潔になる.
179
182
 
@@ -183,7 +186,7 @@ CLIの実行プロセスは図{{ref(fig:006)}}の通りである.
183
186
  !!!!caption:(fig:006)CLIの実行プロセス.
184
187
  {{attach_view(hikiutils_yamane.006.jpg,hikiutils_yamane)}}
185
188
 
186
- Thorにおけるcliの実行プロセスは次の通りである.
189
+ ThorにおけるCLIの実行プロセスは次の通りである.
187
190
  #hiki_thorのHikithor::CLI.start(ARGV)でhikiutils_thor.rbのCLIクラスを呼ぶ
188
191
  #hikiutils_thor.rbのCLIクラスのメソッドを順に実行していく
189
192
 
@@ -1,3 +1,3 @@
1
1
  module HikiUtils
2
- VERSION = "0.2.3.15"
2
+ VERSION = "0.2.3.16"
3
3
  end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
 
2
3
  # -*- coding: utf-8 -*-
3
4
  require 'systemu'
@@ -210,7 +211,7 @@ task :latex_all do
210
211
  line = ''
211
212
  end
212
213
  end
213
- line ="\\usepackage{listings,jlisting}" if line.match(/\\usepackage{listings}/)
214
+ line ="\\usepackage{url}\n\\usepackage{listings,jlisting}\n" if line.match(/\\usepackage{listings}/)
214
215
  if line.match(/section{(.+)}/)
215
216
  if m=line.match(/\\verb\|(.+)\((.+)\)\|/)
216
217
  p m
@@ -277,7 +278,9 @@ def convert_to_latex(file_name, options={})
277
278
  line = "\\end{thebibliography}\n"
278
279
  end
279
280
  if m=line.match(/\\item\[(.+)\](.+)/) and in_bib==true
280
- line ="\\bibitem{#{m[1]}} #{m[2]}"
281
+ tmp=m[2].gsub!(/\\verb\|(.*?)\|/){ "\\url{#{$1}}" }
282
+ line ="\\bibitem{#{m[1]}} #{tmp}"
283
+ puts line.blue
281
284
  end
282
285
  if m=line.match(/\\includegraphics\[width=6cm\]\{(.+)\}/)
283
286
  p line="\\includegraphics\[width=#{$fig_width}cm,bb=#{$bounding_box}\]\{../figs/#{m[1]}\}\n"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hikiutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3.15
4
+ version: 0.2.3.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shigeto R. Nishitani