hikiutils 0.2.3.17 → 0.2.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.
Files changed (251) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Rakefile +76 -8
  4. data/exe/hiki +2 -3
  5. data/hikiutils.gemspec +1 -1
  6. data/lib/hikiutils.rb +9 -9
  7. data/lib/hikiutils/version.rb +1 -1
  8. data/lib/hikiutils_thor.rb +73 -61
  9. data/lib/templates/Rakefile_hiki_sync +96 -56
  10. data/{hikiutils_yamane/Rakefile → lib/templates/Rakefile_hiki_sync_new} +97 -57
  11. data/lib/templates/hiki_help.yml +48 -8
  12. metadata +6 -248
  13. data/abst/#testhiki# +0 -0
  14. data/abst/.DS_Store +0 -0
  15. data/abst/out2.pdf +0 -0
  16. data/abst/out3.aux +0 -15
  17. data/abst/out3.log +0 -193
  18. data/abst/out3.pdf +0 -0
  19. data/abst/out3.synctex.gz +0 -0
  20. data/abst/out3.tex +0 -106
  21. data/abst/out4.aux +0 -13
  22. data/abst/out4.log +0 -190
  23. data/abst/out4.pdf +0 -0
  24. data/abst/out4.synctex.gz +0 -0
  25. data/abst/out4.tex +0 -75
  26. data/abst/speed.png +0 -0
  27. data/abst/testhiki +0 -26
  28. data/abst/testhiki2 +0 -106
  29. data/abst/tmp.hiki +0 -14
  30. data/abst/tmp.html +0 -16
  31. data/abst/work.png +0 -0
  32. data/abst/yamane_abst.pdf +0 -0
  33. data/abst/yamane_abst.tex +0 -59
  34. data/abst/yamane_abst_new.pdf +0 -0
  35. data/abst/yamane_powerpoint.key +0 -0
  36. data/abst/yamane_powerpoint.pptx/.DS_Store +0 -0
  37. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill0-1.jpg +0 -0
  38. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill1-2.jpg +0 -0
  39. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill2-3.jpg +0 -0
  40. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill3-4.jpg +0 -0
  41. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill4-5.jpg +0 -0
  42. data/abst/yamane_powerpoint.pptx/Data/PresetImageFill5-6.jpg +0 -0
  43. data/abst/yamane_powerpoint.pptx/Data/image1-12.png +0 -0
  44. data/abst/yamane_powerpoint.pptx/Data/image1-9.png +0 -0
  45. data/abst/yamane_powerpoint.pptx/Data/mt0@2x-13.jpg +0 -0
  46. data/abst/yamane_powerpoint.pptx/Data/mt10@2x-22.jpg +0 -0
  47. data/abst/yamane_powerpoint.pptx/Data/mt1@2x-14.jpg +0 -0
  48. data/abst/yamane_powerpoint.pptx/Data/mt2@2x-15.jpg +0 -0
  49. data/abst/yamane_powerpoint.pptx/Data/mt3@2x-16.jpg +0 -0
  50. data/abst/yamane_powerpoint.pptx/Data/mt4@2x-17.png +0 -0
  51. data/abst/yamane_powerpoint.pptx/Data/mt5@2x-18.jpg +0 -0
  52. data/abst/yamane_powerpoint.pptx/Data/mt6@2x-19.jpg +0 -0
  53. data/abst/yamane_powerpoint.pptx/Data/mt7@2x-20.png +0 -0
  54. data/abst/yamane_powerpoint.pptx/Data/mt8@2x-21.jpg +0 -0
  55. data/abst/yamane_powerpoint.pptx/Data/st0-23.jpg +0 -0
  56. data/abst/yamane_powerpoint.pptx/Data/st1-24.jpg +0 -0
  57. data/abst/yamane_powerpoint.pptx/Data/st2-25.jpg +0 -0
  58. data/abst/yamane_powerpoint.pptx/Data/st3-26.jpg +0 -0
  59. data/abst/yamane_powerpoint.pptx/Data/st4-276.jpg +0 -0
  60. data/abst/yamane_powerpoint.pptx/Data/st5-279.jpg +0 -0
  61. data/abst/yamane_powerpoint.pptx/Index.zip +0 -0
  62. data/abst/yamane_powerpoint.pptx/Metadata/BuildVersionHistory.plist +0 -8
  63. data/abst/yamane_powerpoint.pptx/Metadata/DocumentIdentifier +0 -1
  64. data/abst/yamane_powerpoint.pptx/Metadata/Properties.plist +0 -0
  65. data/abst/yamane_powerpoint.pptx/preview-micro.jpg +0 -0
  66. data/abst/yamane_powerpoint.pptx/preview-web.jpg +0 -0
  67. data/abst/yamane_powerpoint.pptx/preview.jpg +0 -0
  68. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill0-1.jpg +0 -0
  69. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill1-2.jpg +0 -0
  70. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill2-3.jpg +0 -0
  71. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill3-4.jpg +0 -0
  72. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill4-5.jpg +0 -0
  73. data/abst/yamane_powerpoint_new.key/Data/PresetImageFill5-6.jpg +0 -0
  74. data/abst/yamane_powerpoint_new.key/Data/image1-12.png +0 -0
  75. data/abst/yamane_powerpoint_new.key/Data/image1-9.png +0 -0
  76. data/abst/yamane_powerpoint_new.key/Data/mt0@2x-13.jpg +0 -0
  77. data/abst/yamane_powerpoint_new.key/Data/mt10@2x-22.jpg +0 -0
  78. data/abst/yamane_powerpoint_new.key/Data/mt1@2x-14.jpg +0 -0
  79. data/abst/yamane_powerpoint_new.key/Data/mt2@2x-15.jpg +0 -0
  80. data/abst/yamane_powerpoint_new.key/Data/mt3@2x-16.jpg +0 -0
  81. data/abst/yamane_powerpoint_new.key/Data/mt4@2x-17.png +0 -0
  82. data/abst/yamane_powerpoint_new.key/Data/mt5@2x-18.jpg +0 -0
  83. data/abst/yamane_powerpoint_new.key/Data/mt6@2x-19.jpg +0 -0
  84. data/abst/yamane_powerpoint_new.key/Data/mt7@2x-20.png +0 -0
  85. data/abst/yamane_powerpoint_new.key/Data/mt8@2x-21.jpg +0 -0
  86. data/abst/yamane_powerpoint_new.key/Data/st0-381.jpg +0 -0
  87. data/abst/yamane_powerpoint_new.key/Data/st1-493.jpg +0 -0
  88. data/abst/yamane_powerpoint_new.key/Data/st2-495.jpg +0 -0
  89. data/abst/yamane_powerpoint_new.key/Data/st3-481.jpg +0 -0
  90. data/abst/yamane_powerpoint_new.key/Data/st4-485.jpg +0 -0
  91. data/abst/yamane_powerpoint_new.key/Data/st5-372.jpg +0 -0
  92. data/abst/yamane_powerpoint_new.key/Index.zip +0 -0
  93. data/abst/yamane_powerpoint_new.key/Metadata/BuildVersionHistory.plist +0 -8
  94. data/abst/yamane_powerpoint_new.key/Metadata/DocumentIdentifier +0 -1
  95. data/abst/yamane_powerpoint_new.key/Metadata/Properties.plist +0 -0
  96. data/abst/yamane_powerpoint_new.key/preview-micro.jpg +0 -0
  97. data/abst/yamane_powerpoint_new.key/preview-web.jpg +0 -0
  98. data/abst/yamane_powerpoint_new.key/preview.jpg +0 -0
  99. data/exe/hiki_thor +0 -5
  100. data/exe/hiki_thor~ +0 -8
  101. data/exe/hiki~ +0 -8
  102. data/hikis/README.hiki +0 -64
  103. data/hikis/README.hiki.html +0 -55
  104. data/hikis/README_ja.hiki +0 -67
  105. data/hikis/README_ja.hiki.html +0 -59
  106. data/hikis/yamane.hiki +0 -36
  107. data/hikiutils.wiki/Home.md +0 -68
  108. data/hikiutils.wiki/README.md +0 -65
  109. data/hikiutils.wiki/README_ja.md +0 -68
  110. data/hikiutils.wiki/yamane.md +0 -42
  111. data/hikiutils_bob/.gitignore +0 -1
  112. data/hikiutils_bob/Rakefile +0 -488
  113. data/hikiutils_bob/code.hiki +0 -31
  114. data/hikiutils_bob/figs/calphad_bob.pdf +0 -0
  115. data/hikiutils_bob/figs/hikiutils_bob.001.bb +0 -5
  116. data/hikiutils_bob/figs/hikiutils_bob.001.jpeg +0 -0
  117. data/hikiutils_bob/figs/hikiutils_bob.002.bb +0 -5
  118. data/hikiutils_bob/figs/hikiutils_bob.002.jpeg +0 -0
  119. data/hikiutils_bob/figs/hikiutils_bob.003.jpeg +0 -0
  120. data/hikiutils_bob/figs/hikiutils_bob.004.jpeg +0 -0
  121. data/hikiutils_bob/figs/hikiutils_bob.005.jpeg +0 -0
  122. data/hikiutils_bob/figs/hikiutils_bob.006.jpeg +0 -0
  123. data/hikiutils_bob/figs/hikiutils_bob.007.jpeg +0 -0
  124. data/hikiutils_bob/figs/hikiutils_bob.pdf +0 -0
  125. data/hikiutils_bob/figs/sync.pdf +0 -0
  126. data/hikiutils_bob/hiki_help.yml +0 -53
  127. data/hikiutils_bob/hikiutils_bob.graffle +0 -1195
  128. data/hikiutils_bob/hikiutils_bob.hiki +0 -6
  129. data/hikiutils_bob/hikiutils_bob.key +0 -0
  130. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.001.jpeg +0 -0
  131. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.002.jpeg +0 -0
  132. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.003.jpeg +0 -0
  133. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.004.jpeg +0 -0
  134. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.005.jpeg +0 -0
  135. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.006.jpeg +0 -0
  136. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.007.jpeg +0 -0
  137. data/hikiutils_bob/latex_all.hiki +0 -230
  138. data/hikiutils_bob/latex_dir/code.aux +0 -26
  139. data/hikiutils_bob/latex_dir/code.log +0 -28
  140. data/hikiutils_bob/latex_dir/code.tex +0 -39
  141. data/hikiutils_bob/latex_dir/head.tex +0 -10
  142. data/hikiutils_bob/latex_dir/hikiutils_bob.aux +0 -4
  143. data/hikiutils_bob/latex_dir/hikiutils_bob.log +0 -345
  144. data/hikiutils_bob/latex_dir/hikiutils_bob.pdf +0 -0
  145. data/hikiutils_bob/latex_dir/hikiutils_bob.synctex.gz +0 -0
  146. data/hikiutils_bob/latex_dir/hikiutils_bob.tex +0 -55
  147. data/hikiutils_bob/latex_dir/hikiutils_bob.toc +0 -41
  148. data/hikiutils_bob/latex_dir/jlisting.sty +0 -216
  149. data/hikiutils_bob/latex_dir/jlisting.tex +0 -216
  150. data/hikiutils_bob/latex_dir/latex2hiki.aux +0 -28
  151. data/hikiutils_bob/latex_dir/latex2hiki.tex +0 -43
  152. data/hikiutils_bob/latex_dir/latex_all.aux +0 -37
  153. data/hikiutils_bob/latex_dir/latex_all.log +0 -28
  154. data/hikiutils_bob/latex_dir/latex_all.tex +0 -249
  155. data/hikiutils_bob/latex_dir/pre.tex +0 -36
  156. data/hikiutils_bob/latex_dir/references.tex +0 -4
  157. data/hikiutils_bob/latex_dir/sync.aux +0 -54
  158. data/hikiutils_bob/latex_dir/sync.tex +0 -262
  159. data/hikiutils_bob/references.hiki +0 -3
  160. data/hikiutils_bob/sync.hiki +0 -220
  161. data/hikiutils_bob/tmp1.txt +0 -32
  162. data/hikiutils_bob/toc.hiki +0 -32
  163. data/hikiutils_yamane/.gitignore +0 -1
  164. data/hikiutils_yamane/abstract.hiki +0 -8
  165. data/hikiutils_yamane/backup/hikiutils%28optparse%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%29 +0 -309
  166. data/hikiutils_yamane/backup/hikiutils%28thor%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%29 +0 -1
  167. data/hikiutils_yamane/backup/hikiutils_yamane +0 -703
  168. data/hikiutils_yamane/backup/hikiutils_yamane.hiki +0 -0
  169. data/hikiutils_yamane/backup/hikiutils_yamane_#hikiutils_yamane +0 -1
  170. data/hikiutils_yamane/backup/hikiutils_yamane_command_table +0 -19
  171. data/hikiutils_yamane/backup/hikiutils_yamane_introduction +0 -7
  172. data/hikiutils_yamane/discussion.hiki +0 -9
  173. data/hikiutils_yamane/figs/hikiutils_yamane.001.jpg +0 -0
  174. data/hikiutils_yamane/figs/hikiutils_yamane.002.bb +0 -5
  175. data/hikiutils_yamane/figs/hikiutils_yamane.002.jpg +0 -0
  176. data/hikiutils_yamane/figs/hikiutils_yamane.003.jpg +0 -0
  177. data/hikiutils_yamane/figs/hikiutils_yamane.004.jpg +0 -0
  178. data/hikiutils_yamane/figs/hikiutils_yamane.005.jpg +0 -0
  179. data/hikiutils_yamane/figs/hikiutils_yamane.006.jpg +0 -0
  180. data/hikiutils_yamane/figs/hikiutils_yamane.007.jpg +0 -0
  181. data/hikiutils_yamane/hiki_help.yml +0 -53
  182. data/hikiutils_yamane/hikiutils_yamane.hiki +0 -23
  183. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  184. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  185. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_familychineseoahu_en_00317_2040x1360-96.jpeg +0 -0
  186. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_familychineseoahu_en_02016_981x654-97.jpeg +0 -0
  187. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_familychineseoahu_en_02390_2880x1921-94.jpeg +0 -0
  188. data/hikiutils_yamane/hikiutils_yamane.key/Data/110809_familychineseoahu_en_02390_2880x1921-small-95.jpg +0 -0
  189. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt0@2x-102.jpg +0 -0
  190. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt10@2x-112.jpg +0 -0
  191. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt1@2x-103.jpg +0 -0
  192. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt2@2x-104.jpg +0 -0
  193. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt3@2x-105.jpg +0 -0
  194. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt4@2x-106.jpg +0 -0
  195. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt5@2x-107.jpg +0 -0
  196. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt6@2x-108.jpg +0 -0
  197. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt7@2x-109.jpg +0 -0
  198. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt8@2x-110.jpg +0 -0
  199. data/hikiutils_yamane/hikiutils_yamane.key/Data/mt9@2x-111.jpg +0 -0
  200. data/hikiutils_yamane/hikiutils_yamane.key/Data/pasted-image-100.tiff +0 -0
  201. data/hikiutils_yamane/hikiutils_yamane.key/Data/pasted-image-98.tiff +0 -0
  202. data/hikiutils_yamane/hikiutils_yamane.key/Data/pasted-image-small-101.png +0 -0
  203. data/hikiutils_yamane/hikiutils_yamane.key/Data/pasted-image-small-99.png +0 -0
  204. data/hikiutils_yamane/hikiutils_yamane.key/Data/st0-113.jpg +0 -0
  205. data/hikiutils_yamane/hikiutils_yamane.key/Data/st1-114.jpg +0 -0
  206. data/hikiutils_yamane/hikiutils_yamane.key/Data/st2-115.jpg +0 -0
  207. data/hikiutils_yamane/hikiutils_yamane.key/Data/st3-116.jpg +0 -0
  208. data/hikiutils_yamane/hikiutils_yamane.key/Data/st4-117.jpg +0 -0
  209. data/hikiutils_yamane/hikiutils_yamane.key/Data/st5-118.jpg +0 -0
  210. data/hikiutils_yamane/hikiutils_yamane.key/Data/st6-119.jpg +0 -0
  211. data/hikiutils_yamane/hikiutils_yamane.key/Data/tile_paper_medgray-93.jpg +0 -0
  212. data/hikiutils_yamane/hikiutils_yamane.key/Index.zip +0 -0
  213. data/hikiutils_yamane/hikiutils_yamane.key/Metadata/BuildVersionHistory.plist +0 -8
  214. data/hikiutils_yamane/hikiutils_yamane.key/Metadata/DocumentIdentifier +0 -1
  215. data/hikiutils_yamane/hikiutils_yamane.key/Metadata/Properties.plist +0 -0
  216. data/hikiutils_yamane/hikiutils_yamane.key/preview-micro.jpg +0 -0
  217. data/hikiutils_yamane/hikiutils_yamane.key/preview-web.jpg +0 -0
  218. data/hikiutils_yamane/hikiutils_yamane.key/preview.jpg +0 -0
  219. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.001.jpeg +0 -0
  220. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.002.jpeg +0 -0
  221. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.003.jpeg +0 -0
  222. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.004.jpeg +0 -0
  223. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.005.jpeg +0 -0
  224. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.006.jpeg +0 -0
  225. data/hikiutils_yamane/hikiutils_yamane/hikiutils_yamane.007.jpeg +0 -0
  226. data/hikiutils_yamane/introduction.hiki +0 -10
  227. data/hikiutils_yamane/latex_dir/abstract.aux +0 -22
  228. data/hikiutils_yamane/latex_dir/abstract.tex +0 -9
  229. data/hikiutils_yamane/latex_dir/discussion.aux +0 -22
  230. data/hikiutils_yamane/latex_dir/discussion.tex +0 -9
  231. data/hikiutils_yamane/latex_dir/head.tex +0 -10
  232. data/hikiutils_yamane/latex_dir/hikiutils_yamane.aux +0 -10
  233. data/hikiutils_yamane/latex_dir/hikiutils_yamane.log +0 -344
  234. data/hikiutils_yamane/latex_dir/hikiutils_yamane.pdf +0 -0
  235. data/hikiutils_yamane/latex_dir/hikiutils_yamane.synctex.gz +0 -0
  236. data/hikiutils_yamane/latex_dir/hikiutils_yamane.tex +0 -62
  237. data/hikiutils_yamane/latex_dir/hikiutils_yamane.toc +0 -31
  238. data/hikiutils_yamane/latex_dir/introduction.aux +0 -26
  239. data/hikiutils_yamane/latex_dir/introduction.tex +0 -12
  240. data/hikiutils_yamane/latex_dir/jlisting.sty +0 -216
  241. data/hikiutils_yamane/latex_dir/method.aux +0 -46
  242. data/hikiutils_yamane/latex_dir/method.tex +0 -253
  243. data/hikiutils_yamane/latex_dir/pre.tex +0 -36
  244. data/hikiutils_yamane/latex_dir/results.aux +0 -50
  245. data/hikiutils_yamane/latex_dir/results.tex +0 -257
  246. data/hikiutils_yamane/method.hiki +0 -238
  247. data/hikiutils_yamane/results.hiki +0 -228
  248. data/hikiutils_yamane/test.rb +0 -10
  249. data/hikiutils_yamane/toc.hiki +0 -19
  250. data/lib/hikiutils.rb~ +0 -389
  251. data/lib/hikiutils_thor.rb~ +0 -323
@@ -1,62 +0,0 @@
1
- \documentclass[12pt,a4paper]{jsarticle}
2
- \usepackage[dvipdfmx]{graphicx}
3
- \usepackage[dvipdfmx]{color}
4
- \usepackage{url}
5
- \usepackage{listings,jlisting}
6
- % to use japanese correctly, install jlistings.
7
- \lstset{
8
- basicstyle={\ttfamily},
9
- identifierstyle={},
10
- commentstyle={\color{red}},
11
- keywordstyle={\bfseries\color{cyan}},
12
- ndkeywordstyle={},
13
- stringstyle={\color{blue}},
14
- frame={tb},
15
- breaklines=true,
16
- numbers=left,
17
- numberstyle={},
18
- stepnumber=1,
19
- numbersep=1zw,
20
- xrightmargin=0zw,
21
- xleftmargin=3zw,
22
- lineskip=0.5ex
23
- }
24
- \lstdefinestyle{customCsh}{
25
- language={csh},
26
- numbers=none,
27
- }
28
- \lstdefinestyle{customRuby}{
29
- language={ruby},
30
- numbers=left,
31
- }
32
- \lstdefinestyle{customTex}{
33
- language={tex},
34
- numbers=none,
35
- }
36
- \lstdefinestyle{customJava}{
37
- language={java},
38
- numbers=left,
39
- }
40
- \begin{document}
41
- \title{卒業論文\\
42
- \vspace{4cm} コマンドラインツール作成ライブラリThorによる\\hikiutilsの書き換え}
43
- \author{ 関西学院大学 理工学部 情報科学科\\\\27013554 山根亮太}
44
- \date{\vspace{3cm} 2017年 3月\\
45
- \vspace{3cm} 指導教員  西谷 滋人 教授}
46
- \maketitle
47
- \setcounter{tocdepth}{4}
48
-
49
- \tableofcontents
50
-
51
- \include{abstract}
52
- \include{introduction}
53
- \include{method}
54
- \include{results}
55
- \include{discussion}
56
- \begin{thebibliography}{99}
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 アクセス.
61
- \end{thebibliography}
62
- \end{document}
@@ -1,31 +0,0 @@
1
- \contentsline {section}{\numberline {1}概要}{4}
2
- \contentsline {section}{\numberline {2}序論}{5}
3
- \contentsline {section}{\numberline {3}方法}{7}
4
- \contentsline {subsection}{\numberline {3.1}optparseとThorの比較}{7}
5
- \contentsline {subsubsection}{\numberline {3.1.1}Thor}{7}
6
- \contentsline {paragraph}{fizzbuzzメソッド,versionメソッド}{8}
7
- \contentsline {subsubsection}{\numberline {3.1.2}optparse}{8}
8
- \contentsline {paragraph}{runメソッド}{9}
9
- \contentsline {paragraph}{initializeメソッド}{9}
10
- \contentsline {paragraph}{executeメソッド}{9}
11
- \contentsline {paragraph}{fizzbuzzメソッド}{9}
12
- \contentsline {paragraph}{versionメソッド}{10}
13
- \contentsline {subsection}{\numberline {3.2}既存のhikiutilsのコマンド解説}{10}
14
- \contentsline {subsubsection}{\numberline {3.2.1}コマンドの登録と実行メソッド}{10}
15
- \contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{12}
16
- \contentsline {subsubsection}{\numberline {3.2.3}コード}{13}
17
- \contentsline {section}{\numberline {4}結果}{15}
18
- \contentsline {subsection}{\numberline {4.1}コマンドの命名原則}{15}
19
- \contentsline {subsubsection}{\numberline {4.1.1}hikiutilsの想定利用形態}{15}
20
- \contentsline {subsubsection}{\numberline {4.1.2}コメンド名と振る舞いの詳細}{16}
21
- \contentsline {paragraph}{open FILE}{17}
22
- \contentsline {paragraph}{ls [FILE]}{17}
23
- \contentsline {paragraph}{rsync}{17}
24
- \contentsline {paragraph}{touch FILE}{18}
25
- \contentsline {paragraph}{pwd}{18}
26
- \contentsline {paragraph}{cd VAL}{18}
27
- \contentsline {subsection}{\numberline {4.2}Thorによる実装}{18}
28
- \contentsline {subsubsection}{\numberline {4.2.1}クラス初期化}{18}
29
- \contentsline {subsubsection}{\numberline {4.2.2}コマンド定義}{20}
30
- \contentsline {subsubsection}{\numberline {4.2.3}CLIの実行プロセス}{21}
31
- \contentsline {section}{\numberline {5}optparseからThorへの移行}{24}
@@ -1,26 +0,0 @@
1
- \relax
2
- \citation{1-1}
3
- \@writefile{toc}{\contentsline {section}{\numberline {2}序論}{5}}
4
- \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces hiki web systemとhiki systemの対応関係.}}{6}}
5
- \newlabel{fig:one}{{1}{6}}
6
- \newlabel{default}{{1}{6}}
7
- \@setckpt{introduction}{
8
- \setcounter{page}{7}
9
- \setcounter{equation}{0}
10
- \setcounter{enumi}{0}
11
- \setcounter{enumii}{0}
12
- \setcounter{enumiii}{0}
13
- \setcounter{enumiv}{0}
14
- \setcounter{footnote}{0}
15
- \setcounter{mpfootnote}{0}
16
- \setcounter{part}{0}
17
- \setcounter{section}{2}
18
- \setcounter{subsection}{0}
19
- \setcounter{subsubsection}{0}
20
- \setcounter{paragraph}{0}
21
- \setcounter{subparagraph}{0}
22
- \setcounter{figure}{1}
23
- \setcounter{table}{0}
24
- \setcounter{lstnumber}{1}
25
- \setcounter{lstlisting}{0}
26
- }
@@ -1,12 +0,0 @@
1
- \section{序論}
2
- hikiは,hiki記法を用いたwiki cloneである.wikiはウォード・カニンガムが作ったwikiwikiwebを源流とするhome page制作を容易にするシステムで,hikiもwikiの基本要求仕様を満足するシステムを提供する.wikiの特徴であるweb上で編集する機能を提供する.これを便宜上hiki web systemと呼ぶ.図\ref{fig:one}にある通り,一般的な表示画面の他に,編集画面が提供されており,ユーザーはこの編集画面からコンテンツを編集することが可能である.リンクやヘッダー,リスト,引用,表,図の表示などの基本テキストフォーマットが用意されている.
3
-
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
-
6
- \begin{figure}[htbp]\begin{center}
7
- \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.001.jpg}
8
- \caption{hiki web systemとhiki systemの対応関係.}
9
- \label{fig:one}
10
- \label{default}\end{center}\end{figure}
11
- 研究室内の内部文書,あるいは外部への宣伝資料,さらにwikipediaのように重要な研究成果の発信などに西谷研ではこのhiki systemを利用している.初心者にも覚えやすい直感的な操作である.しかし,慣れてくるとテキスト編集や画面更新にいちいちweb画面へ移行せねばならず,編集の思考が停止する.そこで,テキスト編集に優れたeditorとの連携や,terminal上のshell commandと連携しやすいようにhikiutilsというCLI(Command Line Interface)を作成して運用している.しかし,そのユーザインタフェースにはコマンドが直感的でないという問題点がある.そこで,Thorというコマンドラインツール作成ライブラリを用いる.hikiutilsでは,optparseというコマンドライン解析ライブラリを使用しているが,新たなライブラリThorを使用してコマンドを書き換え,より直感的なコマンドに変更する.
12
-
@@ -1,216 +0,0 @@
1
- \NeedsTeXFormat{LaTeX2e}
2
- \def\filedate{2006/02/20}
3
- \def\fileversion{0.2}
4
- \ProvidesPackage{jlisting}[\filedate\space\fileversion\space(Thor)]
5
- %
6
- \newcount\lst@nextchar
7
- \let\lst@@ProcessSpace\lst@ProcessSpace
8
- \def\lst@ProcessSpace#1{%
9
- \lst@check@chartype{#1}%
10
- \lst@@ProcessSpace
11
- \lst@whitespacetrue}
12
- \let\lst@@ProcessLetter\lst@ProcessLetter
13
- \def\lst@ProcessLetter#1#2{%
14
- \lst@check@chartype{#2}%
15
- {\lst@@ProcessLetter{#1}}%
16
- \relax}
17
- \let\lst@@ProcessDigit\lst@ProcessDigit
18
- \def\lst@ProcessDigit#1#2{%
19
- \lst@check@chartype{#2}%
20
- {\lst@@ProcessDigit{#1}}%
21
- \relax}
22
- \let\lst@@ProcessOther\lst@ProcessOther
23
- \def\lst@ProcessOther#1#2{%
24
- \lst@check@chartype{#2}%
25
- {\lst@@ProcessOther{#1}}%
26
- \relax}
27
- \let\lst@@ProcessTabulator\lst@ProcessTabulator
28
- \def\lst@ProcessTabulator#1{%
29
- \lst@check@chartype{#1}%
30
- \lst@@ProcessTabulator
31
- \relax}
32
- \def\lst@check@chartype#1#2#3{%
33
- \edef\@tempa{\lst@nextchar=`\string#1\relax}%
34
- \afterassignment\remove@to@nnil
35
- \@tempa\@nnil
36
- #2%
37
- \ifnum\lst@nextchar<\@cclvi
38
- #3%
39
- \else
40
- \lst@ifletter \else \lst@OutputOther \fi
41
- \lst@whitespacefalse
42
- \expandafter\lst@AppendJchar
43
- \fi
44
- #1}
45
- \def\lst@AppendJchar#1#2{%
46
- \lst@check@chartype{#2}%
47
- {\advance\lst@length\@ne\lst@Append{#1}}%
48
- \relax}
49
- \def\lst@check@chartype@BOL#1{%
50
- \edef\@tempa{\lst@nextchar=`\string#1\relax}%
51
- \afterassignment\remove@to@nnil
52
- \@tempa\@nnil
53
- \ifnum\lst@nextchar<\@cclvi\else
54
- \lst@whitespacefalse
55
- \expandafter\lst@AppendJchar
56
- \fi
57
- #1}
58
- \def\lst@InputListing#1{%
59
- \begingroup
60
- \lsthk@PreSet \gdef\lst@intname{#1}%
61
- \expandafter\lstset\expandafter{\lst@set}%
62
- \lsthk@DisplayStyle
63
- \catcode\active=\active
64
- \lst@Init\relax \let\lst@gobble\z@
65
- \lst@SkipToFirst
66
- \lst@ifprint \def\lst@next{\lst@get@filecontents{#1}}%
67
- \else \let\lst@next\@empty
68
- \fi
69
- \lst@next
70
- \lst@DeInit
71
- \endgroup}
72
- \newread\lst@inputfile
73
- \def\lst@get@filecontents#1{%
74
- \let\lst@filecontents\@empty
75
- \openin\lst@inputfile=#1\relax
76
- \let\@lst@get@filecontents@prevline\relax
77
- \lst@get@filecontents@loop
78
- \closein\lst@inputfile
79
- \lst@filecontents\empty}
80
- \def\lst@get@filecontents@loop{%
81
- \read\lst@inputfile to\@lst@get@filecontents@currline
82
- \ifx\@lst@get@filecontents@prevline\relax\else
83
- \expandafter\expandafter\expandafter\def
84
- \expandafter\expandafter\expandafter\lst@filecontents
85
- \expandafter\expandafter\expandafter{%
86
- \expandafter\lst@filecontents\@lst@get@filecontents@prevline}%
87
- \fi
88
- \let\@lst@get@filecontents@prevline\@lst@get@filecontents@currline
89
- \ifeof\lst@inputfile\else
90
- \expandafter\lst@get@filecontents@loop
91
- \fi}
92
- %%% [$B$3$N=hM}$b!$AjEv6/0z$G$9!%(B]
93
- \def\lst@BOLGobble{%
94
- \ifnum\lst@gobble>\z@
95
- \@tempcnta\lst@gobble\relax
96
- \expandafter\lst@BOLGobble@
97
- \else
98
- \expandafter\lst@check@chartype@BOL
99
- \fi}
100
- \def\lst@BOLGobble@#1{%
101
- \let\lst@next#1%
102
- \ifx \lst@next\relax\else
103
- \ifx \lst@next\lst@MProcessListing\else
104
- \ifx \lst@next\lst@ProcessFormFeed\else
105
- \ifx \lst@next\lstenv@backslash
106
- \let\lst@next\lstenv@BOLGobble@@
107
- \else
108
- \let\lst@next\lst@BOLGobble@@
109
- \ifx #1\lst@ProcessTabulator
110
- \advance\@tempcnta-\lst@tabsize\relax
111
- \ifnum\@tempcnta<\z@
112
- \lst@length-\@tempcnta \lst@PreGotoTabStop
113
- \fi
114
- \else
115
- \edef\@tempa{\lst@nextchar=`\string#1\relax}%
116
- \@tempa
117
- \ifnum\lst@nextchar<\@cclvi\else
118
- \advance\@tempcnta\m@ne
119
- \fi
120
- \advance\@tempcnta\m@ne
121
- \fi
122
- \fi \fi \fi \fi
123
- \lst@next}
124
- \def\lst@BOLGobble@@{%
125
- \ifnum\@tempcnta>\z@
126
- \expandafter\lst@BOLGobble@
127
- \else
128
- \expandafter\lst@check@chartype@BOL
129
- \fi
130
- }
131
- %
132
- % \begin{$B=$@5;v9`(B}{1.3}
133
- % $B$A$g$C$H$7$?=$@5(B
134
- \gdef\lst@breakProcessOther#1{\lst@ProcessOther#1}
135
- % $B%=!<%9%3!<%IL\<!$K$*$1$kJ8;z$HHV9f$N6u$-(B
136
- \let \l@lstlisting = \l@figure
137
- % $B%-%c%W%7%g%s$H%=!<%9%3!<%IL\<!$KBP$9$kF|K\8lBP1~(B
138
- \def\lstlistingname{$B%=!<%9%3!<%I(B}
139
- \def\lstlistlistingname{$B%=!<%9%3!<%IL\<!(B}
140
- % \end{$B=$@5;v9`(B}
141
- \endinput
142
- %
143
- %#!platex
144
- \documentclass[papersize]{jsarticle}
145
- % Macros
146
- \IfFileExists{dvipdfmx.def}{%
147
- \usepackage[dvipdfmx]{color,graphicx}%
148
- }{%
149
- \usepackage[dvipdfm]{color,graphicx}%
150
- }
151
- \usepackage{listings}[2004/09/07]
152
- \usepackage{jlisting}[2006/02/20]
153
- \usepackage{url}
154
- \usepackage{verbatim}
155
-
156
- \makeatletter
157
- % Original Macros
158
- \def\email#1{\gdef\@email{\texttt{#1}}}
159
- \def\homepage#1{\gdef\@homepage{\texttt{#1}}}
160
- \def\mac#1{\textsf{#1}}
161
- \def\URL#1{\texttt{#1}}
162
- \def\src#1{\texttt{#1}}
163
-
164
- % Dvipdfmx.def
165
- \def\dvipdfmxDefi{http://tex.dante.jp/ok/dvipdfmx/}
166
- \def\dvipdfmxDefii{http://ftp.ktug.or.kr/KTUG/dvipdfmx/contrib/latex/}
167
-
168
- \IfFileExists{dvipdfmx.def}{%
169
- \let \IfDvipdfmxDef = \empty \relax}{%
170
- \typeout{^^Jget dvipdfmx.def at \dvipdfmxDefi^^J
171
- or \dvipdfmxDefii^^J}%
172
- \def\IfDvipdfmxDef{Get \src{dvipdfmx.def} at \URL \dvipdfmxDefii \\
173
- or \URL \dvipdfmxDefi.}%
174
- }
175
-
176
- % Author Info
177
- \author {Th\'or Watanabe\thanks \@email \space \thanks \@homepage}
178
- \title {\mac{jlisting.sty}\\
179
- ---Japanese Localized Patch File of \mac{listings}---}
180
- \email {thor@tex.dante.jp}
181
- \homepage {http://tex.dante.jp/typo/}
182
- \date {2006/02/20}
183
-
184
- \makeatother
185
-
186
- \begin{document}
187
- \maketitle
188
- %\IfDvipdfmxDef
189
-
190
- \section{$B$A$g$C$H$7$?@bL@(B}% Short Description
191
-
192
- $B1|B<@2I';a$N7G<(HD$N!VHFMQE*$JIbF0BN!W$H$$$&0lO"$N=q$-9~$_$+$i(B
193
- $BE>:\$7$^$7$?!#(B
194
-
195
- \begin{quote}
196
- \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21172.html}\\
197
- \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21184.html}\\
198
- \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21189.html}\\
199
- \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21197.html}
200
- \end{quote}
201
-
202
- Copyright $B$O5H1JE/H~;a$K$"$k$N$@$H;W$$$^$9!%(B
203
-
204
- \section{$B99?7MzNr(B}% ChageLogs
205
-
206
- \begin{description}
207
- \item[ver.~0.1 (2004/03/24)]
208
- $B$H$j$"$($:8x3+!%(B
209
- \item[ver.~0.2 (2006/02/20)]
210
- \verb|\lst@breakProcessOther| $BL?Na$NDj5A$NDI2C!%(B
211
- \end{description}
212
-
213
- \section{$B%=!<%9%3!<%I(B}
214
- \par\narrowbaselines
215
- \verbatiminput{jlisting.sty}
216
- \end{document}
@@ -1,46 +0,0 @@
1
- \relax
2
- \citation{1-2}
3
- \citation{1-2}
4
- \citation{1-2}
5
- \@writefile{toc}{\contentsline {section}{\numberline {3}方法}{7}}
6
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}optparseとThorの比較}{7}}
7
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Thor}{7}}
8
- \citation{1-3}
9
- \citation{1-4}
10
- \@writefile{toc}{\contentsline {paragraph}{fizzbuzzメソッド,versionメソッド}{8}}
11
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}optparse}{8}}
12
- \@writefile{toc}{\contentsline {paragraph}{runメソッド}{9}}
13
- \@writefile{toc}{\contentsline {paragraph}{initializeメソッド}{9}}
14
- \@writefile{toc}{\contentsline {paragraph}{executeメソッド}{9}}
15
- \@writefile{toc}{\contentsline {paragraph}{fizzbuzzメソッド}{9}}
16
- \@writefile{toc}{\contentsline {paragraph}{versionメソッド}{10}}
17
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}既存のhikiutilsのコマンド解説}{10}}
18
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}コマンドの登録と実行メソッド}{10}}
19
- \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces コマンドの登録と実行メソッドの対応.}}{10}}
20
- \newlabel{fig:005}{{2}{10}}
21
- \newlabel{default}{{2}{10}}
22
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}CLIの実行プロセス}{12}}
23
- \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces CLIの実行プロセス.}}{12}}
24
- \newlabel{fig:007}{{3}{12}}
25
- \newlabel{default}{{3}{12}}
26
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}コード}{13}}
27
- \@setckpt{method}{
28
- \setcounter{page}{15}
29
- \setcounter{equation}{0}
30
- \setcounter{enumi}{2}
31
- \setcounter{enumii}{0}
32
- \setcounter{enumiii}{0}
33
- \setcounter{enumiv}{0}
34
- \setcounter{footnote}{0}
35
- \setcounter{mpfootnote}{0}
36
- \setcounter{part}{0}
37
- \setcounter{section}{3}
38
- \setcounter{subsection}{2}
39
- \setcounter{subsubsection}{3}
40
- \setcounter{paragraph}{0}
41
- \setcounter{subparagraph}{0}
42
- \setcounter{figure}{3}
43
- \setcounter{table}{0}
44
- \setcounter{lstnumber}{38}
45
- \setcounter{lstlisting}{0}
46
- }
@@ -1,253 +0,0 @@
1
-
2
- \section{方法}
3
- \subsection{optparseとThorの比較}
4
- 今回の研究対象のhikiutilsは,optparseというコマンドライン解析ライブラリで実装されている.
5
- 本研究ではこの代替ライブラリとしてThorの採用を検討した.
6
- 本章の最初では,FizzBuzzという簡単なコードを例にoptparseとThorにより作成するコマンドライン解析コードの比較を行う.FizzBuzzはThorの使い方を解説した記事\cite{1-2}で紹介されている.比較しやすくするためoptparseでFizzBuzzを新たに実装した.
7
-
8
- \subsubsection{Thor}
9
- Thorとは,コマンドラインツールの作成を支援するライブラリのことである.gitやbundlerのようにサブコマンドを含むコマンドラインツールを簡単に作成することができる\cite{1-2}.
10
-
11
- Thorの基本的な流れとしては
12
-
13
- \begin{enumerate}
14
- \item Thorを継承したクラスのメソッドがコマンドになる
15
- \item クラス.start(ARGV)でコマンドラインの処理をスタートする
16
- \end{enumerate}
17
- である\cite{1-2}.
18
-
19
- startに渡す引数が空の場合,Thorはクラスのヘルプリストを出力する.また,Thorはサブコマンドやサブサブコマンドも容易に作ることができる.
20
-
21
- 以下に示したコードがThorで記述されたfizzbuzzである.
22
- \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
23
- module Fizzbuzz
24
- class CLI < Thor
25
-
26
- desc 'fizzbuzz', 'Get fizzbuzz result from limit number'
27
- def fizzbuzz(limit)
28
- print Fizzbuzz.fizzbuzz(limit).join(',')
29
- exit
30
- end
31
-
32
- desc 'version', 'version'
33
- def version
34
- puts Fizzbuzz::VERSION
35
- end
36
- end
37
- end
38
- \end{lstlisting}
39
- このコードもoptparseのfizzbuzzと同様fizzbuzzとversionのコマンドを実行させる.
40
-
41
- \paragraph{fizzbuzzメソッド,versionメソッド}
42
- descでコマンド一覧で表示させるコマンド名と説明を書く.メソッド内ではそれぞれのコマンドの処理内容が書かれている.
43
-
44
- \subsubsection{optparse}
45
- optparseとは,getoptよりも簡便で,柔軟性に富み,かつ強力なコマンドライン解析ライブラリである.optparseでは,より宣言的なスタイルのコマンドライン解析手法,すなわちOptionParserのインスタンスでコマンドラインを解析するという手法をとっている.これを使うと,GNU/POSIX構文でオプションを指定できるだけでなく,使用法やヘルプメッセージの生成も行える\cite{1-3}.利用頻度はあまり高くないが古くから開発され,使用例が広く紹介されている.
46
-
47
- optparseの基本的な流れとしては
48
-
49
- \begin{enumerate}
50
- \item OptionParserオブジェクトoptを生成する
51
- \item オプションを取り扱うブロックをopt.onに登録する
52
- \item opt.parse(ARGV)でコマンドラインを実際にparseする
53
- \end{enumerate}
54
- である.
55
-
56
- OptionParserはコマンドラインのオプション取り扱うためのクラスであるためオブジェクトoptを生成されopt.onにコマンドを登録することができる.しかし,OptionParser\#onにはコマンドが登録されているだけであるため,OptionParser\#parseが呼ばれた時,コマンドラインにオプションが指定されていれば実行される.optparseにはデフォルトとして--helpと--versionオプションを認識する\cite{1-4}.
57
-
58
- 以下に示したコードがoptparseで記述したfizzbuzzである.
59
- \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
60
- module Fizzbuzz
61
- class Command
62
-
63
- def self.run(argv)
64
- new(argv).execute
65
- end
66
-
67
- def initialize(argv)
68
- @argv = argv
69
- end
70
-
71
- def execute
72
- options = Options.parse!(@argv)
73
- sub_command = options.delete(:command)
74
- case sub_command
75
- when 'fizzbuzz'
76
- fizzbuzz(options[:id])
77
- when 'version'
78
- version
79
- end
80
- end
81
-
82
- def fizzbuzz(limit_number)
83
- (0..limit_number).map do |num|
84
- if (num % 15).zero? then print 'FizzBuzz'
85
- elsif (num % 5).zero? then print 'Buzz'
86
- elsif (num % 3).zero? then print 'Fizz'
87
- else print num.to_s
88
- end
89
- print ' '
90
- end
91
- end
92
-
93
- def version
94
- puts Fizzbuzz::VERSION
95
- exit
96
- end
97
- end
98
- end
99
- \end{lstlisting}
100
- このコードはfizzbuzzとversionをコマンドとして実行できる.
101
-
102
- \paragraph{runメソッド}
103
- コマンド実行を行うためのメソッドであり,argv配列を代入することでexecuteメソッドを実行する.
104
-
105
- \paragraph{initializeメソッド}
106
- 初期化を行うメソッドである.
107
- \begin{quote}\begin{verbatim}
108
- @argv = argv
109
- \end{verbatim}\end{quote}
110
- こうすることでargvをクラス内で利用できるようにする.
111
-
112
- \paragraph{executeメソッド}
113
- 上記でoptparseではopt.onにコマンドを登録する必要があると説明したが,opt.onで登録できるものはハイフンがついたコマンドだけであり,ハイフンなしのコマンドの登録はこのようになる.
114
-
115
- argv配列の解析を行うOptions.parse!(@argv)をoptionsに代入して解析を行いsub\_commandに代入する.sub\_commandがfizzbuzzであればfizzbuzz(options[:id])メソッドを実行,versionであればversionメソッドを実行する.
116
-
117
- \paragraph{fizzbuzzメソッド}
118
- 引数としてlimit\_numberを受け取り,0〜limit\_numberまでの数字を繰り返す.numが15であればFizzbuzzを表示,5であればBuzzを表示,3であればFizzを表示,それ以外は数字を表示し,その後に空白を表示する.
119
-
120
- \paragraph{versionメソッド}
121
- fizzbuzzのバージョンを表示する.
122
-
123
- \subsection{既存のhikiutilsのコマンド解説}
124
- 既存のhikiutilsはコマンド解析ライブラリのoptparseを用いて,コマンドの処理を行っている.
125
- optparseの特徴は,「コマンドの登録,実行method」に分けて記述することが期待されている.
126
- また,CLIの起動の仕方が特徴的である.この二つを取り出して,動作とコードを説明する.
127
-
128
- \subsubsection{コマンドの登録と実行メソッド}
129
- optparseのコマンド登録と実行メソッドの呼び出し関係は図\ref{fig:005}の通りである.
130
-
131
- \begin{figure}[htbp]\begin{center}
132
- \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.005.jpg}
133
- \caption{コマンドの登録と実行メソッドの対応.}
134
- \label{fig:005}
135
- \label{default}\end{center}\end{figure}
136
- optparseでは以下の通り,コマンドの登録と実行が行われる.
137
-
138
- \begin{enumerate}
139
- \item OptionParserオブジェクトoptを生成
140
- \item optにコマンドを登録
141
- \item 入力されたコマンドの処理のメソッドへ移動
142
- \end{enumerate}
143
- この実装コードは次の通りである.
144
- \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
145
- def execute
146
- @argv << '--help' if @argv.size==0
147
- command_parser = OptionParser.new do |opt|
148
- opt.on('-v', '--version','show program Version.') { |v|
149
- opt.version = HikiUtils::VERSION
150
- puts opt.ver
151
- }
152
- opt.on('-s', '--show','show sources') {show_sources}
153
- opt.on('-a', '--add','add sources info') {add_sources }
154
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val)}
155
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
156
-
157
- ...省略...
158
-
159
- end
160
- begin
161
- command_parser.parse!(@argv)
162
- rescue=> eval
163
- p eval
164
- end
165
- dump_sources
166
- exit
167
- end
168
-
169
- def show_sources()
170
- printf("target_no:%i\n",@src[:target])
171
- printf("editor_command:%s\n",@src[:editor_command])
172
-
173
- ...省略...
174
-
175
- end
176
-
177
- 以下略
178
-
179
- \end{lstlisting}
180
- optparseではOptionParserオブジェクトoptの生成を行い,コマンドをoptに登録することでコマンドを作成することができる.しかし,これはコマンドを登録しているだけでコマンドの一覧ではこれを表示することができるが,コマンドの実行を行うためには実行を行うためのメソッドを作成する必要がある.optparseでのコマンドの実行はoptで登録されたコマンドが入力されることでそれぞれのコマンドの処理を行うメソッドに移動し処理を行う.しかし,このコマンド登録はハイフンを付けたコマンドしか登録ができず,ハイフンなしのコマンド登録はまた別の手段でやらなくてはいけない.
181
-
182
- \subsubsection{CLIの実行プロセス}
183
- optparseを用いた場合のCLIの実行プロセスは図\ref{fig:007}の通りとなる.
184
-
185
- \begin{figure}[htbp]\begin{center}
186
- \includegraphics[width=12cm,bb= 0 0 937 753]{../figs/./hikiutils_yamane.007.jpg}
187
- \caption{CLIの実行プロセス.}
188
- \label{fig:007}
189
- \label{default}\end{center}\end{figure}
190
- CLIの実行プロセスは次の通りとなる.
191
-
192
- \begin{enumerate}
193
- \item HikiのHikiUtils::Command.run(ARGV)でhikiutils.rbのrunメソッドを呼ぶ
194
- \item new(argv).executeでexecuteメソッドが実行される
195
- \end{enumerate}
196
- optparseではHikiutils::Command.run(ARGV)で実行され,requireで呼び出されたhikiutils.rbのrunメソッドが実行される.そこでコマンドを登録しているexecuteメソッドへ移動し入力したコマンドと対応させる.そして,対応したコマンドの処理が行われるメソッドに移動することで実行される.このようにoptparseでは実行を行うためのメソッドが必要である.
197
-
198
- \subsubsection{コード}
199
- optparseの呼び出し側のexe/hikiのコードは次の通りである.
200
- \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
201
- #!/usr/bin/env ruby
202
-
203
- require "hikiutils"
204
-
205
- HikiUtils::Command.run(ARGV)
206
- \end{lstlisting}
207
- 「require "hikituils"」ではlib/hikiutils.rbを読み出してくることを期待している.
208
- これはgemspecファイルでlibへのロードパスの記述がされているため,hikiutils.rbを参照することができる.
209
- 「Hikiuils::Command.run(ARGV)」ではlib/hikiutils.rbのHikiUtilsモジュールCommandクラスのrunメソッドを実行する記述が成されている.
210
-
211
- また呼び出される側のlib/hikiutils.rbのrunおよびexecute部のコードは次の通りとなる.
212
- \begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
213
- def self.run(argv=[])
214
- print "hikiutils: provide utilities for helping hiki editing.\n"
215
- new(argv).execute
216
- end
217
-
218
- def execute
219
- @argv << '--help' if @argv.size==0
220
- command_parser = OptionParser.new do |opt|
221
- opt.on('-v', '--version','show program Version.') { |v|
222
- opt.version = HikiUtils::VERSION
223
- puts opt.ver
224
- }
225
- opt.on('-s', '--show','show sources') {show_sources}
226
- opt.on('-a', '--add','add sources info') {add_sources }
227
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val) }
228
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
229
- opt.on('-l', '--list [FILE]','list files') {|file| list_files(file) }
230
- opt.on('-u', '--update FILE','update file') {|file| update_file(file) }
231
- opt.on('-r', '--rsync','rsync files') {rsync_files}
232
- opt.on('--database FILE','read database file') {|file| db_file(file)}
233
- opt.on('--display FILE','display converted hikifile') {|file| display(f\
234
- ile)}
235
- opt.on('-c', '--checkdb','check database file') {check_db}
236
- opt.on('--remove FILE','remove file') {|file| remove_file(file)}
237
- opt.on('--move FILES','move file1,file2',Array) {|files| move_file(file\
238
- s)}
239
- opt.on('--euc FILE','translate file to euc') {|file| euc_file(file) }
240
- opt.on('--initialize','initialize source directory') {dir_init() }
241
- end
242
- begin
243
- command_parser.parse!(@argv)
244
- rescue=> eval
245
- p eval
246
- end
247
- dump_sources
248
- exit
249
- end
250
- \end{lstlisting}
251
- runメソッドでは「hikiutils: provide utilities for helping hiki editing.」を表示させ,executeメソッドを実行させる.
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メソッドで表示する.
253
-