hikiutils 0.2.3.6 → 0.2.3.7

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/hikiutils.gemspec~ +43 -0
  3. data/hikiutils_bob/Rakefile +78 -48
  4. data/hikiutils_bob/figs/hikiutils_bob.pdf +0 -0
  5. data/hikiutils_bob/hikiutils_bob.hiki +4 -2
  6. data/hikiutils_bob/latex_dir/hikiutils_bob.log +13 -15
  7. data/hikiutils_bob/latex_dir/hikiutils_bob.pdf +0 -0
  8. data/hikiutils_bob/latex_dir/hikiutils_bob.synctex.gz +0 -0
  9. data/hikiutils_bob/latex_dir/hikiutils_bob.tex +3 -0
  10. data/hikiutils_bob/latex_dir/hikiutils_bob.toc +1 -1
  11. data/hikiutils_bob/latex_dir/latex_all).aux +21 -0
  12. data/hikiutils_bob/latex_dir/latex_all.tex +1 -3
  13. data/hikiutils_bob/latex_dir/sync).aux +21 -0
  14. data/hikiutils_bob/latex_dir/sync.aux +1 -1
  15. data/hikiutils_bob/latex_dir/sync.log +81 -66
  16. data/hikiutils_bob/latex_dir/sync.pdf +0 -0
  17. data/hikiutils_bob/latex_dir/sync.synctex.gz +0 -0
  18. data/hikiutils_bob/latex_dir/sync.tex +3 -3
  19. data/hikiutils_bob/latex_dir/sync.toc +17 -0
  20. data/hikiutils_bob/sync.hiki +5 -3
  21. data/hikiutils_yamane/Rakefile +62 -23
  22. data/hikiutils_yamane/clidescription.hiki +35 -0
  23. data/hikiutils_yamane/code.hiki +285 -0
  24. data/hikiutils_yamane/compare.hiki +309 -0
  25. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.001.jpg +0 -0
  26. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.002.jpg +0 -0
  27. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.003.jpg +0 -0
  28. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.004.jpg +0 -0
  29. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.005.jpg +0 -0
  30. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.006.jpg +0 -0
  31. data/hikiutils_yamane/figs/hikiutils_yamane_09_copy.007.jpg +0 -0
  32. data/hikiutils_yamane/hikiutils_yamane.hiki +15 -23
  33. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.001.jpg +0 -0
  34. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.002.jpg +0 -0
  35. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.003.jpg +0 -0
  36. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.004.jpg +0 -0
  37. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.005.jpg +0 -0
  38. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.006.jpg +0 -0
  39. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/222/343/202/232/343/203/274.007.jpg +0 -0
  40. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.001.jpg +0 -0
  41. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.002.jpg +0 -0
  42. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.003.jpg +0 -0
  43. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.004.jpg +0 -0
  44. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.005.jpg +0 -0
  45. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.006.jpg +0 -0
  46. data/hikiutils_yamane/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274/hikiutils_yamane_09 /343/201/256/343/202/263/343/203/224/343/203/274.007.jpg +0 -0
  47. data/hikiutils_yamane/hikiutils_yamane_09.key +0 -0
  48. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
  49. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
  50. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_familychineseoahu_en_00317_2040x1360-96.jpeg +0 -0
  51. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_familychineseoahu_en_02016_981x654-97.jpeg +0 -0
  52. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_familychineseoahu_en_02390_2880x1921-94.jpeg +0 -0
  53. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/110809_familychineseoahu_en_02390_2880x1921-small-95.jpg +0 -0
  54. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt0@2x-102.jpg +0 -0
  55. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt10@2x-112.jpg +0 -0
  56. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt1@2x-103.jpg +0 -0
  57. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt2@2x-104.jpg +0 -0
  58. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt3@2x-105.jpg +0 -0
  59. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt4@2x-106.jpg +0 -0
  60. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt5@2x-107.jpg +0 -0
  61. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt6@2x-108.jpg +0 -0
  62. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt7@2x-109.jpg +0 -0
  63. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt8@2x-110.jpg +0 -0
  64. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/mt9@2x-111.jpg +0 -0
  65. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/pasted-image-100.tiff +0 -0
  66. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/pasted-image-98.tiff +0 -0
  67. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/pasted-image-small-101.png +0 -0
  68. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/pasted-image-small-99.png +0 -0
  69. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st0-113.jpg +0 -0
  70. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st1-114.jpg +0 -0
  71. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st2-115.jpg +0 -0
  72. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st3-116.jpg +0 -0
  73. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st4-117.jpg +0 -0
  74. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st5-118.jpg +0 -0
  75. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/st6-119.jpg +0 -0
  76. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Data/tile_paper_medgray-93.jpg +0 -0
  77. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Index.zip +0 -0
  78. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Metadata/BuildVersionHistory.plist +8 -0
  79. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Metadata/DocumentIdentifier +1 -0
  80. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/Metadata/Properties.plist +0 -0
  81. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/preview-micro.jpg +0 -0
  82. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/preview-web.jpg +0 -0
  83. data/hikiutils_yamane/hikiutils_yamane_09_copy.key/preview.jpg +0 -0
  84. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.001.jpg +0 -0
  85. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.002.jpg +0 -0
  86. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.003.jpg +0 -0
  87. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.004.jpg +0 -0
  88. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.005.jpg +0 -0
  89. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.006.jpg +0 -0
  90. data/hikiutils_yamane/hikiutils_yamane_09_copy/hikiutils_yamane_09_copy.007.jpg +0 -0
  91. data/hikiutils_yamane/latex_dir/abstract.aux +2 -2
  92. data/hikiutils_yamane/latex_dir/clidescription.aux +25 -0
  93. data/hikiutils_yamane/latex_dir/clidescription.tex +42 -0
  94. data/hikiutils_yamane/latex_dir/code.aux +41 -0
  95. data/hikiutils_yamane/latex_dir/code.tex +319 -0
  96. data/hikiutils_yamane/latex_dir/compare.aux +40 -0
  97. data/hikiutils_yamane/latex_dir/compare.tex +351 -0
  98. data/hikiutils_yamane/latex_dir/head.tex +1 -0
  99. data/hikiutils_yamane/latex_dir/hikiutils_yamane.aux +8 -0
  100. data/hikiutils_yamane/latex_dir/hikiutils_yamane.log +159 -63
  101. data/hikiutils_yamane/latex_dir/hikiutils_yamane.pdf +0 -0
  102. data/hikiutils_yamane/latex_dir/hikiutils_yamane.synctex.gz +0 -0
  103. data/hikiutils_yamane/latex_dir/hikiutils_yamane.tex +16 -10
  104. data/hikiutils_yamane/latex_dir/hikiutils_yamane.toc +48 -20
  105. data/hikiutils_yamane/latex_dir/introduction.aux +7 -7
  106. data/hikiutils_yamane/latex_dir/purpose.aux +25 -0
  107. data/hikiutils_yamane/latex_dir/purpose.tex +21 -0
  108. data/hikiutils_yamane/latex_dir/results.aux +22 -31
  109. data/hikiutils_yamane/latex_dir/results.tex +100 -318
  110. data/hikiutils_yamane/mi +0 -0
  111. data/hikiutils_yamane/purpose.hiki +18 -0
  112. data/hikiutils_yamane/results.hiki +11 -277
  113. data/lib/hikiutils/version.rb +1 -1
  114. data/lib/templates/Rakefile_hiki_sync +56 -20
  115. data/lib/templates/head.tex +1 -0
  116. metadata +84 -3
  117. data/hikiutils_yamane/hikiutils_yamane.key~11b9dba1272d2104b420497d11c6eda206ace6c2 +0 -0
@@ -43,20 +43,26 @@
43
43
  \date{\vspace{3cm} 2017年 3月\\
44
44
  \vspace{3cm} 指導教員  西谷 滋人 教授}
45
45
  \maketitle
46
+ \setcounter{tocdepth}{6}
46
47
  \tableofcontents
47
48
 
48
- \title{コマンドラインツール作成ライブラリThorによるhikiutilsの書き換え}
49
- \author{関西学院大学理工学部情報科学科 27013554 山根亮太}
50
- \date{}
51
- \maketitle
52
49
  \tableofcontents
53
50
  \include{abstract}
51
+ \section{序論}
54
52
  \include{introduction}
53
+ \include{purpose}
54
+ \section{方法}
55
+ \section{結果}
55
56
  \include{results}
56
- [1] 「hiki」,hikiwiki.org/ja/about.html ,2017/1/30 アクセス.\verb|{{br}}|
57
- [2] 「hikiutils」,\verb|https://rubygems.org/gems/hikiutils| ,2017/1/30 アクセス.\verb|{{br}}|
58
- [3] 「The Ruby Toolbox」, CLI Option Parsers,\verb|https://www.ruby-toolbox.com/categories/CLI_Option_Parsers| ,2017/1/30 アクセス.\verb|{{br}}|
59
- [4] 「Thorの使い方まとめ」, \verb|http://qiita.com/succi0303/items/32560103190436c9435b| ,2017/1/30 アクセス.\verb|{{br}}|
60
- [5] 「15.5. optparse - コマンドラインオプション解析器」, \verb|http://docs.python.jp/2/library/optparse.html| ,2017/1/30 アクセス.\verb|{{br}}|
61
- [6] 「library optparse」, \verb|https://docs.ruby-lang.org/ja/latest/library/optparse.html| ,2017/1/30 アクセス.\verb|{{br}}|
57
+ \include{compare}
58
+ \include{clidescription}
59
+ \include{code}
60
+ \section{参考文献}
61
+ [1-1] hikidoc, \verb|https://rubygems.org/gems/hikidoc/versions/0.1.0,| \verb|https://github.com/hiki/hikidoc,2017/1/30| アクセス.
62
+
63
+ [1-2] 「Thorの使い方まとめ」, \verb|http://qiita.com/succi0303/items/32560103190436c9435b| ,2017/1/30 アクセス.
64
+
65
+ [1-3] 「15.5. optparse - コマンドラインオプション解析器」, \verb|http://docs.python.jp/2/library/optparse.html| ,2017/1/30 アクセス.
66
+
67
+ [1-4] 「library optparse」, \verb|https://docs.ruby-lang.org/ja/latest/library/optparse.html| ,2017/1/30 アクセス.
62
68
  \end{document}
@@ -1,20 +1,48 @@
1
- \contentsline {section}{\numberline {1}概要}{3}
2
- \contentsline {section}{\numberline {2}序論}{4}
3
- \contentsline {subsection}{\numberline {2.1}目的}{4}
4
- \contentsline {subsection}{\numberline {2.2}既存システムの背景}{4}
5
- \contentsline {subsubsection}{\numberline {2.2.1}hiki}{4}
6
- \contentsline {subsubsection}{\numberline {2.2.2}hikiutils}{4}
7
- \contentsline {section}{\numberline {3}結果}{6}
8
- \contentsline {subsection}{\numberline {3.1}開発の結果}{6}
9
- \contentsline {subsection}{\numberline {3.2}thorとoptparseのコードの比較}{7}
10
- \contentsline {subsubsection}{\numberline {3.2.1}Thorとは}{7}
11
- \contentsline {paragraph}{Thorの基本的な流れ}{7}
12
- \contentsline {subsubsection}{\numberline {3.2.2}optparseとは}{7}
13
- \contentsline {paragraph}{optparseの基本的な流れ}{7}
14
- \contentsline {subsubsection}{\numberline {3.2.3}コードの解説}{7}
15
- \contentsline {paragraph}{Thorの定義}{7}
16
- \contentsline {paragraph}{実際のコード}{8}
17
- \contentsline {paragraph}{hikiutilsの実行}{9}
18
- \contentsline {paragraph}{実際のコード}{10}
19
- \contentsline {paragraph}{コマンドの表示と実行}{13}
20
- \contentsline {paragraph}{実際のコード}{14}
1
+ \contentsline {section}{\numberline {1}概要}{4}
2
+ \contentsline {section}{\numberline {2}序論}{5}
3
+ \contentsline {section}{\numberline {3}序論}{6}
4
+ \contentsline {subsection}{\numberline {3.1}目的}{6}
5
+ \contentsline {subsection}{\numberline {3.2}既存システムの背景}{6}
6
+ \contentsline {subsubsection}{\numberline {3.2.1}hiki}{6}
7
+ \contentsline {subsubsection}{\numberline {3.2.2}hikiutils}{6}
8
+ \contentsline {subsubsection}{\numberline {3.2.3}目的}{8}
9
+ \contentsline {subsubsection}{\numberline {3.2.4}既存システムの説明}{8}
10
+ \contentsline {section}{\numberline {4}方法}{10}
11
+ \contentsline {section}{\numberline {5}結果}{10}
12
+ \contentsline {subsection}{\numberline {5.1}結果}{11}
13
+ \contentsline {subsubsection}{\numberline {5.1.1}コマンド名の検討}{11}
14
+ \contentsline {paragraph}{コマンドの命名原則}{11}
15
+ \contentsline {paragraph}{hikiutilsがあらかじめ想定している利用形態}{11}
16
+ \contentsline {paragraph}{コメンド名と振る舞いの詳細}{13}
17
+ \contentsline {paragraph}{open FILE}{14}
18
+ \contentsline {paragraph}{ls [FILE]}{14}
19
+ \contentsline {paragraph}{rsync}{14}
20
+ \contentsline {paragraph}{touch FILE}{14}
21
+ \contentsline {paragraph}{pwd}{14}
22
+ \contentsline {paragraph}{cd VAL}{14}
23
+ \contentsline {subsubsection}{\numberline {5.1.2}thor と optparse のコードの比較}{15}
24
+ \contentsline {paragraph}{Thorとoptparseとは}{15}
25
+ \contentsline {paragraph}{Thorとは}{15}
26
+ \contentsline {paragraph}{optparseとは}{15}
27
+ \contentsline {paragraph}{コードの解説}{16}
28
+ \contentsline {paragraph}{Thorの定義}{16}
29
+ \contentsline {paragraph}{実際のコード}{16}
30
+ \contentsline {paragraph}{hikiutilsの実行}{17}
31
+ \contentsline {paragraph}{実際のコード}{18}
32
+ \contentsline {paragraph}{コマンドの表示と処理}{21}
33
+ \contentsline {paragraph}{実際のコード}{22}
34
+ \contentsline {subsubsection}{\numberline {5.1.3}CLIのコード}{26}
35
+ \contentsline {paragraph}{CLIの解説}{26}
36
+ \contentsline {paragraph}{Thor}{26}
37
+ \contentsline {paragraph}{optparse}{26}
38
+ \contentsline {subsubsection}{\numberline {5.1.4}Thorの初期化}{28}
39
+ \contentsline {paragraph}{コード}{28}
40
+ \contentsline {subsubsection}{\numberline {5.1.5}コマンド表示と処理}{29}
41
+ \contentsline {paragraph}{Thor}{29}
42
+ \contentsline {paragraph}{optparse}{30}
43
+ \contentsline {paragraph}{コード}{31}
44
+ \contentsline {subsubsection}{\numberline {5.1.6}CLIの実行}{34}
45
+ \contentsline {paragraph}{Thor}{34}
46
+ \contentsline {paragraph}{optparse}{35}
47
+ \contentsline {paragraph}{コード}{35}
48
+ \contentsline {section}{\numberline {6}参考文献}{39}
@@ -1,11 +1,11 @@
1
1
  \relax
2
- \@writefile{toc}{\contentsline {section}{\numberline {2}序論}{4}}
3
- \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}目的}{4}}
4
- \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}既存システムの背景}{4}}
5
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}hiki}{4}}
6
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}hikiutils}{4}}
2
+ \@writefile{toc}{\contentsline {section}{\numberline {3}序論}{6}}
3
+ \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}目的}{6}}
4
+ \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}既存システムの背景}{6}}
5
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}hiki}{6}}
6
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}hikiutils}{6}}
7
7
  \@setckpt{introduction}{
8
- \setcounter{page}{6}
8
+ \setcounter{page}{8}
9
9
  \setcounter{equation}{0}
10
10
  \setcounter{enumi}{0}
11
11
  \setcounter{enumii}{0}
@@ -14,7 +14,7 @@
14
14
  \setcounter{footnote}{0}
15
15
  \setcounter{mpfootnote}{0}
16
16
  \setcounter{part}{0}
17
- \setcounter{section}{2}
17
+ \setcounter{section}{3}
18
18
  \setcounter{subsection}{2}
19
19
  \setcounter{subsubsection}{2}
20
20
  \setcounter{paragraph}{0}
@@ -0,0 +1,25 @@
1
+ \relax
2
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}目的}{8}}
3
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.4}既存システムの説明}{8}}
4
+ \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces hiki web systemとhiki systemの対応関係.}}{8}}
5
+ \newlabel{default}{{1}{8}}
6
+ \@setckpt{purpose}{
7
+ \setcounter{page}{10}
8
+ \setcounter{equation}{0}
9
+ \setcounter{enumi}{0}
10
+ \setcounter{enumii}{0}
11
+ \setcounter{enumiii}{0}
12
+ \setcounter{enumiv}{0}
13
+ \setcounter{footnote}{0}
14
+ \setcounter{mpfootnote}{0}
15
+ \setcounter{part}{0}
16
+ \setcounter{section}{3}
17
+ \setcounter{subsection}{2}
18
+ \setcounter{subsubsection}{4}
19
+ \setcounter{paragraph}{0}
20
+ \setcounter{subparagraph}{0}
21
+ \setcounter{figure}{1}
22
+ \setcounter{table}{0}
23
+ \setcounter{lstnumber}{1}
24
+ \setcounter{lstlisting}{0}
25
+ }
@@ -0,0 +1,21 @@
1
+ \subsubsection{目的}
2
+ 本研究ではhikiの編集作業をより容易にするためのツールの開発を行った.
3
+ hikiは通常web上で編集を行っているが,GUIとCUIが混在しており,操作に不便な点がある.
4
+ そこで,編集操作が CUI で完結するために開発をされたのが hikiutils である.
5
+ しかし,そのユーザインタフェースにはコマンドが直感的でないという問題点がある.
6
+ そこで,Thorというコマンドラインツール作成ライブラリを用いる.
7
+ optparseというコマンドライン解析ライブラリを使用しているhikiutilsを新たなコマンドライン解析ライブラリを使用することコマンドを書き換え,より直感的なコマンドにして使いやすくする.
8
+
9
+ \subsubsection{既存システムの説明}
10
+ 図に従ってhiki systemの動作概要を説明する.
11
+
12
+ \begin{figure}[htbp]\begin{center}
13
+ \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane_09_copy.001.jpg}
14
+ \caption{hiki web systemとhiki systemの対応関係.}
15
+ \label{default}\end{center}\end{figure}
16
+ hikiは,hiki記法を用いたwiki cloneです.wikiはウォード・カニンガムが作ったwikiwikiwebを源流とするhome page制作を容易にするシステムで,hikiもwikiの基本要求仕様を満足するシステムを提供しています.wikiの特徴であるweb上で編集する機能を提供しています.これを便宜上hiki web systemと呼びます.図にある通り,一般的な表示画面の他に,編集画面が提供されており,ユーザーはこの編集画面からコンテンツを編集することが可能です.リンクやヘッダー,リスト,引用,表,図の表示などの基本テキストフォーマットが用意されています.
17
+
18
+ hiki web systemの実際の基本動作は,hiki.cgiプログラムを介して行われています.こちらを便宜上hiki systemと呼びます.hiki systemは,data/textに置かれた書かれたプレーンテキストをhtmlへ変換します.この変換はhikidoc[1-1]というhikiフォーマットconverterを使っています.また,添付書類はcache/attachに,一度フォーマットしたhtmlはparserに置かれており,それらを参照してhtmlを表示する画面をhiki.cgiは作っています.さらにhiki systemでは検索機能,自動リンク作成などが提供されています
19
+
20
+ 研究室内の内部文書,あるいは外部への宣伝資料,さらにwikipediaのように重要な研究成果の発信などに西谷研ではこのhiki systemを利用しています.初心者にも覚えやすい直感的な操作です.しかし,慣れてくるとテキスト編集や画面更新にいちいちweb画面へ移行せねばならず,編集の思考が停止します.そこで,テキスト編集に優れたeditorとの連携や,terminal上のshell commandと連携しやすいようにhikiutilsというcli(command line interface)を作成して運用しています.このhikiutilsのコマンドオプションの実装をしなおして,より使いやすくすることが本研究の目的です.
21
+
@@ -1,45 +1,36 @@
1
1
  \relax
2
- \@writefile{toc}{\contentsline {section}{\numberline {3}結果}{6}}
3
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}開発の結果}{6}}
4
- \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces }}{6}}
5
- \newlabel{default}{{1}{6}}
6
- \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}thorとoptparseのコードの比較}{7}}
7
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}Thorとは}{7}}
8
- \@writefile{toc}{\contentsline {paragraph}{Thorの基本的な流れ}{7}}
9
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}optparseとは}{7}}
10
- \@writefile{toc}{\contentsline {paragraph}{optparseの基本的な流れ}{7}}
11
- \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}コードの解説}{7}}
12
- \@writefile{toc}{\contentsline {paragraph}{Thorの定義}{7}}
13
- \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces }}{8}}
14
- \newlabel{default}{{1}{8}}
15
- \@writefile{toc}{\contentsline {paragraph}{実際のコード}{8}}
16
- \@writefile{toc}{\contentsline {paragraph}{hikiutilsの実行}{9}}
17
- \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{9}}
18
- \newlabel{default}{{2}{9}}
19
- \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{10}}
20
- \newlabel{default}{{3}{10}}
21
- \@writefile{toc}{\contentsline {paragraph}{実際のコード}{10}}
22
- \@writefile{toc}{\contentsline {paragraph}{コマンドの表示と実行}{13}}
23
- \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces }}{13}}
24
- \newlabel{default}{{4}{13}}
25
- \@writefile{toc}{\contentsline {paragraph}{実際のコード}{14}}
2
+ \@writefile{toc}{\contentsline {subsection}{\numberline {5.1}結果}{11}}
3
+ \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}コマンド名の検討}{11}}
4
+ \@writefile{toc}{\contentsline {paragraph}{コマンドの命名原則}{11}}
5
+ \@writefile{toc}{\contentsline {paragraph}{hikiutilsがあらかじめ想定している利用形態}{11}}
6
+ \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces hikiutilsがあらかじめ想定している利用形態}}{11}}
7
+ \newlabel{default}{{2}{11}}
8
+ \@writefile{toc}{\contentsline {paragraph}{コメンド名と振る舞いの詳細}{13}}
9
+ \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces }}{13}}
10
+ \newlabel{default}{{1}{13}}
11
+ \@writefile{toc}{\contentsline {paragraph}{open FILE}{14}}
12
+ \@writefile{toc}{\contentsline {paragraph}{ls [FILE]}{14}}
13
+ \@writefile{toc}{\contentsline {paragraph}{rsync}{14}}
14
+ \@writefile{toc}{\contentsline {paragraph}{touch FILE}{14}}
15
+ \@writefile{toc}{\contentsline {paragraph}{pwd}{14}}
16
+ \@writefile{toc}{\contentsline {paragraph}{cd VAL}{14}}
26
17
  \@setckpt{results}{
27
- \setcounter{page}{17}
18
+ \setcounter{page}{15}
28
19
  \setcounter{equation}{0}
29
- \setcounter{enumi}{3}
20
+ \setcounter{enumi}{0}
30
21
  \setcounter{enumii}{0}
31
22
  \setcounter{enumiii}{0}
32
23
  \setcounter{enumiv}{0}
33
24
  \setcounter{footnote}{0}
34
25
  \setcounter{mpfootnote}{0}
35
26
  \setcounter{part}{0}
36
- \setcounter{section}{3}
37
- \setcounter{subsection}{2}
38
- \setcounter{subsubsection}{3}
27
+ \setcounter{section}{5}
28
+ \setcounter{subsection}{1}
29
+ \setcounter{subsubsection}{1}
39
30
  \setcounter{paragraph}{0}
40
31
  \setcounter{subparagraph}{0}
41
- \setcounter{figure}{4}
32
+ \setcounter{figure}{2}
42
33
  \setcounter{table}{1}
43
- \setcounter{lstnumber}{61}
34
+ \setcounter{lstnumber}{12}
44
35
  \setcounter{lstlisting}{0}
45
36
  }
@@ -1,26 +1,89 @@
1
- \section{結果}
2
- \subsection{開発の結果}
3
- 開発の結果コマンドを以下のように書き換えることができた
1
+
2
+ \subsection{結果}
3
+ \subsubsection{コマンド名の検討}
4
+ \paragraph{コマンドの命名原則}
5
+ 機能ごとの動作はコマンドのオプションによって指定されます.
6
+ このオプションにどのような名前をつけるかは,どれだけコマンドを覚えやすいかという
7
+ 意味で重要です.コマンドの振る舞いを的確に表す名称をつける必要があります.
8
+
9
+ この振る舞いとしてもっとも受け入れやすいのがshellで用意されているコマンドです.
10
+ pwd, ls, rm, touch, openなどはもっとも直感的に動作がわかるコマンドです.
11
+ hikiutilsの振る舞いを予測できるシェルコマンドと同じ名前でオプションを提供する
12
+ ようにします.
13
+
14
+ \paragraph{hikiutilsがあらかじめ想定している利用形態}
15
+ ここでhikiutilsがあらかじめ想定している利用形態を解説しておきます.
16
+
17
+ \begin{figure}[htbp]\begin{center}
18
+ \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane_09_copy.002.jpg}
19
+ \caption{hikiutilsがあらかじめ想定している利用形態}
20
+ \label{default}\end{center}\end{figure}
21
+ hikiutilsは,
22
+
23
+ \begin{itemize}
24
+ \item local PCとglobal serverとが用意されており,
25
+ \item それらのデータをrsyncで同期する
26
+ \end{itemize}
27
+ ことで動作することを想定しています.これは,ネットに繋がっていないオフラインの状況でも
28
+ テキストなどの編集が可能で,さらに不用意な書き換えを防ぐための機構です.さらに,
29
+ どちらもが何かあった時のバックアップともなって,ミスによる手戻りを防いでいます.
30
+
31
+ これらの設定は,~/.hikircにyaml形式で記述・保存されています.
32
+ \begin{lstlisting}[style=]
33
+ bob% cat ~/.hikirc
34
+ :srcs:
35
+ - :nick_name: new_ist
36
+ :local_dir: "/Users/bob/Sites/new_ist_data/ist_data"
37
+ :local_uri: http://localhost/ist
38
+ :global_dir: nishitani@ist.ksc.kwansei.ac.jp:/home/nishitani/new_ist_data/ist_data
39
+ :global_uri: http://ist.ksc.kwansei.ac.jp/~nishitani/
40
+ - :nick_name: dmz0
41
+ :local_dir: "/Users/bob/Sites/nishitani0/Internal/data"
42
+ :local_uri: http://localhost/~bob/nishitani0/Internal
43
+ :global_dir: bob@dmz0:/Users/bob/Sites/nishitani0/Internal/data
44
+ :global_uri: http://nishitani0.kwansei.ac.jp/~bob/nishitani0/Internal
45
+ \end{lstlisting}
46
+ また,一般的に一人のユーザがいくつものまとまりとしてのlocal-globalペアを
47
+ 保持して管理することが普通です.それぞれにnicke\_nameをつけて管理しています.
48
+ \begin{lstlisting}[style=]
49
+ bob% hiki -s
50
+ hikiutils: provide utilities for helping hiki editing.
51
+ "open -a mi"
52
+ target_no:1
53
+ editor_command:open -a mi
54
+ id | name | local directory | global uri
55
+ ---------------------------------------------------------------------------------
56
+ 0 | new_ist | /Users/bob/Sites/new_ist_data/ist_data | http://ist.ksc.k
57
+ *1 | dmz0 | /Users/bob/Sites/nishitani0/Internal/data | http://nishitani
58
+ 2 | ist | /Users/bob/Sites/hiki-data/data | http://ist.ksc.k
59
+ 3 | new_maple | /Users/bob/Sites/new_ist_data/maple_hiki_data | http://ist.ksc.k
60
+ \end{lstlisting}
61
+ とすると,それらの一覧と,いまtargetにしているnick\_nameディレクリが表示されます.
62
+
63
+ \paragraph{コメンド名と振る舞いの詳細}
64
+ 開発の結果コマンドを以下のように書き換えました.
65
+ 上部に記した,特によく使うコマンドに関しては,shellでよく使われるコマンド名と一致するにようにしました.
4
66
 
5
67
  \begin{table}[htbp]\begin{center}
6
68
  \caption{}
7
69
  \begin{tabular}{llll}
8
70
  \hline
9
- 変更前 &変更後 &コマンド一覧 \\ \hline
71
+ 変更前 &変更後 &動作の解説 \\ \hline
72
+ edit FILE &open &open file \\
73
+ list [FILE] &ls &list files \\
74
+ rsync &rsync &rsync files \\
75
+ update FILE &touch &update file \\
76
+ show &pwd &show nick\_names \\
77
+ target VAL &cd &targetを変える,change directoryとのメタファ \\
78
+ & \\
79
+ move [FILE] &mv &move file \\
80
+ remove [FILE] &rm &remove files \\
10
81
  add & &add sources info \\
11
82
  checkdb & &check database file \\
12
83
  datebase FILE & &read datebase file \\
13
- display FILE &  &display converted hikifile \\
14
- edit FILE &open &open file \\
84
+ display FILE & &display converted hikifile \\
15
85
  euc FILE & &translate file to euc \\
16
86
  help [COMMAND] & &Describe available commands or one specific command \\
17
- list [FILE] &ls &list files \\
18
- move [FILE] &mv| move file \\
19
- remove [FILE] &rm &remove files \\
20
- rsync & &rsync files \\
21
- show & &lsとかぶる. \\
22
- target VAL &cd &set target id \\
23
- update FILE &touch &update file \\
24
87
  version & &show program version \\
25
88
  \hline
26
89
  \end{tabular}
@@ -28,315 +91,34 @@ version & &show program version \\
28
91
  \end{center}\end{table}
29
92
  %for inserting separate lines, use \hline, \cline{2-3} etc.
30
93
 
31
- hikiutilsのコマンドライン解析ツールをoptparseからthorに換えることでコマンドの書き換えを行うことができた.
32
- また,プログラムのコードもoptparseよりthorのほうが短く書け,簡単にコマンドを作成することができた.
94
+ それぞれの意図を動作の解説として記述しています.
33
95
 
34
- \subsection{thorとoptparseのコードの比較}
35
- \subsubsection{Thorとは}
36
- Thorとは,コマンドラインツールの作成を支援するライブラリのことである.
37
- gitやbundlerのようにサブコマンドを含むコマンドラインツールを簡単に作成することができる[4].
96
+ \paragraph{open FILE}
97
+ ファイルを編集のためにeditorでopen.Editorは~/.hikircに
98
+ \begin{quote}\begin{verbatim}
99
+ :editor_command: open -a mi
100
+ \end{verbatim}\end{quote}
101
+ として保存されている.open -a miをemacsなどに適宜変更して使用.
38
102
 
39
- \paragraph{Thorの基本的な流れ}
40
- \begin{enumerate}
41
- \item Thorを継承したクラスのパブリックメソッドがコマンドになる
42
- \item クラス.start(ARGV)でコマンドラインの処理をスタートする
43
- \end{enumerate}
44
- という流れである[4].
103
+ \paragraph{ls [FILE]}
104
+ local\_dirにあるファイル名を[FILE*]として表示.例えば,hikiutils\_yamane以下の拡張子が
105
+ ついたファイルを表示.hikiシステムではtextディレクトリーは階層構造を取ることができない.
106
+ 西谷研ではdirectoryの代わりにスネーク表記で階層構造を表している.
45
107
 
46
- \subsubsection{optparseとは}
47
- optparseモジュールとは,getoptよりも簡便で,柔軟性に富み,かつ強力なコマンドライン解析ライブラリである.
48
- optparseでは,より宣言的なスタイルのコマンドライン解析手法,すなわちOptionParserのインスタンスでコマンドラインを解析するという手法をとっている.
49
- これを使うと,GNU/POSIX構文でオプションを指定できるだけでなく,使用法やヘルプメッセージの生成も行える[5].
108
+ \paragraph{rsync}
109
+ local\_dirの内容をglobal\_dirにrsyncする.逆方向は同期に誤差が生じたり,permissionが
110
+ おかしくなるので,現在のところ一方向の同期のみとしている.したがって,作業手順としては
111
+ テキストの変更はlocal\_dirで読み行うようにしている.
50
112
 
51
- \paragraph{optparseの基本的な流れ}
52
- \begin{enumerate}
53
- \item OptionParserオブジェクトoptを生成する
54
- \item オプションを取り扱うブロックをoptに登録する
55
- \item opt.parse(ARGV)でコマンドラインを実際にparseする
56
- \end{enumerate}
57
- という流れである[6].
113
+ \paragraph{touch FILE}
114
+ loccal\_dirで書き換えたFILEの内容をlocal\_uriに反映させ,ブラウザで表示.シェルコマンドの
115
+ touchによって,変更時間を現在に変え,最新状態とするのに似せてコマンド名をtouchとしている.
58
116
 
59
- \subsubsection{コードの解説}
60
- \paragraph{Thorの定義}
61
- \begin{figure}[htbp]\begin{center}
62
- \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane.003.jpg}
63
- \caption{}
64
- \label{default}\end{center}\end{figure}
65
- \begin{enumerate}
66
- \item Hikithor::CLI.start(ARGV)が呼ばれる
67
- \item initializeメソッドが呼ばれる
68
- \item これではThorのinitializeメソッドが呼ばれない
69
- \item superを書くことでThorのinitializeメソッドが呼ばれる
70
- \end{enumerate}
71
- optparseではrequireでoptparseを呼ぶだけでいいが,ThorではrequireでThorを呼びCLIクラスで継承しinitializeメソッドにsuperを書くことでThorのinitializeを呼ぶ必要がある.
117
+ \paragraph{pwd}
118
+ nick\_nameの一覧とtargetを表示,current targetをcurrent dirとみなして,
119
+ コマンド名をpwdとした.
72
120
 
73
- \paragraph{実際のコード}\begin{lstlisting}[style=customRuby]
74
- # -*- coding: utf-8 -*-
75
- require 'thor'
76
- require 'kconv'
77
- require 'hikidoc'
78
- require 'erb'
79
- require "hikiutils/version"
80
- require "hikiutils/tmarshal"
81
- require "hikiutils/infodb"
82
- require 'systemu'
83
- require 'fileutils'
84
- require 'yaml'
85
- require 'pp'
121
+ \paragraph{cd VAL}
122
+ targetを変える,change directoryとのメタファ.ただし,いまのところnick\_nameでは
123
+ 対応しておらず,nick\_nameの番号をVAL入力することで変更する.
86
124
 
87
- module Hikithor
88
-
89
- DATA_FILE=File.join(ENV['HOME'],'.hikirc')
90
- attr_accessor :src, :target, :editor_command, :browser, :data_name, :l_dir
91
-
92
- class CLI < Thor
93
- def initialize(*args)
94
- super
95
- @data_name=['nick_name','local_dir','local_uri','global_dir','global_uri']
96
- data_path = File.join(ENV['HOME'], '.hikirc')
97
- DataFiles.prepare(data_path)
98
-
99
- file = File.open(DATA_FILE,'r')
100
- @src = YAML.load(file.read)
101
- file.close
102
- @target = @src[:target]
103
- @l_dir=@src[:srcs][@target][:local_dir]
104
- browser = @src[:browser]
105
- @browser = (browser==nil) ? 'firefox' : browser
106
- p editor_command = @src[:editor_command]
107
- @editor_command = (editor_command==nil) ? 'open -a mi' : editor_command
108
- end
109
- \end{lstlisting}
110
- \paragraph{hikiutilsの実行}
111
- \begin{itemize}
112
- \item Thor
113
- \end{itemize}
114
- \begin{figure}[htbp]\begin{center}
115
- \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane.004.jpg}
116
- \caption{}
117
- \label{default}\end{center}\end{figure}
118
- \begin{enumerate}
119
- \item hiki\_thorのHikithor::CLI.start(ARGV)でhikiutils\_thor.rbのCLIクラスを呼ぶ\verb|{{br}}|
120
- \item hikiutils\_thor.rbのCLIクラスのメソッドを順に実行していく\verb|{{br}}|
121
- \end{enumerate}
122
- \begin{itemize}
123
- \item optparse
124
- \end{itemize}
125
- \begin{figure}[htbp]\begin{center}
126
- \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane.001.jpg}
127
- \caption{}
128
- \label{default}\end{center}\end{figure}
129
- \begin{enumerate}
130
- \item HikiのHikiUtils::Command.run(ARGV)でhikiutils.rbのrunメソッドを呼ぶ
131
- \item new(argv).executeでexecuteメソッドが実行される
132
- \end{enumerate}
133
- このようにoptparseでは実行を行うためのメソッドが必要であるが,Thorではクラスのメソッドを順に実行していくため
134
- runメソッドとexecuteメソッドは必要ない.
135
-
136
- \paragraph{実際のコード}
137
- \begin{itemize}
138
- \item Thor
139
- \end{itemize}\begin{lstlisting}[style=customRuby]
140
- #!/usr/bin/env ruby
141
-
142
- require "hikiutils_thor"
143
-
144
- Hikithor::CLI.start(ARGV)
145
- \end{lstlisting}\begin{lstlisting}[style=customRuby]
146
- # -*- coding: utf-8 -*-
147
- require 'thor'
148
- require 'kconv'
149
- require 'hikidoc'
150
- require 'erb'
151
- require "hikiutils/version"
152
- require "hikiutils/tmarshal"
153
- require "hikiutils/infodb"
154
- require 'systemu'
155
- require 'fileutils'
156
- require 'yaml'
157
- require 'pp'
158
-
159
- module Hikithor
160
-
161
- DATA_FILE=File.join(ENV['HOME'],'.hikirc')
162
- attr_accessor :src, :target, :editor_command, :browser, :data_name, :l_dir
163
-
164
- class CLI < Thor
165
- def initialize(*args)
166
- super
167
- @data_name=['nick_name','local_dir','local_uri','global_dir','global_uri']
168
- data_path = File.join(ENV['HOME'], '.hikirc')
169
- DataFiles.prepare(data_path)
170
-
171
- file = File.open(DATA_FILE,'r')
172
- @src = YAML.load(file.read)
173
- file.close
174
- @target = @src[:target]
175
- @l_dir=@src[:srcs][@target][:local_dir]
176
- browser = @src[:browser]
177
- @browser = (browser==nil) ? 'firefox' : browser
178
-
179
- \end{lstlisting}
180
- \begin{itemize}
181
- \item optparse
182
- \end{itemize}\begin{lstlisting}[style=customRuby]
183
- #!/usr/bin/env ruby
184
-
185
- require "hikiutils"
186
-
187
- HikiUtils::Command.run(ARGV)
188
- \end{lstlisting}\begin{lstlisting}[style=customRuby]
189
- def self.run(argv=[])
190
- print "hikiutils: provide utilities for helping hiki editing.\n"
191
- new(argv).execute
192
- end
193
-
194
- def execute
195
- @argv << '--help' if @argv.size==0
196
- command_parser = OptionParser.new do |opt|
197
- opt.on('-v', '--version','show program Version.') { |v|
198
- opt.version = HikiUtils::VERSION
199
- puts opt.ver
200
- }
201
- opt.on('-s', '--show','show sources') {show_sources}
202
- opt.on('-a', '--add','add sources info') {add_sources }
203
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val) }
204
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
205
- opt.on('-l', '--list [FILE]','list files') {|file| list_files(file) }
206
- opt.on('-u', '--update FILE','update file') {|file| update_file(file) }
207
- opt.on('-r', '--rsync','rsync files') {rsync_files}
208
- opt.on('--database FILE','read database file') {|file| db_file(file)}
209
- opt.on('--display FILE','display converted hikifile') {|file| display(f\
210
- ile)}
211
- opt.on('-c', '--checkdb','check database file') {check_db}
212
- opt.on('--remove FILE','remove file') {|file| remove_file(file)}
213
- opt.on('--move FILES','move file1,file2',Array) {|files| move_file(file\
214
- s)}
215
- opt.on('--euc FILE','translate file to euc') {|file| euc_file(file) }
216
- opt.on('--initialize','initialize source directory') {dir_init() }
217
- end
218
- begin
219
- command_parser.parse!(@argv)
220
- rescue=> eval
221
- p eval
222
- end
223
- dump_sources
224
- exit
225
- end
226
- \end{lstlisting}
227
- \paragraph{コマンドの表示と実行}
228
- \begin{itemize}
229
- \item Thor
230
- \end{itemize}
231
- \begin{figure}[htbp]\begin{center}
232
- \includegraphics[width=6cm,bb=0 0 442 500]{../figs/./hikiutils_yamane.002.jpg}
233
- \caption{}
234
- \label{default}\end{center}\end{figure}
235
- \begin{enumerate}
236
- \item コマンド名,コマンドの説明を一覧に表示させる
237
- \item パブリックメソッドのコマンドを別のコマンド名でも実行できるようにする
238
- \item コマンドの命令の実行コード
239
- \end{enumerate}
240
- \begin{itemize}
241
- \item optparse
242
- \end{itemize}
243
- \verb|{{attach_view(hikiutils_yamane.005.jpg)}}|
244
- よって,optparseではOptionParserオブジェクトoptを生成を行い,コマンドをoptに登録して一覧に表示するメソッドとそれぞれコマンドの実行処理が書かれたメソッドがあるが,
245
- thorではそれぞれのdescで一覧を表示しmapとパブリックメソッドでコマンドの実行処理を行うためコードが短くなる.
246
-
247
- \paragraph{実際のコード}
248
- \begin{itemize}
249
- \item Thor
250
- \end{itemize}\begin{lstlisting}[style=customRuby]
251
- desc 'show,--show', 'show sources'
252
- map "--show" => "show"
253
- def show
254
- printf("target_no:%i\n",@src[:target])
255
- printf("editor_command:%s\n",@src[:editor_command])
256
- @i_size,@n_size,@l_size,@g_size=3,5,30,15 #i,g_size are fixed
257
- n_l,l_l=0,0
258
- @src[:srcs].each_with_index{|src,i|
259
- n_l =(n_l= src[:nick_name].length)>@n_size? n_l:@n_size
260
- l_l =(l_l= src[:local_dir].length)>@l_size? l_l:@l_size
261
- }
262
- @n_size,@l_size=n_l,l_l
263
- command = Command.new
264
- header = command.display_format('id','name','local directory','global uri',@i_size,@n_size,@l_size,@g_size)
265
-
266
- puts header
267
- puts '-' * header.size
268
-
269
- @src[:srcs].each_with_index{|src,i|
270
- target = i==@src[:target] ? '*':' '
271
- id = target+i.to_s
272
- name=src[:nick_name]
273
- local=src[:local_dir]
274
- global=src[:global_uri]
275
- puts command.display_format(id,name,local,global,@i_size,@n_size,@l_size,@g_size)
276
- }
277
- end
278
- \end{lstlisting}
279
- \begin{itemize}
280
- \item optparse
281
- \end{itemize}\begin{lstlisting}[style=customRuby]
282
- def execute
283
- @argv << '--help' if @argv.size==0
284
- command_parser = OptionParser.new do |opt|
285
- opt.on('-v', '--version','show program Version.') { |v|
286
- opt.version = HikiUtils::VERSION
287
- puts opt.ver
288
- }
289
- opt.on('-s', '--show','show sources') {show_sources}
290
- opt.on('-a', '--add','add sources info') {add_sources }
291
- opt.on('-t', '--target VAL','set target id') {|val| set_target(val)}
292
- opt.on('-e', '--edit FILE','open file') {|file| edit_file(file) }
293
- opt.on('-l', '--list [FILE]','list files') {|file| list_files(file)}
294
- opt.on('-u', '--update FILE','update file') {|file| update_file(file) }
295
- opt.on('-r', '--rsync','rsync files') {rsync_files}
296
- opt.on('--database FILE','read database file') {|file| db_file(file)}
297
- opt.on('--display FILE','display converted hikifile') {|file| display(file)}
298
- opt.on('-c', '--checkdb','check database file') {check_db}
299
- opt.on('--remove FILE','remove file') {|file| remove_file(file)}
300
- opt.on('--move FILES','move file1,file2',Array) {|files| move_file(files)}
301
- opt.on('--euc FILE','translate file to euc') {|file| euc_file(file)}
302
- opt.on('--initialize','initialize source directory') {dir_init() }
303
- end
304
- begin
305
- command_parser.parse!(@argv)
306
- rescue=> eval
307
- p eval
308
- end
309
- dump_sources
310
- exit
311
- end
312
-
313
- def show_sources()
314
- printf("target_no:%i\n",@src[:target])
315
- printf("editor_command:%s\n",@src[:editor_command])
316
- check_display_size()
317
- header = display_format('id','name','local directory','global uri')
318
-
319
- puts header
320
- puts '-' * header.size
321
-
322
- @src[:srcs].each_with_index{|src,i|
323
- target = i==@src[:target] ? '*':' '
324
- id = target+i.to_s
325
- name=src[:nick_name]
326
- local=src[:local_dir]
327
- global=src[:global_uri]
328
- puts display_format(id,name,local,global)
329
- }
330
- end
331
-
332
- def add_sources
333
- cont = {}
334
- @data_name.each{|name|
335
- printf("%s ? ", name)
336
- tmp = gets.chomp
337
- cont[name.to_sym] = tmp
338
- }
339
- @src[:srcs] << cont
340
- show_sources
341
- end
342
- \end{lstlisting}