my_help 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (455) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.gitignore +29 -2
  4. data/.ipynb_checkpoints/README-checkpoint.ipynb +511 -0
  5. data/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
  6. data/.ruby-version +1 -0
  7. data/Dockerfile.template +13 -0
  8. data/README.md +341 -256
  9. data/README.org +480 -0
  10. data/Rakefile +9 -31
  11. data/docs/.ipynb_checkpoints/README-checkpoint.ipynb +112 -0
  12. data/docs/.ipynb_checkpoints/Untitled-checkpoint.ipynb +219 -0
  13. data/docs/README.ipynb +112 -0
  14. data/docs/bob/README_en.ipynb +219 -0
  15. data/docs/bob/diff_against_org_mode.ipynb +119 -0
  16. data/docs/bob/emacs_help.ipynb +133 -0
  17. data/docs/bob/template_help.ipynb +136 -0
  18. data/{my_help_nasu → docs/nasu}/.gitignore +0 -0
  19. data/{my_help_nasu → docs/nasu}/Rakefile +91 -20
  20. data/docs/nasu/abstract.hiki +17 -0
  21. data/{my_help_nasu → docs/nasu}/code.hiki +25 -21
  22. data/docs/nasu/discussion.hiki +38 -0
  23. data/docs/nasu/features/add.feature +12 -0
  24. data/docs/nasu/features/all_help.feature +10 -0
  25. data/docs/nasu/features/backup_list.feature +10 -0
  26. data/docs/nasu/features/edit_help.feature +9 -0
  27. data/docs/nasu/features/my_todo.feature +16 -0
  28. data/docs/nasu/features/remove.feature +10 -0
  29. data/docs/nasu/features/sample_e.feature +6 -0
  30. data/docs/nasu/features/step_definitions/add_spec.rb +18 -0
  31. data/docs/nasu/features/step_definitions/all_help_spec.rb +18 -0
  32. data/docs/nasu/features/step_definitions/backup_list_spec.rb +18 -0
  33. data/docs/nasu/features/step_definitions/edit_help_spec.rb +19 -0
  34. data/docs/nasu/features/step_definitions/my_todo_spec.rb +25 -0
  35. data/docs/nasu/features/step_definitions/remove_spec.rb +18 -0
  36. data/docs/nasu/features/step_definitions/store_spec.rb +18 -0
  37. data/docs/nasu/features/step_definitions/to_hiki_spec.rb +18 -0
  38. data/docs/nasu/features/store.feature +10 -0
  39. data/docs/nasu/features/support/env.rb +2 -0
  40. data/docs/nasu/features/test.feature +10 -0
  41. data/docs/nasu/features/to_hiki.feature +10 -0
  42. data/{my_help_nasu → docs/nasu}/features.hiki +80 -70
  43. data/docs/nasu/figs/cucumber01.001.jpg +0 -0
  44. data/docs/nasu/figs/cucumber02.001.jpg +0 -0
  45. data/docs/nasu/figs/cucumber03.001.jpg +0 -0
  46. data/docs/nasu/figs/cucumber04.001.jpg +0 -0
  47. data/docs/nasu/figs/cucumber05.001.jpg +0 -0
  48. data/docs/nasu/figs/cucumber1.jpg +0 -0
  49. data/docs/nasu/figs/cucumber2.jpg +0 -0
  50. data/docs/nasu/figs/cucumber3.jpg +0 -0
  51. data/docs/nasu/figs/cucumber4.jpg +0 -0
  52. data/docs/nasu/figs/my_help_nasu.001.jpeg +0 -0
  53. data/docs/nasu/figs/my_help_nasu.002.jpeg +0 -0
  54. data/docs/nasu/figs/my_help_nasu.003.jpeg +0 -0
  55. data/docs/nasu/figs/my_help_nasu.004.jpeg +0 -0
  56. data/docs/nasu/figs/my_help_nasu.005.jpeg +0 -0
  57. data/docs/nasu/figs/my_help_nasu.006.jpeg +0 -0
  58. data/docs/nasu/figs/my_help_nasu.007.jpeg +0 -0
  59. data/docs/nasu/figs/my_help_nasu.008.jpeg +0 -0
  60. data/docs/nasu/figs/my_help_nasu.pdf +0 -0
  61. data/docs/nasu/figs/my_help_nasu.png +0 -0
  62. data/docs/nasu/figs/my_help_nasu1.001.jpg +0 -0
  63. data/docs/nasu/figs/rspec01.001.jpg +0 -0
  64. data/docs/nasu/figs/rspec1.jpg +0 -0
  65. data/docs/nasu/figs/rspec2.jpg +0 -0
  66. data/{my_help_nasu → docs/nasu}/head2.tex +0 -0
  67. data/{my_help_nasu → docs/nasu}/hiki_help.yml +0 -0
  68. data/{my_help_nasu → docs/nasu}/introduction.hiki +15 -16
  69. data/{my_help_nasu → docs/nasu}/key_bind_mi +0 -0
  70. data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  71. data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  72. data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  73. data/docs/nasu/keynote/cucumber01.key/Data/mt10@2x-87.jpg +0 -0
  74. data/docs/nasu/keynote/cucumber01.key/Data/mt1@2x-78.jpg +0 -0
  75. data/docs/nasu/keynote/cucumber01.key/Data/mt2@2x-79.jpg +0 -0
  76. data/docs/nasu/keynote/cucumber01.key/Data/mt3@2x-80.jpg +0 -0
  77. data/docs/nasu/keynote/cucumber01.key/Data/mt4@2x-81.jpg +0 -0
  78. data/docs/nasu/keynote/cucumber01.key/Data/mt5@2x-82.jpg +0 -0
  79. data/docs/nasu/keynote/cucumber01.key/Data/mt6@2x-83.jpg +0 -0
  80. data/docs/nasu/keynote/cucumber01.key/Data/mt7@2x-84.jpg +0 -0
  81. data/docs/nasu/keynote/cucumber01.key/Data/mt8@2x-85.jpg +0 -0
  82. data/docs/nasu/keynote/cucumber01.key/Data/mt9@2x-86.jpg +0 -0
  83. data/docs/nasu/keynote/cucumber01.key/Data/pasted-image-89.png +0 -0
  84. data/docs/nasu/keynote/cucumber01.key/Data/pasted-image-small-90.png +0 -0
  85. data/docs/nasu/keynote/cucumber01.key/Data/st0-104.jpg +0 -0
  86. data/docs/nasu/keynote/cucumber01.key/Index.zip +0 -0
  87. data/docs/nasu/keynote/cucumber01.key/Metadata/BuildVersionHistory.plist +8 -0
  88. data/docs/nasu/keynote/cucumber01.key/Metadata/DocumentIdentifier +1 -0
  89. data/docs/nasu/keynote/cucumber01.key/Metadata/Properties.plist +0 -0
  90. data/docs/nasu/keynote/cucumber01.key/preview-micro.jpg +0 -0
  91. data/docs/nasu/keynote/cucumber01.key/preview-web.jpg +0 -0
  92. data/docs/nasu/keynote/cucumber01.key/preview.jpg +0 -0
  93. data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  94. data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  95. data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  96. data/docs/nasu/keynote/cucumber02.key/Data/mt10@2x-87.jpg +0 -0
  97. data/docs/nasu/keynote/cucumber02.key/Data/mt1@2x-78.jpg +0 -0
  98. data/docs/nasu/keynote/cucumber02.key/Data/mt2@2x-79.jpg +0 -0
  99. data/docs/nasu/keynote/cucumber02.key/Data/mt3@2x-80.jpg +0 -0
  100. data/docs/nasu/keynote/cucumber02.key/Data/mt4@2x-81.jpg +0 -0
  101. data/docs/nasu/keynote/cucumber02.key/Data/mt5@2x-82.jpg +0 -0
  102. data/docs/nasu/keynote/cucumber02.key/Data/mt6@2x-83.jpg +0 -0
  103. data/docs/nasu/keynote/cucumber02.key/Data/mt7@2x-84.jpg +0 -0
  104. data/docs/nasu/keynote/cucumber02.key/Data/mt8@2x-85.jpg +0 -0
  105. data/docs/nasu/keynote/cucumber02.key/Data/mt9@2x-86.jpg +0 -0
  106. data/docs/nasu/keynote/cucumber02.key/Data/pasted-image-89.png +0 -0
  107. data/docs/nasu/keynote/cucumber02.key/Data/pasted-image-small-90.png +0 -0
  108. data/docs/nasu/keynote/cucumber02.key/Data/st0-96.jpg +0 -0
  109. data/docs/nasu/keynote/cucumber02.key/Index.zip +0 -0
  110. data/docs/nasu/keynote/cucumber02.key/Metadata/BuildVersionHistory.plist +8 -0
  111. data/docs/nasu/keynote/cucumber02.key/Metadata/DocumentIdentifier +1 -0
  112. data/docs/nasu/keynote/cucumber02.key/Metadata/Properties.plist +0 -0
  113. data/docs/nasu/keynote/cucumber02.key/preview-micro.jpg +0 -0
  114. data/docs/nasu/keynote/cucumber02.key/preview-web.jpg +0 -0
  115. data/docs/nasu/keynote/cucumber02.key/preview.jpg +0 -0
  116. data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  117. data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  118. data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  119. data/docs/nasu/keynote/cucumber03.key/Data/mt10@2x-87.jpg +0 -0
  120. data/docs/nasu/keynote/cucumber03.key/Data/mt1@2x-78.jpg +0 -0
  121. data/docs/nasu/keynote/cucumber03.key/Data/mt2@2x-79.jpg +0 -0
  122. data/docs/nasu/keynote/cucumber03.key/Data/mt3@2x-80.jpg +0 -0
  123. data/docs/nasu/keynote/cucumber03.key/Data/mt4@2x-81.jpg +0 -0
  124. data/docs/nasu/keynote/cucumber03.key/Data/mt5@2x-82.jpg +0 -0
  125. data/docs/nasu/keynote/cucumber03.key/Data/mt6@2x-83.jpg +0 -0
  126. data/docs/nasu/keynote/cucumber03.key/Data/mt7@2x-84.jpg +0 -0
  127. data/docs/nasu/keynote/cucumber03.key/Data/mt8@2x-85.jpg +0 -0
  128. data/docs/nasu/keynote/cucumber03.key/Data/mt9@2x-86.jpg +0 -0
  129. data/docs/nasu/keynote/cucumber03.key/Data/pasted-image-89.png +0 -0
  130. data/docs/nasu/keynote/cucumber03.key/Data/pasted-image-small-90.png +0 -0
  131. data/docs/nasu/keynote/cucumber03.key/Data/st0-100.jpg +0 -0
  132. data/docs/nasu/keynote/cucumber03.key/Index.zip +0 -0
  133. data/docs/nasu/keynote/cucumber03.key/Metadata/BuildVersionHistory.plist +8 -0
  134. data/docs/nasu/keynote/cucumber03.key/Metadata/DocumentIdentifier +1 -0
  135. data/docs/nasu/keynote/cucumber03.key/Metadata/Properties.plist +0 -0
  136. data/docs/nasu/keynote/cucumber03.key/preview-micro.jpg +0 -0
  137. data/docs/nasu/keynote/cucumber03.key/preview-web.jpg +0 -0
  138. data/docs/nasu/keynote/cucumber03.key/preview.jpg +0 -0
  139. data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  140. data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  141. data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  142. data/docs/nasu/keynote/cucumber04.key/Data/mt10@2x-87.jpg +0 -0
  143. data/docs/nasu/keynote/cucumber04.key/Data/mt1@2x-78.jpg +0 -0
  144. data/docs/nasu/keynote/cucumber04.key/Data/mt2@2x-79.jpg +0 -0
  145. data/docs/nasu/keynote/cucumber04.key/Data/mt3@2x-80.jpg +0 -0
  146. data/docs/nasu/keynote/cucumber04.key/Data/mt4@2x-81.jpg +0 -0
  147. data/docs/nasu/keynote/cucumber04.key/Data/mt5@2x-82.jpg +0 -0
  148. data/docs/nasu/keynote/cucumber04.key/Data/mt6@2x-83.jpg +0 -0
  149. data/docs/nasu/keynote/cucumber04.key/Data/mt7@2x-84.jpg +0 -0
  150. data/docs/nasu/keynote/cucumber04.key/Data/mt8@2x-85.jpg +0 -0
  151. data/docs/nasu/keynote/cucumber04.key/Data/mt9@2x-86.jpg +0 -0
  152. data/docs/nasu/keynote/cucumber04.key/Data/pasted-image-106.png +0 -0
  153. data/docs/nasu/keynote/cucumber04.key/Data/pasted-image-small-107.png +0 -0
  154. data/docs/nasu/keynote/cucumber04.key/Data/st0-115.jpg +0 -0
  155. data/docs/nasu/keynote/cucumber04.key/Index.zip +0 -0
  156. data/docs/nasu/keynote/cucumber04.key/Metadata/BuildVersionHistory.plist +8 -0
  157. data/docs/nasu/keynote/cucumber04.key/Metadata/DocumentIdentifier +1 -0
  158. data/docs/nasu/keynote/cucumber04.key/Metadata/Properties.plist +0 -0
  159. data/docs/nasu/keynote/cucumber04.key/preview-micro.jpg +0 -0
  160. data/docs/nasu/keynote/cucumber04.key/preview-web.jpg +0 -0
  161. data/docs/nasu/keynote/cucumber04.key/preview.jpg +0 -0
  162. data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  163. data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  164. data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  165. data/docs/nasu/keynote/cucumber05.key/Data/mt10@2x-87.jpg +0 -0
  166. data/docs/nasu/keynote/cucumber05.key/Data/mt1@2x-78.jpg +0 -0
  167. data/docs/nasu/keynote/cucumber05.key/Data/mt2@2x-79.jpg +0 -0
  168. data/docs/nasu/keynote/cucumber05.key/Data/mt3@2x-80.jpg +0 -0
  169. data/docs/nasu/keynote/cucumber05.key/Data/mt4@2x-81.jpg +0 -0
  170. data/docs/nasu/keynote/cucumber05.key/Data/mt5@2x-82.jpg +0 -0
  171. data/docs/nasu/keynote/cucumber05.key/Data/mt6@2x-83.jpg +0 -0
  172. data/docs/nasu/keynote/cucumber05.key/Data/mt7@2x-84.jpg +0 -0
  173. data/docs/nasu/keynote/cucumber05.key/Data/mt8@2x-85.jpg +0 -0
  174. data/docs/nasu/keynote/cucumber05.key/Data/mt9@2x-86.jpg +0 -0
  175. data/docs/nasu/keynote/cucumber05.key/Data/pasted-image-89.png +0 -0
  176. data/docs/nasu/keynote/cucumber05.key/Data/pasted-image-small-90.png +0 -0
  177. data/docs/nasu/keynote/cucumber05.key/Data/st0-97.jpg +0 -0
  178. data/docs/nasu/keynote/cucumber05.key/Index.zip +0 -0
  179. data/docs/nasu/keynote/cucumber05.key/Metadata/BuildVersionHistory.plist +8 -0
  180. data/docs/nasu/keynote/cucumber05.key/Metadata/DocumentIdentifier +1 -0
  181. data/docs/nasu/keynote/cucumber05.key/Metadata/Properties.plist +0 -0
  182. data/docs/nasu/keynote/cucumber05.key/preview-micro.jpg +0 -0
  183. data/docs/nasu/keynote/cucumber05.key/preview-web.jpg +0 -0
  184. data/docs/nasu/keynote/cucumber05.key/preview.jpg +0 -0
  185. data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  186. data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  187. data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  188. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt10@2x-87.jpg +0 -0
  189. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt1@2x-78.jpg +0 -0
  190. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt2@2x-79.jpg +0 -0
  191. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt3@2x-80.jpg +0 -0
  192. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt4@2x-81.jpg +0 -0
  193. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt5@2x-82.jpg +0 -0
  194. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt6@2x-83.jpg +0 -0
  195. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt7@2x-84.jpg +0 -0
  196. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt8@2x-85.jpg +0 -0
  197. data/docs/nasu/keynote/my_help_nasu1.key/Data/mt9@2x-86.jpg +0 -0
  198. data/docs/nasu/keynote/my_help_nasu1.key/Data/st0-299.jpg +0 -0
  199. data/docs/nasu/keynote/my_help_nasu1.key/Index.zip +0 -0
  200. data/docs/nasu/keynote/my_help_nasu1.key/Metadata/BuildVersionHistory.plist +8 -0
  201. data/docs/nasu/keynote/my_help_nasu1.key/Metadata/DocumentIdentifier +1 -0
  202. data/docs/nasu/keynote/my_help_nasu1.key/Metadata/Properties.plist +0 -0
  203. data/docs/nasu/keynote/my_help_nasu1.key/preview-micro.jpg +0 -0
  204. data/docs/nasu/keynote/my_help_nasu1.key/preview-web.jpg +0 -0
  205. data/docs/nasu/keynote/my_help_nasu1.key/preview.jpg +0 -0
  206. data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  207. data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  208. data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  209. data/docs/nasu/keynote/rspec01.key/Data/mt10@2x-87.jpg +0 -0
  210. data/docs/nasu/keynote/rspec01.key/Data/mt1@2x-78.jpg +0 -0
  211. data/docs/nasu/keynote/rspec01.key/Data/mt2@2x-79.jpg +0 -0
  212. data/docs/nasu/keynote/rspec01.key/Data/mt3@2x-80.jpg +0 -0
  213. data/docs/nasu/keynote/rspec01.key/Data/mt4@2x-81.jpg +0 -0
  214. data/docs/nasu/keynote/rspec01.key/Data/mt5@2x-82.jpg +0 -0
  215. data/docs/nasu/keynote/rspec01.key/Data/mt6@2x-83.jpg +0 -0
  216. data/docs/nasu/keynote/rspec01.key/Data/mt7@2x-84.jpg +0 -0
  217. data/docs/nasu/keynote/rspec01.key/Data/mt8@2x-85.jpg +0 -0
  218. data/docs/nasu/keynote/rspec01.key/Data/mt9@2x-86.jpg +0 -0
  219. data/docs/nasu/keynote/rspec01.key/Data/pasted-image-89.png +0 -0
  220. data/docs/nasu/keynote/rspec01.key/Data/pasted-image-small-90.png +0 -0
  221. data/docs/nasu/keynote/rspec01.key/Data/st0-96.jpg +0 -0
  222. data/docs/nasu/keynote/rspec01.key/Index.zip +0 -0
  223. data/docs/nasu/keynote/rspec01.key/Metadata/BuildVersionHistory.plist +8 -0
  224. data/docs/nasu/keynote/rspec01.key/Metadata/DocumentIdentifier +1 -0
  225. data/docs/nasu/keynote/rspec01.key/Metadata/Properties.plist +0 -0
  226. data/docs/nasu/keynote/rspec01.key/preview-micro.jpg +0 -0
  227. data/docs/nasu/keynote/rspec01.key/preview-web.jpg +0 -0
  228. data/docs/nasu/keynote/rspec01.key/preview.jpg +0 -0
  229. data/docs/nasu/latex_dir/abstract.tex +18 -0
  230. data/{my_help_nasu → docs/nasu}/latex_dir/code.tex +9 -21
  231. data/docs/nasu/latex_dir/discussion.aux +28 -0
  232. data/docs/nasu/latex_dir/discussion.tex +19 -0
  233. data/docs/nasu/latex_dir/features.aux +30 -0
  234. data/docs/nasu/latex_dir/features.tex +186 -0
  235. data/{my_help_nasu → docs/nasu}/latex_dir/head.tex +1 -1
  236. data/{my_help_nasu → docs/nasu}/latex_dir/introduction.aux +3 -3
  237. data/{my_help_nasu → docs/nasu}/latex_dir/introduction.tex +15 -16
  238. data/{my_help_nasu → docs/nasu}/latex_dir/jlisting.sty +0 -0
  239. data/{my_help_nasu/latex_dir/consideration.aux → docs/nasu/latex_dir/method.aux} +7 -8
  240. data/docs/nasu/latex_dir/method.tex +6 -0
  241. data/{my_help_nasu → docs/nasu}/latex_dir/method_bdd.aux +10 -7
  242. data/{my_help_nasu → docs/nasu}/latex_dir/method_bdd.tex +14 -5
  243. data/{my_help_nasu → docs/nasu}/latex_dir/method_cucumber.aux +10 -9
  244. data/{my_help_nasu → docs/nasu}/latex_dir/method_cucumber.tex +15 -18
  245. data/{my_help_nasu → docs/nasu}/latex_dir/method_usage.aux +11 -11
  246. data/{my_help_nasu → docs/nasu}/latex_dir/method_usage.tex +35 -29
  247. data/{my_help_nasu → docs/nasu}/latex_dir/my_help_nasu.aux +6 -5
  248. data/docs/nasu/latex_dir/my_help_nasu.log +363 -0
  249. data/docs/nasu/latex_dir/my_help_nasu.pdf +0 -0
  250. data/docs/nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
  251. data/{my_help_nasu → docs/nasu}/latex_dir/my_help_nasu.tex +12 -18
  252. data/docs/nasu/latex_dir/my_help_nasu.toc +35 -0
  253. data/docs/nasu/latex_dir/new_code.aux +44 -0
  254. data/docs/nasu/latex_dir/new_code.tex +237 -0
  255. data/{my_help_nasu → docs/nasu}/latex_dir/overview.aux +2 -2
  256. data/{my_help_nasu/latex_dir → docs/nasu}/latex_dir/pre.tex +0 -0
  257. data/docs/nasu/method.hiki +5 -0
  258. data/{my_help_nasu → docs/nasu}/method_bdd.hiki +14 -8
  259. data/{my_help_nasu → docs/nasu}/method_cucumber.hiki +14 -17
  260. data/{my_help_nasu → docs/nasu}/method_usage.hiki +25 -24
  261. data/docs/nasu/my_help_nasu/my_help_nasu.001.bb +5 -0
  262. data/{my_help_nasu → docs/nasu}/my_help_nasu/my_help_nasu.001.jpeg +0 -0
  263. data/docs/nasu/my_help_nasu/my_help_nasu.002.bb +5 -0
  264. data/docs/nasu/my_help_nasu/my_help_nasu.002.jpeg +0 -0
  265. data/docs/nasu/my_help_nasu/my_help_nasu.003.bb +5 -0
  266. data/docs/nasu/my_help_nasu/my_help_nasu.003.jpeg +0 -0
  267. data/docs/nasu/my_help_nasu/my_help_nasu.004.bb +5 -0
  268. data/docs/nasu/my_help_nasu/my_help_nasu.004.jpeg +0 -0
  269. data/docs/nasu/my_help_nasu/my_help_nasu.005.bb +5 -0
  270. data/docs/nasu/my_help_nasu/my_help_nasu.005.jpeg +0 -0
  271. data/docs/nasu/my_help_nasu/my_help_nasu.006.bb +5 -0
  272. data/docs/nasu/my_help_nasu/my_help_nasu.006.jpeg +0 -0
  273. data/docs/nasu/my_help_nasu/my_help_nasu.007.bb +5 -0
  274. data/docs/nasu/my_help_nasu/my_help_nasu.007.jpeg +0 -0
  275. data/docs/nasu/my_help_nasu/my_help_nasu.008.bb +5 -0
  276. data/docs/nasu/my_help_nasu/my_help_nasu.008.jpeg +0 -0
  277. data/docs/nasu/my_help_nasu.hiki +28 -0
  278. data/docs/nasu/my_help_nasu.key +0 -0
  279. data/docs/nasu/my_help_nasu09.key +0 -0
  280. data/docs/nasu/my_help_nasu1/my_help_nasu1.001.jpg +0 -0
  281. data/docs/nasu/nasu_abst/abst_fig.bb +5 -0
  282. data/docs/nasu/nasu_abst/abst_fig.png +0 -0
  283. data/docs/nasu/nasu_abst/my_help_nasu.001.bb +5 -0
  284. data/docs/nasu/nasu_abst/my_help_nasu.001.jpg +0 -0
  285. data/docs/nasu/nasu_abst/my_help_nasu.001.png +0 -0
  286. data/docs/nasu/nasu_abst/nasu_abst.aux +10 -0
  287. data/docs/nasu/nasu_abst/nasu_abst.log +179 -0
  288. data/docs/nasu/nasu_abst/nasu_abst.pdf +0 -0
  289. data/docs/nasu/nasu_abst/nasu_abst.synctex.gz +0 -0
  290. data/docs/nasu/nasu_abst/nasu_abst.tex +63 -0
  291. data/docs/nasu/new_code.hiki +246 -0
  292. data/docs/nasu/spec/.rspec +2 -0
  293. data/docs/nasu/spec/my_help_spec.rb +75 -0
  294. data/docs/nasu/spec/my_todo/todo_spec.rb +15 -0
  295. data/docs/nasu/spec/spec_helper.rb +11 -0
  296. data/docs/nasu/spec/support/aruba.rb +1 -0
  297. data/docs/nasu/spec/thor_spec.rb +81 -0
  298. data/docs/nasu/test/my_help_test.rb +11 -0
  299. data/docs/nasu/test/test_helper.rb +4 -0
  300. data/{hikis → docs}/tmp.org +0 -0
  301. data/docs/yagi/bachelor_thesis/final/figs/opt_thor.jpeg +0 -0
  302. data/docs/yagi/bachelor_thesis/final/handout/handout.aux +14 -0
  303. data/{my_help_nasu/latex_dir/my_help_nasu.log → docs/yagi/bachelor_thesis/final/handout/handout.log} +46 -175
  304. data/docs/yagi/bachelor_thesis/final/handout/handout.pdf +0 -0
  305. data/docs/yagi/bachelor_thesis/final/handout/handout.synctex.gz +0 -0
  306. data/docs/yagi/bachelor_thesis/final/handout/handout.tex +123 -0
  307. data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.aux +46 -0
  308. data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.dvi +0 -0
  309. data/{lor → docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.lof} +0 -0
  310. data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.lot +0 -0
  311. data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.synctex.gz +0 -0
  312. data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.toc +0 -0
  313. data/docs/yagi/bachelor_thesis/final/thesis/figs/opt_thor.png +0 -0
  314. data/docs/yagi/bachelor_thesis/final/thesis/final_thesis.ipynb +449 -0
  315. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/latex/final_thesis.tex +718 -0
  316. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter1/chapter1.tex +8 -0
  317. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter2/chapter2.log +28 -0
  318. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter2/chapter2.tex +127 -0
  319. data/{my_help_nasu/latex_dir/method_cucumber.log → docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter3/chapter3.log} +11 -11
  320. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter3/chapter3.tex +328 -0
  321. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter4/chapter4.tex +13 -0
  322. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter5/chapter5.tex +5 -0
  323. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter6/chapter6.log +38 -0
  324. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter6/chapter6.tex +28 -0
  325. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.aux +1 -0
  326. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.log +55 -0
  327. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.tex +6 -0
  328. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/tmp/tmp.tex +1 -0
  329. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/.splits_location.tex +6 -0
  330. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.aux +114 -0
  331. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.lof +4 -0
  332. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.log +699 -0
  333. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.lot +5 -0
  334. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.out.ps +98 -0
  335. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.pdf +0 -0
  336. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.synctex.gz +0 -0
  337. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.tex +30 -0
  338. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.toc +22 -0
  339. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis_checked_180213_1433.pdf +0 -0
  340. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/form00_style.tex +25 -0
  341. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/tightlist_setting.tex +2 -0
  342. data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/usepackage.tex +25 -0
  343. data/docs/yagi/bachelor_thesis/translation/awesome_chapter2.ipynb +84 -0
  344. data/docs/yagi/bachelor_thesis/translation/awesome_introduction.ipynb +328 -0
  345. data/docs/yagi/comparisons/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
  346. data/docs/yagi/comparisons/.ipynb_checkpoints/comp-checkpoint.ipynb +230 -0
  347. data/docs/yagi/comparisons/comp.ipynb +178 -0
  348. data/docs/yagi/comparisons/hanami.rb +25 -0
  349. data/docs/yagi/comparisons/optparse.rb +21 -0
  350. data/docs/yagi/comparisons/thor.rb +11 -0
  351. data/docs/yagi/midterm_presentation/.ipynb_checkpoints/abst-checkpoint.ipynb +87 -0
  352. data/docs/yagi/midterm_presentation/abst.aux +16 -0
  353. data/docs/yagi/midterm_presentation/abst.ipynb +87 -0
  354. data/docs/yagi/midterm_presentation/abst.log +222 -0
  355. data/docs/yagi/midterm_presentation/abst.pdf +0 -0
  356. data/docs/yagi/midterm_presentation/abst.synctex.gz +0 -0
  357. data/docs/yagi/midterm_presentation/abst.tex +133 -0
  358. data/{my_help_nasu/latex_dir/jlisting.tex → docs/yagi/midterm_presentation/jlisting.sty} +0 -0
  359. data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.001.png +0 -0
  360. data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.002.png +0 -0
  361. data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.003.png +0 -0
  362. data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.004.png +0 -0
  363. data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.005.png +0 -0
  364. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  365. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  366. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
  367. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt10@2x-92.jpg +0 -0
  368. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt1@2x-83.jpg +0 -0
  369. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt2@2x-84.jpg +0 -0
  370. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt3@2x-85.jpg +0 -0
  371. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt4@2x-86.jpg +0 -0
  372. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt5@2x-87.jpg +0 -0
  373. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt6@2x-88.jpg +0 -0
  374. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt7@2x-89.jpg +0 -0
  375. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt8@2x-90.jpg +0 -0
  376. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt9@2x-91.jpg +0 -0
  377. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st0-438.jpg +0 -0
  378. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st1-598.jpg +0 -0
  379. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st2-648.jpg +0 -0
  380. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st3-652.jpg +0 -0
  381. data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st4-671.jpg +0 -0
  382. data/docs/yagi/midterm_presentation/mid_keynote.key/Index.zip +0 -0
  383. data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/BuildVersionHistory.plist +8 -0
  384. data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/DocumentIdentifier +1 -0
  385. data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/Properties.plist +0 -0
  386. data/docs/yagi/midterm_presentation/mid_keynote.key/preview-micro.jpg +0 -0
  387. data/docs/yagi/midterm_presentation/mid_keynote.key/preview-web.jpg +0 -0
  388. data/docs/yagi/midterm_presentation/mid_keynote.key/preview.jpg +0 -0
  389. data/docs/yagi/thor_spec.ipynb +192 -0
  390. data/docs/yagi/thor_task.ipynb +98 -0
  391. data/exe/my_help +3 -1
  392. data/lib/my_help/org2yml.rb +46 -0
  393. data/lib/my_help/version.rb +1 -1
  394. data/lib/my_help/yml2org.rb +36 -0
  395. data/lib/my_help.rb +76 -30
  396. data/lib/my_help_thor.rb +170 -0
  397. data/lib/my_todo/my_todo.rb +5 -2
  398. data/lib/specific_help.rb +52 -25
  399. data/lib/{specific_help.rb~ → specific_help_bu.rb} +129 -89
  400. data/lib/specific_help_opt.rb +71 -0
  401. data/lib/specific_help_thor.rb +172 -0
  402. data/lib/templates/emacs_help.org +47 -0
  403. data/lib/templates/emacs_help_e.org +49 -0
  404. data/lib/templates/my_todo.org +11 -0
  405. data/lib/templates/template_help.org +8 -0
  406. data/make_docker.sh +5 -0
  407. data/my_help.gemspec +3 -2
  408. metadata +406 -92
  409. data/.DS_Store +0 -0
  410. data/CODE_OF_CONDUCT.md +0 -49
  411. data/README_en.md +0 -132
  412. data/exe/e_h +0 -4
  413. data/exe/emacs_help +0 -4
  414. data/exe/my_todo +0 -4
  415. data/hikis/README_en.hiki +0 -130
  416. data/hikis/README_ja.hiki +0 -316
  417. data/hikis/diff_against_org-mode.hiki +0 -34
  418. data/hikis/emacs_help.hiki +0 -47
  419. data/hikis/template_help.hiki +0 -51
  420. data/latexes/handout_pre.tex +0 -11
  421. data/lib/.emacs_help.rb.swp +0 -0
  422. data/lib/daddygongon/emacs_help.yml +0 -89
  423. data/lib/daddygongon/my_todo.yml +0 -31
  424. data/lib/daddygongon/template_help.yml +0 -33
  425. data/lib/emacs_help.rb~ +0 -137
  426. data/lib/my_todo/my_todo.rb~ +0 -7
  427. data/lib/todo.rb~ +0 -1
  428. data/my_help.wiki/Home.md +0 -330
  429. data/my_help.wiki/README_en.md +0 -132
  430. data/my_help.wiki/README_ja.md +0 -330
  431. data/my_help.wiki/emacs_help.md +0 -46
  432. data/my_help.wiki/template_help.md +0 -51
  433. data/my_help_nasu/.DS_Store +0 -0
  434. data/my_help_nasu/consideration.hiki +0 -8
  435. data/my_help_nasu/figs/my_help_nasu.001.jpeg +0 -0
  436. data/my_help_nasu/figs/my_help_nasu.001.jpg +0 -0
  437. data/my_help_nasu/figs/my_help_nasu1.001.jpg +0 -0
  438. data/my_help_nasu/latex_dir/.gitignore +0 -1
  439. data/my_help_nasu/latex_dir/Rakefile +0 -420
  440. data/my_help_nasu/latex_dir/code.aux +0 -25
  441. data/my_help_nasu/latex_dir/consideration.tex +0 -9
  442. data/my_help_nasu/latex_dir/features.aux +0 -31
  443. data/my_help_nasu/latex_dir/features.tex +0 -173
  444. data/my_help_nasu/latex_dir/hiki_help.yml +0 -53
  445. data/my_help_nasu/latex_dir/latex_dir/head.tex +0 -9
  446. data/my_help_nasu/latex_dir/latex_dir/jlisting.tex +0 -216
  447. data/my_help_nasu/latex_dir/my_help_nasu.pdf +0 -0
  448. data/my_help_nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
  449. data/my_help_nasu/latex_dir/my_help_nasu.toc +0 -32
  450. data/my_help_nasu/latex_dir/overview.tex +0 -12
  451. data/my_help_nasu/latex_dir/pre.tex +0 -36
  452. data/my_help_nasu/my_help_nasu/.DS_Store +0 -0
  453. data/my_help_nasu/my_help_nasu.hiki +0 -32
  454. data/my_help_nasu/my_help_nasu.key +0 -0
  455. data/my_help_nasu/overview.hiki +0 -11
@@ -0,0 +1,718 @@
1
+
2
+ % Default to the notebook output style
3
+
4
+
5
+
6
+
7
+ % Inherit from the specified cell style.
8
+
9
+
10
+
11
+
12
+
13
+ \documentclass[11pt,dvipdfmx]{jsarticle}
14
+
15
+
16
+
17
+ \usepackage[T1]{fontenc}
18
+ % Nicer default font (+ math font) than Computer Modern for most use cases
19
+ \usepackage{mathpazo}
20
+
21
+ % Basic figure setup, for now with no caption control since it's done
22
+ % automatically by Pandoc (which extracts ![](path) syntax from Markdown).
23
+ \usepackage{wrapfig}
24
+ \usepackage{graphicx}
25
+ % We will generate all images so they have a width \maxwidth. This means
26
+ % that they will get their normal width if they fit onto the page, but
27
+ % are scaled down if they would overflow the margins.
28
+ \makeatletter
29
+ \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth
30
+ \else\Gin@nat@width\fi}
31
+ \makeatother
32
+ \let\Oldincludegraphics\includegraphics
33
+ % Set max figure width to be 80% of text width, for now hardcoded.
34
+ % \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}}
35
+ % Ensure that by default, figures have no caption (until we provide a
36
+ % proper Figure object with a Caption API and a way to capture that
37
+ % in the conversion process - todo).
38
+ \usepackage{caption}
39
+ % \DeclareCaptionLabelFormat{nolabel}{}
40
+ % \captionsetup{labelformat=nolabel}
41
+
42
+ \usepackage{adjustbox} % Used to constrain images to a maximum size
43
+ \usepackage{xcolor} % Allow colors to be defined
44
+ \usepackage{enumerate} % Needed for markdown enumerations to work
45
+ \usepackage{geometry} % Used to adjust the document margins
46
+ \usepackage{amsmath} % Equations
47
+ \usepackage{amssymb} % Equations
48
+ \usepackage{textcomp} % defines textquotesingle
49
+ % Hack from http://tex.stackexchange.com/a/47451/13684:
50
+ \AtBeginDocument{%
51
+ \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code
52
+ }
53
+ \usepackage{upquote} % Upright quotes for verbatim code
54
+ \usepackage{eurosym} % defines \euro
55
+ \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support
56
+ \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document
57
+ \usepackage{fancyvrb} % verbatim replacement that allows latex
58
+ \usepackage{grffile} % extends the file name processing of package graphics
59
+ % to support a larger range
60
+ % The hyperref package gives us a pdf with properly built
61
+ % internal navigation ('pdf bookmarks' for the table of contents,
62
+ % internal cross-reference links, web links for URLs, etc.)
63
+ \usepackage{hyperref}
64
+ \usepackage{longtable} % longtable support required by pandoc >1.10
65
+ \usepackage{booktabs} % table support for pandoc > 1.12.2
66
+ \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment)
67
+ \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout)
68
+ % normalem makes italics be italics, not underlines
69
+
70
+
71
+
72
+
73
+ % Colors for the hyperref package
74
+ \definecolor{urlcolor}{rgb}{0,.145,.698}
75
+ \definecolor{linkcolor}{rgb}{.71,0.21,0.01}
76
+ \definecolor{citecolor}{rgb}{.12,.54,.11}
77
+
78
+ % ANSI colors
79
+ \definecolor{ansi-black}{HTML}{3E424D}
80
+ \definecolor{ansi-black-intense}{HTML}{282C36}
81
+ \definecolor{ansi-red}{HTML}{E75C58}
82
+ \definecolor{ansi-red-intense}{HTML}{B22B31}
83
+ \definecolor{ansi-green}{HTML}{00A250}
84
+ \definecolor{ansi-green-intense}{HTML}{007427}
85
+ \definecolor{ansi-yellow}{HTML}{DDB62B}
86
+ \definecolor{ansi-yellow-intense}{HTML}{B27D12}
87
+ \definecolor{ansi-blue}{HTML}{208FFB}
88
+ \definecolor{ansi-blue-intense}{HTML}{0065CA}
89
+ \definecolor{ansi-magenta}{HTML}{D160C4}
90
+ \definecolor{ansi-magenta-intense}{HTML}{A03196}
91
+ \definecolor{ansi-cyan}{HTML}{60C6C8}
92
+ \definecolor{ansi-cyan-intense}{HTML}{258F8F}
93
+ \definecolor{ansi-white}{HTML}{C5C1B4}
94
+ \definecolor{ansi-white-intense}{HTML}{A1A6B2}
95
+
96
+ % commands and environments needed by pandoc snippets
97
+ % extracted from the output of `pandoc -s`
98
+ \providecommand{\tightlist}{%
99
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
100
+ \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
101
+ % Add ',fontsize=\small' for more characters per line
102
+ \newenvironment{Shaded}{}{}
103
+ \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
104
+ \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
105
+ \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
106
+ \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
107
+ \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
108
+ \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
109
+ \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
110
+ \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
111
+ \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
112
+ \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
113
+ \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
114
+ \newcommand{\RegionMarkerTok}[1]{{#1}}
115
+ \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
116
+ \newcommand{\NormalTok}[1]{{#1}}
117
+
118
+ % Additional commands for more recent versions of Pandoc
119
+ \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}}
120
+ \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
121
+ \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
122
+ \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}}
123
+ \newcommand{\ImportTok}[1]{{#1}}
124
+ \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}}
125
+ \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
126
+ \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
127
+ \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}}
128
+ \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
129
+ \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}}
130
+ \newcommand{\BuiltInTok}[1]{{#1}}
131
+ \newcommand{\ExtensionTok}[1]{{#1}}
132
+ \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}}
133
+ \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}}
134
+ \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
135
+ \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
136
+
137
+
138
+ % Define a nice break command that doesn't care if a line doesn't already
139
+ % exist.
140
+ \def\br{\hspace*{\fill} \\* }
141
+ % Math Jax compatability definitions
142
+ \def\gt{>}
143
+ \def\lt{<}
144
+ % Document parameters
145
+ \title{final\_thesis}
146
+
147
+
148
+
149
+
150
+ % Pygments definitions
151
+
152
+ \makeatletter
153
+ \def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax%
154
+ \let\PY@ul=\relax \let\PY@tc=\relax%
155
+ \let\PY@bc=\relax \let\PY@ff=\relax}
156
+ \def\PY@tok#1{\csname PY@tok@#1\endcsname}
157
+ \def\PY@toks#1+{\ifx\relax#1\empty\else%
158
+ \PY@tok{#1}\expandafter\PY@toks\fi}
159
+ \def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{%
160
+ \PY@it{\PY@bf{\PY@ff{#1}}}}}}}
161
+ \def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}}
162
+
163
+ \expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
164
+ \expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
165
+ \expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
166
+ \expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
167
+ \expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
168
+ \expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
169
+ \expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
170
+ \expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
171
+ \expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
172
+ \expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
173
+ \expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
174
+ \expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
175
+ \expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
176
+ \expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
177
+ \expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
178
+ \expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
179
+ \expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
180
+ \expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
181
+ \expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
182
+ \expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
183
+ \expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
184
+ \expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
185
+ \expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
186
+ \expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
187
+ \expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
188
+ \expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
189
+ \expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
190
+ \expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
191
+ \expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
192
+ \expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
193
+ \expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
194
+ \expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
195
+ \expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
196
+ \expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit}
197
+ \expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf}
198
+ \expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
199
+ \expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
200
+ \expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
201
+ \expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}
202
+ \expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
203
+ \expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
204
+ \expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
205
+ \expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
206
+ \expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
207
+ \expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
208
+ \expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
209
+ \expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
210
+ \expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
211
+ \expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
212
+ \expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
213
+ \expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
214
+ \expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
215
+ \expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
216
+ \expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
217
+ \expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
218
+ \expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
219
+ \expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
220
+ \expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
221
+ \expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
222
+ \expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
223
+ \expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
224
+ \expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
225
+ \expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
226
+ \expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
227
+ \expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
228
+ \expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
229
+ \expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
230
+
231
+ \def\PYZbs{\char`\\}
232
+ \def\PYZus{\char`\_}
233
+ \def\PYZob{\char`\{}
234
+ \def\PYZcb{\char`\}}
235
+ \def\PYZca{\char`\^}
236
+ \def\PYZam{\char`\&}
237
+ \def\PYZlt{\char`\<}
238
+ \def\PYZgt{\char`\>}
239
+ \def\PYZsh{\char`\#}
240
+ \def\PYZpc{\char`\%}
241
+ \def\PYZdl{\char`\$}
242
+ \def\PYZhy{\char`\-}
243
+ \def\PYZsq{\char`\'}
244
+ \def\PYZdq{\char`\"}
245
+ \def\PYZti{\char`\~}
246
+ % for compatibility with earlier versions
247
+ \def\PYZat{@}
248
+ \def\PYZlb{[}
249
+ \def\PYZrb{]}
250
+ \makeatother
251
+
252
+
253
+ % Exact colors from NB
254
+ \definecolor{incolor}{rgb}{0.0, 0.0, 0.5}
255
+ \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0}
256
+
257
+
258
+
259
+
260
+ % Prevent overflowing lines due to hard-to-break entities
261
+ \sloppy
262
+ % Setup hyperref package
263
+ \hypersetup{
264
+ breaklinks=true, % so long urls are correctly broken across lines
265
+ colorlinks=true,
266
+ urlcolor=urlcolor,
267
+ linkcolor=linkcolor,
268
+ citecolor=citecolor,
269
+ }
270
+ % Slightly bigger margins than the latex defaults
271
+
272
+ \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
273
+
274
+
275
+
276
+ \begin{document}
277
+
278
+
279
+ \maketitle
280
+
281
+
282
+
283
+
284
+ Table of Contents{}
285
+
286
+ {{1~~}はじめに}
287
+
288
+ {{1.1~~}目的}
289
+
290
+ {{2~~}基本的事項}
291
+
292
+ {{2.1~~}my\_help}
293
+
294
+ {{2.1.1~~}my\_helpの目的}
295
+
296
+ {{2.1.2~~}使用法}
297
+
298
+ {{2.2~~}optparse}
299
+
300
+ {{2.3~~}thor}
301
+
302
+ {{2.4~~}option}
303
+
304
+ {{3~~}研究内容}
305
+
306
+ {{3.1~~}thor化に伴う書き換え(具体的な作業)}
307
+
308
+ {{3.2~~}thorによるサブコマンド}
309
+
310
+ {{3.3~~}exeディレクトリの書き換え}
311
+
312
+ {{3.4~~}libディレクトリ}
313
+
314
+ {{3.5~~}その他オプション}
315
+
316
+ {{3.6~~}オプションの比較}
317
+
318
+ {{3.6.1~~}optparse版}
319
+
320
+ {{3.6.2~~}thor版}
321
+
322
+ {{4~~}総括}
323
+
324
+ {{5~~}謝辞}
325
+
326
+ {{6~~}参考文献}
327
+
328
+ \section{はじめに}\label{ux306fux3058ux3081ux306b}
329
+
330
+ \subsection{目的}\label{ux76eeux7684}
331
+
332
+ 西谷研究室で使われているユーザメモソフト,my
333
+ helpの振る舞いを制御しているサブコマンドは,マイナスを付した省略記法が取られている.プログラミング初心者にとってこの省略記法は,覚えにくかったりわかりにくかったりするという問題があり,現在はフルワードを使った自然言語に近い記述法が多く用いられている.
334
+ そこで,本研究ではコマンドラインツール作成ライブラリを自然言語に近いサブコマンド体系を実装しやすいライブラリであるThorに変更する.rubyの標準ライブラリであるoptparseで作成されているmy
335
+ helpをThorによって書き直し,異なった2つライブラリで作成されたmy
336
+ helpの使用感を比較検討することを目的とする.
337
+
338
+ \section{基本的事項}\label{ux57faux672cux7684ux4e8bux9805}
339
+
340
+ \subsection{my\_help}\label{my_help}
341
+
342
+ \subsubsection{my\_helpの目的}\label{my_helpux306eux76eeux7684}
343
+
344
+ my
345
+ helpとは,ユーザー独自のマニュアルを作成することができるユーザメモソフトである.これは,terminalだけを用いて簡単に起動,編集,削除などをすることができるため,非常に便利である.さらに,そのマニュアルは自分ですぐに編集,参照することができるので,メモとしての機能も果たし
346
+ ている.これにより,プログラミング初心者が,頻繁に使うコマンドやキーバインドなどをいちいちweb
347
+ browserを立ち上げて調べるのではなく,terminal上で即座に取得できるため,プログラム開発を集中することが期待される.
348
+
349
+ メモやtodoリストの作成が行えることや,保存場所を共通化することでどこでも立ち上げることができることなど,emacsのorg-modeと類似している点がいくつか存在する.しかし,明確な相違点も存在する.org-modeはemacsを起動させなければならないが,my
350
+ helpはemacsを起動させる必要がなくterminalで編集することが可能である.また,org-modeを使用するとなるとorg-mode独自のコマンドを学ぶ必要があり,学習コストがかかってしまう.my\_helpにはその必要がなく,非常に単純な操作でアプリを使用することができるので,org-modeの使い方を理解していない初心者にとって使いやすいものとなっている.
351
+
352
+ また,アプリやプログラミング言語などの正式なマニュアルは英語で書かれていることが多く,初心者には理解するのが困難である.my\_helpを使用すれば,自分なりのマニュアルを作成することができるので,仕様を噛み砕いて理解することが可能である.tarminal上でいつでもメモを参照できるため,どこにメモをしたかを忘れるリスクも軽減される.
353
+
354
+ \subsubsection{使用法}\label{ux4f7fux7528ux6cd5}
355
+
356
+ インストールする方法だが,gemの標準とは少し方法が異なっている.
357
+ まず,githubにあるmy
358
+ helpのリポジトリをフォーク,クローンすることでローカル(ネットワークに繋がれていない環境)でもmy
359
+ helpを操作することができるようになる.
360
+
361
+ \begin{quote}
362
+ git clone git@github.com:daddygongon/my\_help.git
363
+ \end{quote}
364
+ これ以降の作業はbundleにて行っていく.
365
+
366
+ \begin{quote}
367
+ bundle update
368
+ \end{quote}
369
+ を実行することでmy\_help.gemspecに記述されている必要なgemsがbundleされる.ここでCould
370
+ not locate
371
+ Gemfileとエラーが出た場合は、Gemfileのある場所を探し、その配下に移動してから再びコマンドを入力する.
372
+
373
+ \begin{quote}
374
+ bundle exec exe/my\_help
375
+ \end{quote}
376
+ でmy
377
+ helpに用意されているコマンドを参照することができる.デフォルトでemacs
378
+ helpというemacsのヘルプが用意されている.これはemacs
379
+ helpの他に,省略形のe\_hでも表示されるようになっている.
380
+
381
+ 次に,独自のヘルプを作成する方法であるが,まず,
382
+
383
+ \begin{quote}
384
+ bundle exec exe/my\_help -i new\_help
385
+ \end{quote}
386
+ とすることでnew
387
+ helpという名前のヘルプが作成され,そこにテンプレートが格納される.また,
388
+
389
+ \begin{quote}
390
+ bundle exec exe/my\_help -e new\_help
391
+ \end{quote}
392
+ で,自分の好きなように編集することができる.ヘルプが完成したら,
393
+
394
+ \begin{quote}
395
+ bundle exec exe/my\_help -m
396
+ \end{quote}
397
+ とすることでexeディレクトリにnew helpが追加され,new
398
+ help,n\_hが使用可能になるという手順である.
399
+
400
+ \subsection{optparse}\label{optparse}
401
+
402
+ 今回の研究対象のmy
403
+ helpは,optparseで実装されている.optparseはRubyの標準ライブラリであり,Rubyでコマンドラインのオプションを操作するためのライブラリである{[}1{]}.optparseが操作するオプションは,下記のonメソッドで設定する.
404
+
405
+ \begin{verbatim}
406
+ def execute
407
+ @argv << ’--help’ if @argv.size==0
408
+ command_parser = OptionParser.new do |opt|
409
+ opt.on(’-v’, ’--version’,’show␣program␣Version.’ ) { |v|
410
+ opt.version = MyHelp::VERSION
411
+ puts opt.ver
412
+ }
413
+ opt.on(’-l’, ’--list’, ’list␣specific␣helps’){list_helps}
414
+ #中略
415
+ end
416
+ #中略
417
+ end
418
+
419
+ def list_helps
420
+ #中略
421
+ end
422
+ #後略
423
+ \end{verbatim}
424
+
425
+ 第1引数はショートオプションで,-aや-dのような形で設定する.同様にして,第2引数はロングオプションを表し,-\/-addや-\/-deleteのように,第3引数はそのオプションの説明文で,helpで表示される説明文を設定する.後ろのブロックには,そのオプションが指定された場合に実行されるコードを記述する
426
+ {[}2{]}.しかしこのライブラリでは自然言語に近い,ハイフンなしのサブコマンドを実装するには相当な書き換えが必要となる.
427
+
428
+ メソッドの引数でオプションを定義し,引数が指定された時の処理をブロックで記述する.ブロックの引数にはオプションが指定されたことを示すtrueが渡される.onメソッドが呼ばれた時点ではオプションは実行されず,定義されるだけである.parseが呼ばれた際,コマンドラインにオプションが登録されていれば実行される.
429
+
430
+ オプション定義の際,スペースの後に任意の文字を追加すると,そのオプションは引数を受け取るオプションになる.その文字に{[}{]}をつけることで引数は必須でなくなる.また引数がハイフンで始まる場合,オプションとの間にハイフンを2つ挟むことで引数として認識される.
431
+
432
+ helpとversionのサブコマンドはデフォルトで作成される.
433
+
434
+ \subsection{thor}\label{thor}
435
+
436
+ 本研究ではoptparseの代わりのライブラリとしてThorの採用を検討する.Thorは,コマンドラインツールの作成を支援するライブラリであり,gitやbundlerのようにサブコマンドを含むコマンドラインツールを簡単に作成することができる
437
+ {[}3{]}.Thorには以下のような特徴がある. 1.
438
+ コマンドラインオプションのパーズやサブコマンドごとのヘルプを作るなどの面倒な作業を簡単にこなすことができ,手早くビルドツールや実行可能なコマンドを作成できる
439
+ {[}4{]}. 1. 特殊なDSL(Domain Specific
440
+ Language)を使わずにメソッドを定義することで処理を記述するため,テストを行いやすい
441
+ {[}4{]}. 1.
442
+ optparseでは作成することが困難な,マイナスを伴わない(自然言語に近い)サブコマンドを実装することが可能である.
443
+
444
+ \begin{verbatim}
445
+ desc 'list, --list', 'list specific helps'
446
+ map "--list" => "list"
447
+ def list
448
+ print "Specific help file:\n"
449
+ local_help_entries.each{|file|
450
+ file_path=File.join(@local_help_dir,file)
451
+ help = YAML.load(File.read(file_path))
452
+ print " #{file}\t:#{help[:head][0]}\n"
453
+ }
454
+ end
455
+ end
456
+ \end{verbatim}
457
+
458
+ optparseではonメソッドでコマンドの登録を行い,その後のdefでコマンドの振る舞いを定義している.それに対してThorは登録と定義を同時に行うことが可能である.また,Thorを継承したクラスのパブリックメソッドがそのままコマンドになるので非常に簡単にコマンドを作成することが可能である.Thorはコマンドを作成した時点で自動的にヘルプを生成し,コマンドを指定せずにコマンドラインアプリを実行するとヘルプを表示する.
459
+
460
+ \subsection{option}\label{option}
461
+
462
+ 今日,複雑な機能を持つコマンドが増加している.そのようなコマンドは,オプション(サブコマンド)を使用することで適切な動作を実行することが可能になる.例えばgitコマンドはオプションなしでは意味をなさない.オプションでどのような動作をするかが決まるので,オプションを入力することで正常に動作するのである.
463
+
464
+ そもそも,オプションにはショートオプションとロングオプションの2種類がある.ショートオプションはハイフンの後に英字1字を付けた形式のもので,-aや-vなどといったものがショートオプションである.また,ショートオプションは2つ以上のオプションを1つにまとめて実行することもできる.例えば,-l,-a,-tの3つのオプションを1つにまとめて-latとして実行することが可能である.それに対してロングオプションは,ハイフン2つの後に英字2字以上を付けることができる形式である.例えば-\/-allや-\/-versionなどである.ロングオプションは英字を2字以上使用することができるので,どのようなオプションであるかを明確にするために一般的にフルワードが採用されている.-\/-no-の形にすることで否定形のオプションを作成することも可能である.ロングオプションはショートオプションのように複数のオプションを1つにまとめることは不可能であり,1つ1つをスペースで区切る必要がある.
465
+
466
+ ショートオプションを設定する際,英字1文字しか使用することができないので基本的には対応づけられたロングオプション(そのオプションがどのような動作を行うのかを表す単語)の頭文字であることが多く,慣れている人であればショートオプションを使うことで素早くアプリケーションを動かすことが可能である.しかし,用いるアプリが1つであるとは限らないし,全てのアプリのショートオプションを統一するのも困難である.またinitialとinstallなど,頭文字が重複してしまう2つのオプションがある場合,-iというショートオプションがinitialを意味するのかinstallを意味するのかを判断するのは,初心者には容易ではなく,混乱を引き起こしかねない.そのため,ヒューマンエラーを引き起こしてしまったり,学習コストがかかってしまったりすることがある.
467
+
468
+ ショートオプションの場合,複数のオプションを一つにまとめることができると記述したが,これは引数を必要としないオプションの場合である.引数を必要とするオプションの場合,2文字目以降の英字は引数扱いになってしまう.例えば上に示した-latにおいて,-lが引数を必要とするオプションであれば,-latはatという引数が与えられた-lという風に解釈されてしまうので注意が必要である.そういった点においてもショートオプションは初心者にとって扱いにくい形式であると言える.
469
+
470
+ Command line
471
+ applicationのオプションの記述方法には幾つもの流儀があるようで
472
+ 何らかの標準があるわけではない.
473
+ しかし,それら全てに対応することはできず,なんらかの
474
+ 基準に従ってオプション記法を解釈する必要がある.
475
+
476
+ ここでは, "Build awesome command-line application in ruby 2"に従って
477
+ オプション記法と用語をまとめておく.
478
+
479
+ コマンドラインの基本形は,
480
+
481
+ \begin{quote}
482
+ ls -lat dir\_name
483
+ \end{quote}
484
+ というように
485
+
486
+ \begin{quote}
487
+ executabel options arguments
488
+ \end{quote}
489
+ での形であった.これは,GNU標準に基本構造が記載されている.
490
+
491
+ その後,幾つかのswitchやflagを組み合わせて,複雑な
492
+ 命令を解釈できるようにするに従って,
493
+
494
+ \begin{quote}
495
+ grep -\/-igonre-case -C 4 "some string" /tmp
496
+ \end{quote}
497
+ などとほぼ呪文のような形態となってきた.
498
+
499
+ その後,command line suiteと呼ばれる一群のcommand line
500
+ applicationが登場した.典型的なのはgitである{[}5{]}.
501
+
502
+ gitはlinuxのバックアップを分散処理するために, Linus
503
+ Torvaldsが開発したものであるが,いくつもの
504
+ 機能に従ってそれぞれ個別のコマンドが用意されていた.
505
+ それぞれ,git-commitとかgit-fetchなどであった.
506
+ それがある時,すべてをまとめてsuiteとして
507
+ パッケージし直され,1つのまとまったcommandとして提供された.
508
+ すなわち,git commitやgit fetchなどである{[}6{]}.
509
+
510
+ \section{研究内容}\label{ux7814ux7a76ux5185ux5bb9}
511
+
512
+ \subsection{thor化に伴う書き換え(具体的な作業)}\label{thorux5316ux306bux4f34ux3046ux66f8ux304dux63dbux3048ux5177ux4f53ux7684ux306aux4f5cux696d}
513
+
514
+ optparseからthorへの書き換えの際,第一に必要となるのは,\textasciitilde{}.gemspecファイル内にThorがインストールされるように変更を加えることである.
515
+
516
+ \begin{verbatim}
517
+ spec.add_development_dependency "thor"
518
+ \end{verbatim}
519
+
520
+ この記述は,作成しているコマンドラインツールがThorに依存性を持つことを意味している.optparseで書いた場合は,Thorに依存性を持つ必要がなく,当然このような記述はされていないので,上の一文を書き加える必要がある.また,bundle
521
+ updateをターミナル上で実行することで,ローカルでのコマンドラインツールを実行した際にThorが適用されるようにアップデートされる.そうすることで,Thorの記述が実際にソースファイルで使用できるようになる.
522
+
523
+ \subsection{thorによるサブコマンド}\label{thorux306bux3088ux308bux30b5ux30d6ux30b3ux30deux30f3ux30c9}
524
+
525
+ 次に,コマンドが呼ばれる流れについて説明する.
526
+
527
+ \begin{enumerate}
528
+ \def\labelenumi{\arabic{enumi}.}
529
+ \tightlist
530
+ \item
531
+ コマンドを実行する.
532
+ \item
533
+ コマンドを実行すると,exeディレクトリの中にあるコマンド名と同じ名前のファイル(以降コマンドファイルと呼ぶ)が実行される.
534
+ \item
535
+ コマンドファイル内でlibディレクトリ内のソースファイルをrequireしておき,クラス内のコマンドを解析する関数を呼び出す.
536
+ \item
537
+ ソースファイル内に書かれた処理が実行される.
538
+ \end{enumerate}
539
+
540
+ このような流れでコマンドが呼び出され,処理が行われる.Thorとoptpaseの差異は4.におけるコマンドの解析による処理関数への中継の方法である.
541
+
542
+ \subsection{exeディレクトリの書き換え}\label{exeux30c7ux30a3ux30ecux30afux30c8ux30eaux306eux66f8ux304dux63dbux3048}
543
+
544
+ exeディレクトリの中にあるコマンドファイルについて書き換えを行う.まずはoptparseを使用した際のコマンドファイルの記述を記載する.
545
+
546
+ \begin{verbatim}
547
+ !/usr/bin/env ruby
548
+ require "my_help_opt"
549
+
550
+ MyHelp::Command.run(ARGV)
551
+ \end{verbatim}
552
+
553
+ optparseの場合,MyHelp::Command.run(ARGV)というクラス関数を実行することでコマンドを呼び出している.しかし,Thorはoptparseのようにrun(ARGV)を用いず,start(ARGV)というクラス関数を実行してコマンドを呼び出す.よって,runをstartに書き換える作業が必要になる.以下にThorを使用した際のコマンドファイルの記述を記載する.
554
+
555
+ \begin{verbatim}
556
+ !/usr/bin/env ruby
557
+ require "my_help_thor"
558
+
559
+ MyHelp::Command.start(ARGV)
560
+ \end{verbatim}
561
+
562
+ \subsection{libディレクトリ}\label{libux30c7ux30a3ux30ecux30afux30c8ux30ea}
563
+
564
+ まず,self.runについてであるが,Thorでは使用されないのでこの一文は削除する.次にinitializeであるが,こちらについては変更が必要である.そもそもinitializeとはmy\_helpを動かすのに必要なディレクトリがあるかどうかを調べるメソッドであり,なければここで作ることができる.optparseのinitializeではargv={[}{]}となっているところをThorでは(アスタリスク)argvとする必要がある.また,大きな違いはsuperの有無である.optparseではsuperは必要ないのだが,Thorでは必要になる.これは,
565
+
566
+ \subsection{その他オプション}\label{ux305dux306eux4ed6ux30aaux30d7ux30b7ux30e7ux30f3}
567
+
568
+ optparseではコマンド実行の際,引数の解析を行い,その引数に合わせた関数を呼び出す,という手順で動作している.その手順を記述した関数がexecuteである.
569
+
570
+ \begin{verbatim}
571
+ def execute
572
+ @argv << '--help' if @argv.size==0
573
+ command_parser = OptionParser.new do |opt|
574
+ opt.on('-v', '--version','show program Version.') { |v|
575
+ opt.version = MyHelp::VERSION
576
+ puts opt.ver
577
+ }
578
+
579
+ opt.on('-l', '--list', 'list specific helps'){list_helps}
580
+ opt.on('-e NAME', '--edit NAME', 'edit NAME help(eg test_help)'){|file| edit_help(file)}
581
+ opt.on('-i NAME', '--init NAME', 'initialize NAME help(eg test_help).'){|file| init_help(file)}
582
+ opt.on('-m', '--make', 'make executables for all helps.'){make_help}
583
+ opt.on('-c', '--clean', 'clean up exe dir.'){clean_exe}
584
+ opt.on('--install_local','install local after edit helps'){install_local}
585
+ opt.on('--delete NAME','delete NAME help'){|file| delete_help(file)}
586
+ end
587
+
588
+ begin
589
+ command_parser.parse!(@argv)
590
+ rescue=> eval
591
+ p eval
592
+ end
593
+ exit
594
+ end
595
+ \end{verbatim}
596
+
597
+ しかしThorの場合,executeのような間を取り持つ関数を用意する必要がなく,関数自体をコマンドとして登録していく形をとっているので,この関数は不必要である.以下にThorでの関数宣言を記載する.optparseno場合,-iというコマンドで呼び出されている処理をinitというコマンドで呼び出されるように書き換えたのが以下の関数である.
598
+
599
+ \begin{verbatim}
600
+ desc 'init NAME, --init NAME', 'initialize NAME help(eg test_help).'
601
+ 関数についての説明,ここがヘルプで表示される.
602
+ map "--init" => "init"
603
+ --オプションでも呼び出すことが可能.
604
+ def init(file)
605
+ 以下は変更なし
606
+ p target_help=File.join(@local_help_dir,file)
607
+ if File::exists?(target_help)
608
+ puts "File exists. rm it first to initialize it."
609
+ exit
610
+ end
611
+ p template = File.join(@default_help_dir,'template_help')
612
+ FileUtils::Verbose.cp(template,target_help)
613
+ end
614
+ \end{verbatim}
615
+
616
+ このように書き換えることで,Thorを使用したオプションの設定を行うことができるのだが,実際に動かしてみるとエラーが表示されることがある.ここで表示されるエラーは,コマンドとして設定されていない関数があることについての警告文である.その関数はコマンドとして使用しないということを明確に記述することでこの警告を消すことが可能である.
617
+
618
+ \begin{verbatim}
619
+ no_commands do
620
+
621
+ この間にコマンド設定しない関数を記述
622
+
623
+ end
624
+ \end{verbatim}
625
+
626
+ \subsection{オプションの比較}\label{ux30aaux30d7ux30b7ux30e7ux30f3ux306eux6bd4ux8f03}
627
+
628
+ オプションを省略記法から自然言語に近い記法に変更したことでより直感的なコマンド入力が可能になると思われる.
629
+
630
+ \subsubsection{optparse版}\label{optparseux7248}
631
+
632
+ Usage: my\_help {[}options{]}
633
+
634
+ -v, -\/-version show program Version.
635
+
636
+ -l, -\/-list 個別(specific)ヘルプのList表示.
637
+
638
+ -e, -\/-edit NAME NAME(例:test\_help)をEdit編集.
639
+
640
+ -i, -\/-init NAME NAME(例:test\_help)のtemplateを作成.
641
+
642
+ -m, -\/-make make executables for all helps.
643
+
644
+ -c, -\/-clean clean up exe dir.
645
+
646
+ -\/-install\_local install local after edit helps
647
+
648
+ -\/-delete NAME delete NAME help
649
+
650
+ \subsubsection{thor版}\label{thorux7248}
651
+
652
+ Commands:
653
+
654
+ my\_help clean, -\/-clean clean up exe dir.
655
+
656
+ my\_help delete NAME, -\/-delete NAME delete NAME help
657
+
658
+ my\_help edit NAME, -\/-edit NAME edit NAME help(eg test\_help)
659
+
660
+ my\_help help {[}COMMAND{]} Describe available commands or one specific
661
+ command
662
+
663
+ my\_help init NAME, -\/-init NAME initialize NAME help(eg test\_help).
664
+
665
+ my\_help install\_local, -\/-install\_local install local after edit
666
+ helps
667
+
668
+ my\_help list, -\/-list list specific helps
669
+
670
+ my\_help make, -\/-make make executables for all helps.
671
+
672
+ my\_help version, -v show program version
673
+
674
+ \section{総括}\label{ux7dcfux62ec}
675
+
676
+ 今回の研究では,ユーザメモソフトであるmy
677
+ helpのthorによる書き換えを行った.この書き換えによる成果は以下の通りである.
678
+
679
+ \begin{enumerate}
680
+ \def\labelenumi{\arabic{enumi}.}
681
+ \item
682
+ オプションの記法を-(ハイフン)を用いた省略記法からフルワードを用いた自然言語に近い記法に変更した.これにより,初心者でも直感的にオプションを使用することができ,学習コストの削減,学習効率の向上に繋がると考えられる.
683
+ \item
684
+ thorを用いることによってoptparseを用いた時よりもソースコードを短くすることに成功した.
685
+ \end{enumerate}
686
+
687
+ \section{謝辞}\label{ux8b1dux8f9e}
688
+
689
+ 本研究を行うにあたって,終始多大なるご指導,ご鞭撻を頂いた関西学院大学理工学部情報科学科西谷滋人教授に対し,深く御礼申し上げます.また,本研究の進行に伴い,様々な助力,協力をして頂きました西谷研究室の先輩方,同輩達に心から感謝いたします.西谷研究室の益々のご発展,ご多幸を心よりお祈り申し上げます.
690
+
691
+ \section{参考文献}\label{ux53c2ux8003ux6587ux732e}
692
+
693
+ {[}1{]} library optparse,
694
+ https://docs.ruby-lang.org/ja/latest/library/optparse.html accessed
695
+ 2018.2.9.
696
+
697
+ {[}2{]} コマンドライン引数によるオプションに対応する (optparse),
698
+ http://maku77.github.io/ruby/io/optparse.html accessed 2018.2.1.
699
+
700
+ {[}3{]} S.Koichiro, Thorの使い方まとめ,
701
+ https://qiita.com/succi0303/items/32560103190436c9435b accessed
702
+ 2018.2.9.
703
+
704
+ {[}4{]} Thorで簡単にコマンドラインアプリをつくる,
705
+ http://note.hibariya.org/entries/20111025/a0.html 2018.2.9.
706
+
707
+ {[}5{]} David Bryant Copeland, Build Awesome Command-Line Applications
708
+ in Ruby 2, (Pragmatic Bookshelf, 2013), pp.14-5.
709
+
710
+ {[}6{]} David Bryant Copeland, Build Awesome Command-Line Applications
711
+ in Ruby 2, (Pragmatic Bookshelf, 2013), p.16.
712
+
713
+
714
+ % Add a bibliography block to the postdoc
715
+
716
+
717
+
718
+ \end{document}