my_help 0.4.5 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.dockerignore +2 -0
- data/.gitignore +29 -2
- data/.ipynb_checkpoints/README-checkpoint.ipynb +511 -0
- data/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
- data/.ruby-version +1 -0
- data/Dockerfile.template +13 -0
- data/README.md +341 -256
- data/README.org +480 -0
- data/Rakefile +9 -31
- data/docs/.ipynb_checkpoints/README-checkpoint.ipynb +112 -0
- data/docs/.ipynb_checkpoints/Untitled-checkpoint.ipynb +219 -0
- data/docs/README.ipynb +112 -0
- data/docs/bob/README_en.ipynb +219 -0
- data/docs/bob/diff_against_org_mode.ipynb +119 -0
- data/docs/bob/emacs_help.ipynb +133 -0
- data/docs/bob/template_help.ipynb +136 -0
- data/{my_help_nasu → docs/nasu}/.gitignore +0 -0
- data/{my_help_nasu → docs/nasu}/Rakefile +91 -20
- data/docs/nasu/abstract.hiki +17 -0
- data/{my_help_nasu → docs/nasu}/code.hiki +25 -21
- data/docs/nasu/discussion.hiki +38 -0
- data/docs/nasu/features/add.feature +12 -0
- data/docs/nasu/features/all_help.feature +10 -0
- data/docs/nasu/features/backup_list.feature +10 -0
- data/docs/nasu/features/edit_help.feature +9 -0
- data/docs/nasu/features/my_todo.feature +16 -0
- data/docs/nasu/features/remove.feature +10 -0
- data/docs/nasu/features/sample_e.feature +6 -0
- data/docs/nasu/features/step_definitions/add_spec.rb +18 -0
- data/docs/nasu/features/step_definitions/all_help_spec.rb +18 -0
- data/docs/nasu/features/step_definitions/backup_list_spec.rb +18 -0
- data/docs/nasu/features/step_definitions/edit_help_spec.rb +19 -0
- data/docs/nasu/features/step_definitions/my_todo_spec.rb +25 -0
- data/docs/nasu/features/step_definitions/remove_spec.rb +18 -0
- data/docs/nasu/features/step_definitions/store_spec.rb +18 -0
- data/docs/nasu/features/step_definitions/to_hiki_spec.rb +18 -0
- data/docs/nasu/features/store.feature +10 -0
- data/docs/nasu/features/support/env.rb +2 -0
- data/docs/nasu/features/test.feature +10 -0
- data/docs/nasu/features/to_hiki.feature +10 -0
- data/{my_help_nasu → docs/nasu}/features.hiki +80 -70
- data/docs/nasu/figs/cucumber01.001.jpg +0 -0
- data/docs/nasu/figs/cucumber02.001.jpg +0 -0
- data/docs/nasu/figs/cucumber03.001.jpg +0 -0
- data/docs/nasu/figs/cucumber04.001.jpg +0 -0
- data/docs/nasu/figs/cucumber05.001.jpg +0 -0
- data/docs/nasu/figs/cucumber1.jpg +0 -0
- data/docs/nasu/figs/cucumber2.jpg +0 -0
- data/docs/nasu/figs/cucumber3.jpg +0 -0
- data/docs/nasu/figs/cucumber4.jpg +0 -0
- data/docs/nasu/figs/my_help_nasu.001.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.002.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.003.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.004.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.005.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.006.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.007.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.008.jpeg +0 -0
- data/docs/nasu/figs/my_help_nasu.pdf +0 -0
- data/docs/nasu/figs/my_help_nasu.png +0 -0
- data/docs/nasu/figs/my_help_nasu1.001.jpg +0 -0
- data/docs/nasu/figs/rspec01.001.jpg +0 -0
- data/docs/nasu/figs/rspec1.jpg +0 -0
- data/docs/nasu/figs/rspec2.jpg +0 -0
- data/{my_help_nasu → docs/nasu}/head2.tex +0 -0
- data/{my_help_nasu → docs/nasu}/hiki_help.yml +0 -0
- data/{my_help_nasu → docs/nasu}/introduction.hiki +15 -16
- data/{my_help_nasu → docs/nasu}/key_bind_mi +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/pasted-image-89.png +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/pasted-image-small-90.png +0 -0
- data/docs/nasu/keynote/cucumber01.key/Data/st0-104.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/Index.zip +0 -0
- data/docs/nasu/keynote/cucumber01.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/cucumber01.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/cucumber01.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/cucumber01.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/cucumber01.key/preview.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/pasted-image-89.png +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/pasted-image-small-90.png +0 -0
- data/docs/nasu/keynote/cucumber02.key/Data/st0-96.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/Index.zip +0 -0
- data/docs/nasu/keynote/cucumber02.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/cucumber02.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/cucumber02.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/cucumber02.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/cucumber02.key/preview.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/pasted-image-89.png +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/pasted-image-small-90.png +0 -0
- data/docs/nasu/keynote/cucumber03.key/Data/st0-100.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/Index.zip +0 -0
- data/docs/nasu/keynote/cucumber03.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/cucumber03.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/cucumber03.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/cucumber03.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/cucumber03.key/preview.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/pasted-image-106.png +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/pasted-image-small-107.png +0 -0
- data/docs/nasu/keynote/cucumber04.key/Data/st0-115.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/Index.zip +0 -0
- data/docs/nasu/keynote/cucumber04.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/cucumber04.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/cucumber04.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/cucumber04.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/cucumber04.key/preview.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/pasted-image-89.png +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/pasted-image-small-90.png +0 -0
- data/docs/nasu/keynote/cucumber05.key/Data/st0-97.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/Index.zip +0 -0
- data/docs/nasu/keynote/cucumber05.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/cucumber05.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/cucumber05.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/cucumber05.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/cucumber05.key/preview.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Data/st0-299.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Index.zip +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/my_help_nasu1.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/my_help_nasu1.key/preview.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt10@2x-87.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt1@2x-78.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt2@2x-79.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt3@2x-80.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt4@2x-81.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt5@2x-82.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt6@2x-83.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt7@2x-84.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt8@2x-85.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/mt9@2x-86.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/pasted-image-89.png +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/pasted-image-small-90.png +0 -0
- data/docs/nasu/keynote/rspec01.key/Data/st0-96.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/Index.zip +0 -0
- data/docs/nasu/keynote/rspec01.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/nasu/keynote/rspec01.key/Metadata/DocumentIdentifier +1 -0
- data/docs/nasu/keynote/rspec01.key/Metadata/Properties.plist +0 -0
- data/docs/nasu/keynote/rspec01.key/preview-micro.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/preview-web.jpg +0 -0
- data/docs/nasu/keynote/rspec01.key/preview.jpg +0 -0
- data/docs/nasu/latex_dir/abstract.tex +18 -0
- data/{my_help_nasu → docs/nasu}/latex_dir/code.tex +9 -21
- data/docs/nasu/latex_dir/discussion.aux +28 -0
- data/docs/nasu/latex_dir/discussion.tex +19 -0
- data/docs/nasu/latex_dir/features.aux +30 -0
- data/docs/nasu/latex_dir/features.tex +186 -0
- data/{my_help_nasu → docs/nasu}/latex_dir/head.tex +1 -1
- data/{my_help_nasu → docs/nasu}/latex_dir/introduction.aux +3 -3
- data/{my_help_nasu → docs/nasu}/latex_dir/introduction.tex +15 -16
- data/{my_help_nasu → docs/nasu}/latex_dir/jlisting.sty +0 -0
- data/{my_help_nasu/latex_dir/consideration.aux → docs/nasu/latex_dir/method.aux} +7 -8
- data/docs/nasu/latex_dir/method.tex +6 -0
- data/{my_help_nasu → docs/nasu}/latex_dir/method_bdd.aux +10 -7
- data/{my_help_nasu → docs/nasu}/latex_dir/method_bdd.tex +14 -5
- data/{my_help_nasu → docs/nasu}/latex_dir/method_cucumber.aux +10 -9
- data/{my_help_nasu → docs/nasu}/latex_dir/method_cucumber.tex +15 -18
- data/{my_help_nasu → docs/nasu}/latex_dir/method_usage.aux +11 -11
- data/{my_help_nasu → docs/nasu}/latex_dir/method_usage.tex +35 -29
- data/{my_help_nasu → docs/nasu}/latex_dir/my_help_nasu.aux +6 -5
- data/docs/nasu/latex_dir/my_help_nasu.log +363 -0
- data/docs/nasu/latex_dir/my_help_nasu.pdf +0 -0
- data/docs/nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
- data/{my_help_nasu → docs/nasu}/latex_dir/my_help_nasu.tex +12 -18
- data/docs/nasu/latex_dir/my_help_nasu.toc +35 -0
- data/docs/nasu/latex_dir/new_code.aux +44 -0
- data/docs/nasu/latex_dir/new_code.tex +237 -0
- data/{my_help_nasu → docs/nasu}/latex_dir/overview.aux +2 -2
- data/{my_help_nasu/latex_dir → docs/nasu}/latex_dir/pre.tex +0 -0
- data/docs/nasu/method.hiki +5 -0
- data/{my_help_nasu → docs/nasu}/method_bdd.hiki +14 -8
- data/{my_help_nasu → docs/nasu}/method_cucumber.hiki +14 -17
- data/{my_help_nasu → docs/nasu}/method_usage.hiki +25 -24
- data/docs/nasu/my_help_nasu/my_help_nasu.001.bb +5 -0
- data/{my_help_nasu → docs/nasu}/my_help_nasu/my_help_nasu.001.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.002.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.002.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.003.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.003.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.004.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.004.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.005.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.005.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.006.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.006.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.007.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.007.jpeg +0 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.008.bb +5 -0
- data/docs/nasu/my_help_nasu/my_help_nasu.008.jpeg +0 -0
- data/docs/nasu/my_help_nasu.hiki +28 -0
- data/docs/nasu/my_help_nasu.key +0 -0
- data/docs/nasu/my_help_nasu09.key +0 -0
- data/docs/nasu/my_help_nasu1/my_help_nasu1.001.jpg +0 -0
- data/docs/nasu/nasu_abst/abst_fig.bb +5 -0
- data/docs/nasu/nasu_abst/abst_fig.png +0 -0
- data/docs/nasu/nasu_abst/my_help_nasu.001.bb +5 -0
- data/docs/nasu/nasu_abst/my_help_nasu.001.jpg +0 -0
- data/docs/nasu/nasu_abst/my_help_nasu.001.png +0 -0
- data/docs/nasu/nasu_abst/nasu_abst.aux +10 -0
- data/docs/nasu/nasu_abst/nasu_abst.log +179 -0
- data/docs/nasu/nasu_abst/nasu_abst.pdf +0 -0
- data/docs/nasu/nasu_abst/nasu_abst.synctex.gz +0 -0
- data/docs/nasu/nasu_abst/nasu_abst.tex +63 -0
- data/docs/nasu/new_code.hiki +246 -0
- data/docs/nasu/spec/.rspec +2 -0
- data/docs/nasu/spec/my_help_spec.rb +75 -0
- data/docs/nasu/spec/my_todo/todo_spec.rb +15 -0
- data/docs/nasu/spec/spec_helper.rb +11 -0
- data/docs/nasu/spec/support/aruba.rb +1 -0
- data/docs/nasu/spec/thor_spec.rb +81 -0
- data/docs/nasu/test/my_help_test.rb +11 -0
- data/docs/nasu/test/test_helper.rb +4 -0
- data/{hikis → docs}/tmp.org +0 -0
- data/docs/yagi/bachelor_thesis/final/figs/opt_thor.jpeg +0 -0
- data/docs/yagi/bachelor_thesis/final/handout/handout.aux +14 -0
- data/{my_help_nasu/latex_dir/my_help_nasu.log → docs/yagi/bachelor_thesis/final/handout/handout.log} +46 -175
- data/docs/yagi/bachelor_thesis/final/handout/handout.pdf +0 -0
- data/docs/yagi/bachelor_thesis/final/handout/handout.synctex.gz +0 -0
- data/docs/yagi/bachelor_thesis/final/handout/handout.tex +123 -0
- data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.aux +46 -0
- data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.dvi +0 -0
- data/{lor → docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.lof} +0 -0
- data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.lot +0 -0
- data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.synctex.gz +0 -0
- data/docs/yagi/bachelor_thesis/final/mk_latex/thesis/thesis.toc +0 -0
- data/docs/yagi/bachelor_thesis/final/thesis/figs/opt_thor.png +0 -0
- data/docs/yagi/bachelor_thesis/final/thesis/final_thesis.ipynb +449 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/latex/final_thesis.tex +718 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter1/chapter1.tex +8 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter2/chapter2.log +28 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter2/chapter2.tex +127 -0
- data/{my_help_nasu/latex_dir/method_cucumber.log → docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter3/chapter3.log} +11 -11
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter3/chapter3.tex +328 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter4/chapter4.tex +13 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter5/chapter5.tex +5 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter6/chapter6.log +38 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/chapter6/chapter6.tex +28 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.aux +1 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.log +55 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.tex +6 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/tmp/tmp.tex +1 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/.splits_location.tex +6 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.aux +114 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.lof +4 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.log +699 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.lot +5 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.out.ps +98 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.pdf +0 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.synctex.gz +0 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.tex +30 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis.toc +22 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis/thesis_checked_180213_1433.pdf +0 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/form00_style.tex +25 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/tightlist_setting.tex +2 -0
- data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/thesis_pieces/usepackage.tex +25 -0
- data/docs/yagi/bachelor_thesis/translation/awesome_chapter2.ipynb +84 -0
- data/docs/yagi/bachelor_thesis/translation/awesome_introduction.ipynb +328 -0
- data/docs/yagi/comparisons/.ipynb_checkpoints/Untitled-checkpoint.ipynb +6 -0
- data/docs/yagi/comparisons/.ipynb_checkpoints/comp-checkpoint.ipynb +230 -0
- data/docs/yagi/comparisons/comp.ipynb +178 -0
- data/docs/yagi/comparisons/hanami.rb +25 -0
- data/docs/yagi/comparisons/optparse.rb +21 -0
- data/docs/yagi/comparisons/thor.rb +11 -0
- data/docs/yagi/midterm_presentation/.ipynb_checkpoints/abst-checkpoint.ipynb +87 -0
- data/docs/yagi/midterm_presentation/abst.aux +16 -0
- data/docs/yagi/midterm_presentation/abst.ipynb +87 -0
- data/docs/yagi/midterm_presentation/abst.log +222 -0
- data/docs/yagi/midterm_presentation/abst.pdf +0 -0
- data/docs/yagi/midterm_presentation/abst.synctex.gz +0 -0
- data/docs/yagi/midterm_presentation/abst.tex +133 -0
- data/{my_help_nasu/latex_dir/jlisting.tex → docs/yagi/midterm_presentation/jlisting.sty} +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.001.png +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.002.png +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.003.png +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.004.png +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote/mid_keynote.005.png +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small-12.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small-14.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small-10.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt10@2x-92.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt1@2x-83.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt2@2x-84.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt3@2x-85.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt4@2x-86.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt5@2x-87.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt6@2x-88.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt7@2x-89.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt8@2x-90.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/mt9@2x-91.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st0-438.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st1-598.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st2-648.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st3-652.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Data/st4-671.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Index.zip +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/BuildVersionHistory.plist +8 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/DocumentIdentifier +1 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/Metadata/Properties.plist +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/preview-micro.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/preview-web.jpg +0 -0
- data/docs/yagi/midterm_presentation/mid_keynote.key/preview.jpg +0 -0
- data/docs/yagi/thor_spec.ipynb +192 -0
- data/docs/yagi/thor_task.ipynb +98 -0
- data/exe/my_help +3 -1
- data/lib/my_help/org2yml.rb +46 -0
- data/lib/my_help/version.rb +1 -1
- data/lib/my_help/yml2org.rb +36 -0
- data/lib/my_help.rb +76 -30
- data/lib/my_help_thor.rb +170 -0
- data/lib/my_todo/my_todo.rb +5 -2
- data/lib/specific_help.rb +52 -25
- data/lib/{specific_help.rb~ → specific_help_bu.rb} +129 -89
- data/lib/specific_help_opt.rb +71 -0
- data/lib/specific_help_thor.rb +172 -0
- data/lib/templates/emacs_help.org +47 -0
- data/lib/templates/emacs_help_e.org +49 -0
- data/lib/templates/my_todo.org +11 -0
- data/lib/templates/template_help.org +8 -0
- data/make_docker.sh +5 -0
- data/my_help.gemspec +3 -2
- metadata +406 -92
- data/.DS_Store +0 -0
- data/CODE_OF_CONDUCT.md +0 -49
- data/README_en.md +0 -132
- data/exe/e_h +0 -4
- data/exe/emacs_help +0 -4
- data/exe/my_todo +0 -4
- data/hikis/README_en.hiki +0 -130
- data/hikis/README_ja.hiki +0 -316
- data/hikis/diff_against_org-mode.hiki +0 -34
- data/hikis/emacs_help.hiki +0 -47
- data/hikis/template_help.hiki +0 -51
- data/latexes/handout_pre.tex +0 -11
- data/lib/.emacs_help.rb.swp +0 -0
- data/lib/daddygongon/emacs_help.yml +0 -89
- data/lib/daddygongon/my_todo.yml +0 -31
- data/lib/daddygongon/template_help.yml +0 -33
- data/lib/emacs_help.rb~ +0 -137
- data/lib/my_todo/my_todo.rb~ +0 -7
- data/lib/todo.rb~ +0 -1
- data/my_help.wiki/Home.md +0 -330
- data/my_help.wiki/README_en.md +0 -132
- data/my_help.wiki/README_ja.md +0 -330
- data/my_help.wiki/emacs_help.md +0 -46
- data/my_help.wiki/template_help.md +0 -51
- data/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/consideration.hiki +0 -8
- data/my_help_nasu/figs/my_help_nasu.001.jpeg +0 -0
- data/my_help_nasu/figs/my_help_nasu.001.jpg +0 -0
- data/my_help_nasu/figs/my_help_nasu1.001.jpg +0 -0
- data/my_help_nasu/latex_dir/.gitignore +0 -1
- data/my_help_nasu/latex_dir/Rakefile +0 -420
- data/my_help_nasu/latex_dir/code.aux +0 -25
- data/my_help_nasu/latex_dir/consideration.tex +0 -9
- data/my_help_nasu/latex_dir/features.aux +0 -31
- data/my_help_nasu/latex_dir/features.tex +0 -173
- data/my_help_nasu/latex_dir/hiki_help.yml +0 -53
- data/my_help_nasu/latex_dir/latex_dir/head.tex +0 -9
- data/my_help_nasu/latex_dir/latex_dir/jlisting.tex +0 -216
- data/my_help_nasu/latex_dir/my_help_nasu.pdf +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.toc +0 -32
- data/my_help_nasu/latex_dir/overview.tex +0 -12
- data/my_help_nasu/latex_dir/pre.tex +0 -36
- data/my_help_nasu/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/my_help_nasu.hiki +0 -32
- data/my_help_nasu/my_help_nasu.key +0 -0
- data/my_help_nasu/overview.hiki +0 -11
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
\chapter{はじめに}\label{ux306fux3058ux3081ux306b}
|
|
2
|
+
|
|
3
|
+
\section{目的}\label{ux76eeux7684}
|
|
4
|
+
|
|
5
|
+
西谷研究室で使われているユーザメモソフト,my\_helpの振る舞いを制御しているサブコマンドは,マイナスを付した省略記法が取られている.プログラミング初心者にとってこの省略記法は,覚えにくかったりわかりにくかったりするという問題があり,現在はフルワードを使った自然言語に近い記述法が多く用いられている.
|
|
6
|
+
そこで,本研究ではコマンドラインツール作成ライブラリを自然言語に近いサブコマンド体系を実装しやすいライブラリであるThorに変更する.rubyの標準ライブラリであるoptparseで作成されているmy\_helpをThorによって書き直し,異なった2つライブラリで作成されたmy\_helpの使用感を比較検討することを目的とする.
|
|
7
|
+
|
|
8
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2017.12.7) 13 FEB 2018 16:41
|
|
2
|
+
entering extended mode
|
|
3
|
+
restricted \write18 enabled.
|
|
4
|
+
file:line:error style messages enabled.
|
|
5
|
+
%&-line parsing enabled.
|
|
6
|
+
**chapter2.tex
|
|
7
|
+
(./chapter2.tex
|
|
8
|
+
LaTeX2e <2017-04-15>
|
|
9
|
+
Babel <3.15> and hyphenation patterns for 84 language(s) loaded.
|
|
10
|
+
./chapter2.tex:1: Undefined control sequence.
|
|
11
|
+
l.1 \chapter
|
|
12
|
+
{基本的事項}\label{ux57faux672cux7684ux4e8bux9805}
|
|
13
|
+
?
|
|
14
|
+
./chapter2.tex:1: Emergency stop.
|
|
15
|
+
l.1 \chapter
|
|
16
|
+
{基本的事項}\label{ux57faux672cux7684ux4e8bux9805}
|
|
17
|
+
End of file on the terminal!
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Here is how much of TeX's memory you used:
|
|
21
|
+
5 strings out of 492985
|
|
22
|
+
131 string characters out of 6132586
|
|
23
|
+
54187 words of memory out of 5000000
|
|
24
|
+
3668 multiletter control sequences out of 15000+600000
|
|
25
|
+
3640 words of font info for 14 fonts, out of 8000000 for 9000
|
|
26
|
+
1141 hyphenation exceptions out of 8191
|
|
27
|
+
5i,0n,1p,78b,8s stack positions out of 5000i,500n,10000p,200000b,80000s
|
|
28
|
+
./chapter2.tex:1: ==> Fatal error occurred, no output PDF file produced!
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
\chapter{基本的事項}\label{ux57faux672cux7684ux4e8bux9805}
|
|
2
|
+
|
|
3
|
+
\section{my\_help}\label{my_help}
|
|
4
|
+
|
|
5
|
+
\subsection{my\_helpの目的}\label{my_helpux306eux76eeux7684}
|
|
6
|
+
|
|
7
|
+
my\_helpとは,ユーザー独自のマニュアルを作成することができるユーザメモソフトである.これは,terminalだけを用いて簡単に起動,編集,削除などをすることができるため,非常に便利である.さらに,そのマニュアルは自分ですぐに編集,参照することができるので,メモとしての機能も果たし
|
|
8
|
+
ている.これにより,プログラミング初心者が,頻繁に使うコマンドやキーバインドなどをいちいちweb
|
|
9
|
+
browserを立ち上げて調べるのではなく,terminal上で即座に取得できるため,プログラム開発を集中することが期待される.
|
|
10
|
+
|
|
11
|
+
メモやtodoリストの作成が行えることや,保存場所を共通化することでどこでも立ち上げることができることなど,emacsのorg-modeと類似している点がいくつか存在する.しかし,明確な相違点も存在する.org-modeはemacsを起動させなければならないが,my\_helpはemacsを起動させる必要がなくterminalで編集することが可能である.また,org-modeを使用するとなるとorg-mode独自のコマンドを学ぶ必要があり,学習コストがかかってしまう.my\_helpにはその必要がなく,非常に単純な操作でアプリを使用することができるので,org-modeの使い方を理解していない初心者にとって使いやすいものとなっている.
|
|
12
|
+
|
|
13
|
+
また,アプリやプログラミング言語などの正式なマニュアルは英語で書かれていることが多く,初心者には理解するのが困難である.my\_helpを使用すれば,自分なりのマニュアルを作成することができるので,仕様を噛み砕いて理解することが可能である.tarminal上でいつでもメモを参照できるため,どこにメモをしたかを忘れるリスクも軽減される.
|
|
14
|
+
|
|
15
|
+
\subsection{使用法}\label{ux4f7fux7528ux6cd5}
|
|
16
|
+
|
|
17
|
+
インストールする方法だが,gemの標準とは少し方法が異なっている.
|
|
18
|
+
まず,githubにあるmy\_helpのリポジトリをフォーク,クローンすることでローカル(ネットワークに繋がれていない環境)でもmy\_helpを操作することができるようになる.
|
|
19
|
+
|
|
20
|
+
\begin{quote}
|
|
21
|
+
git clone git@github.com:daddygongon/my\_help.git
|
|
22
|
+
\end{quote}
|
|
23
|
+
これ以降の作業はbundleにて行っていく.
|
|
24
|
+
|
|
25
|
+
\begin{quote}
|
|
26
|
+
bundle update
|
|
27
|
+
\end{quote}
|
|
28
|
+
を実行することでmy\_help.gemspecに記述されている必要なgemsがbundleされる.ここでCould
|
|
29
|
+
not locate
|
|
30
|
+
Gemfileとエラーが出た場合は、Gemfileのある場所を探し、その配下に移動してから再びコマンドを入力する.
|
|
31
|
+
|
|
32
|
+
\begin{quote}
|
|
33
|
+
bundle exec exe/my\_help
|
|
34
|
+
\end{quote}
|
|
35
|
+
でmy\_helpに用意されているコマンドを参照することができる.デフォルトでemacs\_helpというemacsのヘルプが用意されている.これはemacs\_helpの他に,省略形のe\_hでも表示されるようになっている.
|
|
36
|
+
|
|
37
|
+
次に,独自のヘルプを作成する方法であるが,まず,
|
|
38
|
+
|
|
39
|
+
\begin{quote}
|
|
40
|
+
bundle exec exe/my\_help -i new\_help
|
|
41
|
+
\end{quote}
|
|
42
|
+
とすることでnew\_helpという名前のヘルプが作成され,そこにテンプレートが格納される.また,
|
|
43
|
+
|
|
44
|
+
\begin{quote}
|
|
45
|
+
bundle exec exe/my\_help -e new\_help
|
|
46
|
+
\end{quote}
|
|
47
|
+
で,自分の好きなように編集することができる.ヘルプが完成したら,
|
|
48
|
+
|
|
49
|
+
\begin{quote}
|
|
50
|
+
bundle exec exe/my\_help -m
|
|
51
|
+
\end{quote}
|
|
52
|
+
とすることでexeディレクトリにnew helpが追加され,new
|
|
53
|
+
help,n\_hが使用可能になるという手順である.
|
|
54
|
+
|
|
55
|
+
\section{option}\label{option}
|
|
56
|
+
|
|
57
|
+
今日,複雑な機能を持つコマンドが増加している.そのようなコマンドは,オプション(サブコマンド)を使用することで適切な動作を実行することが可能になる.例えばgitコマンドはオプションなしでは意味をなさない.オプションでどのような動作をするかが決まるので,オプションを入力することで正常に動作するのである.
|
|
58
|
+
|
|
59
|
+
\subsection{optionの種類}\label{}
|
|
60
|
+
|
|
61
|
+
optionの種類については以下のように述べられている.
|
|
62
|
+
|
|
63
|
+
\begin{quote}
|
|
64
|
+
そもそも,オプションにはショートオプションとロングオプションの2種類がある.ショートオプションはハイフンの後に英字1字を付けた形式のもので,-aや-vなどといったものがショートオプションである.また,ショートオプションは2つ以上のオプションを1つにまとめて実行することもできる.例えば,-l,-a,-tの3つのオプションを1つにまとめて-latとして実行することが可能である.それに対してロングオプションは,ハイフン2つの後に英字2字以上を付けることができる形式である.例えば-\/-allや-\/-versionなどである.ロングオプションは英字を2字以上使用することができるので,どのようなオプションであるかを明確にするために一般的にフルワードが採用されている.-\/-no-の形にすることで否定形のオプションを作成することも可能である.ロングオプションはショートオプションのように複数のオプションを1つにまとめることは不可能であり,1つ1つをスペースで区切る必要がある\cite{awesome}pp.14-5.
|
|
65
|
+
\end{quote}
|
|
66
|
+
|
|
67
|
+
ショートオプションを設定する際,英字1文字しか使用することができないので基本的には対応づけられたロングオプション(そのオプションがどのような動作を行うのかを表す単語)の頭文字であることが多く,慣れている人であればショートオプションを使うことで素早くアプリケーションを動かすことが可能である.しかし,用いるアプリが1つであるとは限らないし,全てのアプリのショートオプションを統一するのも困難である.またinitialとinstallなど,頭文字が重複してしまう2つのオプションがある場合,-iというショートオプションがinitialを意味するのかinstallを意味するのかを判断するのは,初心者には容易ではなく,混乱を引き起こしかねない.そのため,ヒューマンエラーを引き起こしてしまったり,学習コストがかかってしまったりすることがある.
|
|
68
|
+
|
|
69
|
+
ショートオプションの場合,複数のオプションを一つにまとめることができると記述したが,これは引数を必要としないオプションの場合である.引数を必要とするオプションの場合,2文字目以降の英字は引数扱いになってしまう.例えば上に示した-latにおいて,-lが引数を必要とするオプションであれば,-latはatという引数が与えられた-lという風に解釈されてしまうので注意が必要である.そういった点においてもショートオプションは初心者にとって扱いにくい形式であると言える.
|
|
70
|
+
|
|
71
|
+
Command Line Applicationのオプションの記述方法には幾つもの流儀があるようで
|
|
72
|
+
何らかの標準があるわけではない.
|
|
73
|
+
しかし,それら全てに対応することはできず,なんらかの
|
|
74
|
+
基準に従ってオプション記法を解釈する必要がある.
|
|
75
|
+
|
|
76
|
+
ここでは, "Build awesome command-line application in ruby 2"に従って
|
|
77
|
+
オプション記法と用語をまとめておく.
|
|
78
|
+
|
|
79
|
+
コマンドラインの基本形は,
|
|
80
|
+
|
|
81
|
+
\begin{quote}
|
|
82
|
+
ls -lat dir\_name
|
|
83
|
+
\end{quote}
|
|
84
|
+
というように
|
|
85
|
+
|
|
86
|
+
\begin{quote}
|
|
87
|
+
executabel options arguments
|
|
88
|
+
\end{quote}
|
|
89
|
+
での形であった.これは,GNU標準に基本構造が記載されている.
|
|
90
|
+
|
|
91
|
+
その後,幾つかのswitchやflagを組み合わせて,複雑な
|
|
92
|
+
命令を解釈できるようにするに従って,
|
|
93
|
+
|
|
94
|
+
\begin{quote}
|
|
95
|
+
grep -\/-igonre-case -C 4 "some string" /tmp
|
|
96
|
+
\end{quote}
|
|
97
|
+
などとほぼ呪文のような形態となってきた.
|
|
98
|
+
|
|
99
|
+
その後,command line suiteと呼ばれる一群のcommand line
|
|
100
|
+
applicationが登場した.典型的なのはgitである\cite{awesome}pp.14-5.
|
|
101
|
+
|
|
102
|
+
gitはlinuxのバックアップを分散処理するために, Linus
|
|
103
|
+
Torvaldsが開発したものであるが,いくつもの
|
|
104
|
+
機能に従ってそれぞれ個別のコマンドが用意されていた.
|
|
105
|
+
それぞれ,git-commitとかgit-fetchなどであった.
|
|
106
|
+
それがある時,すべてをまとめてsuiteとして
|
|
107
|
+
パッケージし直され,1つのまとまったcommandとして提供された.
|
|
108
|
+
すなわち,git commitやgit fetchなどである\cite{awesome}p.16.
|
|
109
|
+
|
|
110
|
+
\subsection{Command Line Interface}\label{}
|
|
111
|
+
|
|
112
|
+
Graphical User Interface(GUI)はコンピュータグラフィックスとポインティングデバイスを用いて操作を行う方法である.
|
|
113
|
+
それに対しCommand Line Interface(CLI)はCharacter User Interface(CUI)とも呼ばれ,キーボードからの入力と文字による情報の表示だけを用いて操作を行う方法である.
|
|
114
|
+
|
|
115
|
+
"Build awesome command-line application in ruby 2"の中で,
|
|
116
|
+
|
|
117
|
+
\begin{quote}
|
|
118
|
+
グラフィカルユーザーインターフェース(GUI)はいろんな点で素晴らしいものです. 冷たくまたたくカーソルの殺伐とした輝きよりも, GUIはとりわけ初心者にとても優しいものです. でも,それには犠牲が伴います.GUIの熟練者になるには,奥義のようなキーボードショートカットを学ぶ必要があります. そうだとしても,あなたは生産性と効率の限界にぶち当たります. GUIはスクリプトして自動化しにくいことで悪名高いし,それができたとしても,あなたのスクリプトは移植しにくい傾向にあります\cite{awesome}pp.3-4.
|
|
119
|
+
\end{quote}
|
|
120
|
+
|
|
121
|
+
と述べられており,GUIの限界について示唆している.また,
|
|
122
|
+
|
|
123
|
+
\begin{quote}
|
|
124
|
+
あなたのアプリをインストールした後,それを用いたユーザーが最初に体験するのは実際のコマンドラインインターフェイスでしょう.もしそのインターフェイスが難しく,直感的でなく,もしくは,とても醜いならば,たくさんの自信を呼び起こすことはできないし,ユーザーはそれを使って明確で簡潔な目的を達成するのに苦労するでしょう.逆に,使いやすければ,あなたのインターフェイスはアプリケーションに観衆と鋭さを与えてくれるでしょう\cite{awesome}pp.3-4.
|
|
125
|
+
\end{quote}
|
|
126
|
+
|
|
127
|
+
とも述べられている.
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26)
|
|
1
|
+
This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26) 14 FEB 2018 18:49
|
|
2
2
|
entering extended mode
|
|
3
3
|
restricted \write18 enabled.
|
|
4
4
|
file:line:error style messages enabled.
|
|
5
5
|
%&-line parsing enabled.
|
|
6
|
-
**
|
|
7
|
-
(./
|
|
6
|
+
**chapter3.tex
|
|
7
|
+
(./chapter3.tex
|
|
8
8
|
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01>)
|
|
9
9
|
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
|
|
10
|
-
./
|
|
11
|
-
l.
|
|
12
|
-
|
|
10
|
+
./chapter3.tex:1: Undefined control sequence.
|
|
11
|
+
l.1 \chapter
|
|
12
|
+
{研究内容}\label{ux7814ux7a76ux5185ux5bb9}
|
|
13
13
|
?
|
|
14
|
-
./
|
|
15
|
-
l.
|
|
16
|
-
|
|
14
|
+
./chapter3.tex:1: Emergency stop.
|
|
15
|
+
l.1 \chapter
|
|
16
|
+
{研究内容}\label{ux7814ux7a76ux5185ux5bb9}
|
|
17
17
|
End of file on the terminal!
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
Here is how much of TeX's memory you used:
|
|
21
21
|
4 strings out of 493683
|
|
22
|
-
|
|
22
|
+
46 string characters out of 6149653
|
|
23
23
|
53892 words of memory out of 5000000
|
|
24
24
|
3671 multiletter control sequences out of 15000+600000
|
|
25
25
|
7511 words of font info for 31 fonts, out of 8000000 for 9000
|
|
26
26
|
929 hyphenation exceptions out of 8191
|
|
27
|
-
5i,0n,3p,
|
|
27
|
+
5i,0n,3p,65b,8s stack positions out of 5000i,500n,10000p,200000b,80000s
|
|
28
28
|
No pages of output.
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
\chapter{研究内容}\label{ux7814ux7a76ux5185ux5bb9}
|
|
2
|
+
|
|
3
|
+
\section{optparseとThorの比較}\label{}
|
|
4
|
+
|
|
5
|
+
\subsection{optparse}\label{optparse}
|
|
6
|
+
|
|
7
|
+
今回の研究対象のmy\_helpは,optparseで実装されている.optparseはrubyの標準ライブラリであり,rubyでコマンドラインのオプションを操作するためのライブラリである\cite{opt1}.optparseが操作するオプションは,下記のonメソッドで設定する.
|
|
8
|
+
|
|
9
|
+
\begin{screen}
|
|
10
|
+
{\small
|
|
11
|
+
\begin{verbatim}
|
|
12
|
+
def execute
|
|
13
|
+
@argv << ’--help’ if @argv.size==0
|
|
14
|
+
command_parser = OptionParser.new do |opt|
|
|
15
|
+
opt.on(’-v’, ’--version’,’show program Version.’ ) { |v|
|
|
16
|
+
opt.version = MyHelp::VERSION
|
|
17
|
+
puts opt.ver
|
|
18
|
+
}
|
|
19
|
+
opt.on(’-l’, ’--list’, ’list specific helps’){list_helps}
|
|
20
|
+
#中略
|
|
21
|
+
end
|
|
22
|
+
#中略
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def list_helps
|
|
26
|
+
#中略
|
|
27
|
+
end
|
|
28
|
+
#後略
|
|
29
|
+
\end{verbatim}}
|
|
30
|
+
\end{screen}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
上記のコードはoptparse版my\_helpの一部である.第1引数はショートオプションで,-aや-dのような形で設定する.同様にして,第2引数はロングオプションを表し,-\/-addや-\/-deleteのように,第3引数はそのオプションの説明文で,helpで表示される説明文を設定する.後ろのブロックには,そのオプションが指定された場合に実行されるコードを記述する
|
|
34
|
+
\cite{opt2}.しかしこのライブラリでは自然言語に近い,ハイフンなしのサブコマンドを実装するには相当な書き換えが必要となる.
|
|
35
|
+
|
|
36
|
+
メソッドの引数でオプションを定義し,引数が指定された時の処理をブロックで記述する.ブロックの引数にはオプションが指定されたことを示すtrueが渡される.onメソッドが呼ばれた時点ではオプションは実行されず,定義されるだけである.parseが呼ばれた際,コマンドラインにオプションが登録されていれば実行される.
|
|
37
|
+
|
|
38
|
+
オプション定義の際,スペースの後に任意の文字を追加すると,そのオプションは引数を受け取るオプションになる.その文字に{[}{]}をつけることで引数は必須でなくなる.また引数がハイフンで始まる場合,オプションとの間にハイフンを2つ挟むことで引数として認識される.
|
|
39
|
+
|
|
40
|
+
helpとversionのサブコマンドはデフォルトで作成される.
|
|
41
|
+
|
|
42
|
+
\subsection{Thor}\label{thor}
|
|
43
|
+
|
|
44
|
+
本研究ではoptparseの代わりのライブラリとしてThorの採用を検討する.Thorは,コマンドラインツールの作成を支援するライブラリであり,gitやbundlerのようにサブコマンドを含むコマンドラインツールを簡単に作成することができる
|
|
45
|
+
\cite{koichiro}.Thorには以下のような特徴がある.
|
|
46
|
+
|
|
47
|
+
\begin{itemize}
|
|
48
|
+
\item コマンドラインオプションのパーズやサブコマンドごとのヘルプを作るなどの面倒な作業を簡単にこなすことができ,手早くビルドツールや実行可能なコマンドを作成できる
|
|
49
|
+
\cite{hibariya}.
|
|
50
|
+
|
|
51
|
+
\item 特殊なDSL(Domain Specific
|
|
52
|
+
Language)を使わずにメソッドを定義することで処理を記述するため,テストを行いやすい
|
|
53
|
+
\cite{hibariya}.
|
|
54
|
+
|
|
55
|
+
\item optparseでは作成することが困難な,マイナスを伴わない(自然言語に近い)サブコマンドを実装することが可能である.下記はThor版my\_helpの一部である.
|
|
56
|
+
\end{itemize}
|
|
57
|
+
|
|
58
|
+
\begin{screen}
|
|
59
|
+
{\small
|
|
60
|
+
\begin{verbatim}
|
|
61
|
+
desc 'list, --list', 'list specific helps'
|
|
62
|
+
map "--list" => "list"
|
|
63
|
+
def list
|
|
64
|
+
print "Specific help file:\n"
|
|
65
|
+
local_help_entries.each{|file|
|
|
66
|
+
file_path=File.join(@local_help_dir,file)
|
|
67
|
+
help = YAML.load(File.read(file_path))
|
|
68
|
+
print " #{file}\t:#{help[:head][0]}\n"
|
|
69
|
+
}
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
\end{verbatim}}
|
|
73
|
+
\end{screen}
|
|
74
|
+
|
|
75
|
+
表\ref{opt_thor}にoptparseとThorの比較をまとめた.
|
|
76
|
+
optparseではonメソッドでコマンドの登録を行い,その後のdefでコマンドの振る舞いを定義している.それに対してThorは登録と定義を同時に行うことが可能である.また,Thorを継承したクラスのパブリックメソッドがそのままコマンドになるので非常に簡単にコマンドを作成することが可能である.Thorはコマンドを作成した時点で自動的にヘルプを生成し,コマンドを指定せずにコマンドラインアプリを実行するとヘルプを表示する.
|
|
77
|
+
\begin{table}[H]
|
|
78
|
+
\centering
|
|
79
|
+
\begin{center}
|
|
80
|
+
\caption{optparse とThor の比較. \label{opt_thor}}
|
|
81
|
+
\includegraphics[width=150mm]{../.././figs/opt_thor.png}
|
|
82
|
+
\end{center}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
\label{fig:This}
|
|
86
|
+
\end{table}
|
|
87
|
+
|
|
88
|
+
\subsection{比較}\label{}
|
|
89
|
+
|
|
90
|
+
書き換えの前に,単純なCLIを例にoptparseとThorの比較を行った.今回はコマンドに続けてnameを入力すると,Hello nameと出力するCLIをoptparseとThor,それぞれを用いて作成し,コード量や使用感を比較する.1つめのソースコードがoptparseを用いたもの(optparse.rb),2つめのソースコードがThorを用いたもの(thor.rb)である.
|
|
91
|
+
|
|
92
|
+
\begin{screen}
|
|
93
|
+
{\small
|
|
94
|
+
\begin{verbatim}
|
|
95
|
+
|
|
96
|
+
options = {:name => nil}
|
|
97
|
+
|
|
98
|
+
parser = OptionParser.new do|opts|
|
|
99
|
+
opts.on('-n', '--name name', 'Give your own name') do |name|
|
|
100
|
+
options[:name] = name;
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
opts.on('-h', '--help', 'Displays Help') do
|
|
104
|
+
puts opts
|
|
105
|
+
exit
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
parser.parse!
|
|
110
|
+
|
|
111
|
+
sayHello = 'Hello ' + options[:name]
|
|
112
|
+
|
|
113
|
+
puts sayHello
|
|
114
|
+
|
|
115
|
+
\end{verbatim}}
|
|
116
|
+
\end{screen}
|
|
117
|
+
|
|
118
|
+
\begin{screen}
|
|
119
|
+
{\small
|
|
120
|
+
\begin{verbatim}
|
|
121
|
+
|
|
122
|
+
require 'thor'
|
|
123
|
+
|
|
124
|
+
class MyCLI < Thor
|
|
125
|
+
desc "hello NAME", "say hello to NAME"
|
|
126
|
+
def hello(name)
|
|
127
|
+
puts "Hello #{name}"
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
MyCLI.start(ARGV)
|
|
132
|
+
|
|
133
|
+
\end{verbatim}}
|
|
134
|
+
\end{screen}
|
|
135
|
+
|
|
136
|
+
optparse.rbは,onメソッドで,入力された名前を受け取る-nというコマンドの定義を行い,parser.parse!以降でHello nameと出力するように記述を行った.また,-hのコマンドでヘルプを表示できるようにコマンドを登録した.本来ならば,-nではなく-h(helloの頭文字)で登録したかったのだが,ヘルプを表示するコマンドが-hであり,重複してしまうためやむを得ず-nとした.一方thor.rbでは,Thorを継承したクラスの中でnameの受け取りとHello nameの表示を行うようにhelloコマンドを設定した.optparseと違い,Thorでは自動でヘルプが作成されるため,helpコマンドは作成していない.optparse.rbはサブコマンドを書かずに実行すると,エラーになってしまうが,thor.rbではコマンド一覧を表示してくれる.
|
|
137
|
+
|
|
138
|
+
コード量は,helpを自動で生成する分,thor.rbの方が短くなっており,descの中で一つのコマンドが完結しているということもあってoptparse.rbよりも書きやすく感じられた.また,実際にコマンドを入力する際,thor.rbの方が自然言語に近いコマンドのため直感的に入力することができた.さらに,thor.rbでhelloの後にname(引数)を入力せずに実行するとhelloコマンドのusageが表示されるなど,使用感はthor.rbの方がよく感じられた.
|
|
139
|
+
|
|
140
|
+
\section{Thor化に伴う書き換え(具体的な作業)}\label{thorux5316ux306bux4f34ux3046ux66f8ux304dux63dbux3048ux5177ux4f53ux7684ux306aux4f5cux696d}
|
|
141
|
+
|
|
142
|
+
optparseからThorへの書き換えの際,第一に必要となるのは,\textasciitilde{}.gemspecファイル内にThorがインストールされるように変更を加えることである.
|
|
143
|
+
|
|
144
|
+
\begin{verbatim}
|
|
145
|
+
spec.add_development_dependency "thor"
|
|
146
|
+
\end{verbatim}
|
|
147
|
+
|
|
148
|
+
この記述は,作成しているコマンドラインツールがThorに依存性を持つことを意味している.optparseで書いた場合は,Thorに依存性を持つ必要がなく,当然このような記述はされていないので,上の一文を書き加える必要がある.また,bundle
|
|
149
|
+
updateをターミナル上で実行することで,ローカルでのコマンドラインツールを実行した際にThorが適用されるようにアップデートされる.そうすることで,Thorの記述が実際にソースファイルで使用できるようになる.
|
|
150
|
+
|
|
151
|
+
\section{Thorによるサブコマンド}\label{thorux306bux3088ux308bux30b5ux30d6ux30b3ux30deux30f3ux30c9}
|
|
152
|
+
|
|
153
|
+
次に,コマンドが呼ばれる流れについて説明する.
|
|
154
|
+
|
|
155
|
+
\begin{enumerate}
|
|
156
|
+
\def\labelenumi{\arabic{enumi}.}
|
|
157
|
+
\tightlist
|
|
158
|
+
\item
|
|
159
|
+
コマンドを実行する.
|
|
160
|
+
\item
|
|
161
|
+
コマンドを実行すると,exeディレクトリの中にあるコマンド名と同じ名前のファイル(以降コマンドファイルと呼ぶ)が実行される.
|
|
162
|
+
\item
|
|
163
|
+
コマンドファイル内でlibディレクトリ内のソースファイルをrequireしておき,クラス内のコマンドを解析する関数を呼び出す.
|
|
164
|
+
\item
|
|
165
|
+
ソースファイル内に書かれた処理が実行される.
|
|
166
|
+
\end{enumerate}
|
|
167
|
+
|
|
168
|
+
このような流れでコマンドが呼び出され,処理が行われる.Thorとoptpaseの差異は4.におけるコマンドの解析による処理関数への中継の方法である.
|
|
169
|
+
|
|
170
|
+
\section{exeディレクトリの書き換え}\label{exeux30c7ux30a3ux30ecux30afux30c8ux30eaux306eux66f8ux304dux63dbux3048}
|
|
171
|
+
|
|
172
|
+
exeディレクトリの中にあるコマンドファイルについて書き換えを行う.まずはoptparseを使用した際のコマンドファイルの記述を記載する.
|
|
173
|
+
|
|
174
|
+
\begin{screen}
|
|
175
|
+
{\small
|
|
176
|
+
\begin{verbatim}
|
|
177
|
+
!/usr/bin/env ruby
|
|
178
|
+
require "my_help_opt"
|
|
179
|
+
|
|
180
|
+
MyHelp::Command.run(ARGV)
|
|
181
|
+
\end{verbatim}}
|
|
182
|
+
\end{screen}
|
|
183
|
+
|
|
184
|
+
optparseの場合,MyHelp::Command.run(ARGV)というクラス関数を実行することでコマンドを呼び出している.しかし,Thorはoptparseのようにrun(ARGV)を用いず,start(ARGV)というクラス関数を実行してコマンドを呼び出す.よって,runをstartに書き換える作業が必要になる.以下にThorを使用した際のコマンドファイルの記述を記載する.
|
|
185
|
+
|
|
186
|
+
\begin{screen}
|
|
187
|
+
{\small
|
|
188
|
+
\begin{verbatim}
|
|
189
|
+
!/usr/bin/env ruby
|
|
190
|
+
require "my_help_thor"
|
|
191
|
+
|
|
192
|
+
MyHelp::Command.start(ARGV)
|
|
193
|
+
\end{verbatim}}
|
|
194
|
+
\end{screen}
|
|
195
|
+
|
|
196
|
+
\section{libディレクトリ}\label{libux30c7ux30a3ux30ecux30afux30c8ux30ea}
|
|
197
|
+
|
|
198
|
+
まず,self.runについてであるが,Thorでは使用されないのでこの一文は削除する.次にinitializeであるが,こちらについては変更が必要である.そもそもinitializeとはmy\_helpを動かすのに必要なディレクトリがあるかどうかを調べるメソッドであり,なければここで作ることができる.optparseのinitializeではargv={[}{]}となっているところをThorでは(アスタリスク)argvとする必要がある.また,大きな違いはsuperの有無である.optparseではsuperは必要ないのだが,Thorでは必要になる.
|
|
199
|
+
|
|
200
|
+
\section{その他オプション}\label{ux305dux306eux4ed6ux30aaux30d7ux30b7ux30e7ux30f3}
|
|
201
|
+
|
|
202
|
+
optparseではコマンド実行の際,引数の解析を行い,その引数に合わせた関数を呼び出す,という手順で動作している.その手順を記述した関数がexecuteである.
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
\begin{screen}
|
|
206
|
+
{\small
|
|
207
|
+
\begin{verbatim}
|
|
208
|
+
def execute
|
|
209
|
+
@argv << '--help' if @argv.size==0
|
|
210
|
+
command_parser = OptionParser.new do |opt|
|
|
211
|
+
opt.on('-v', '--version','show program Version.') { |v|
|
|
212
|
+
opt.version = MyHelp::VERSION
|
|
213
|
+
puts opt.ver
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
opt.on('-l', '--list', 'list specific helps'){list_helps}
|
|
217
|
+
opt.on('-e NAME', '--edit NAME',
|
|
218
|
+
'edit NAME help(eg test_help)'){|file| edit_help(file)}
|
|
219
|
+
opt.on('-i NAME', '--init NAME',
|
|
220
|
+
'initialize NAME help(eg test_help).'){|file| init_help(file)}
|
|
221
|
+
opt.on('-m', '--make', 'make executables for all helps.'){make_help}
|
|
222
|
+
opt.on('-c', '--clean', 'clean up exe dir.'){clean_exe}
|
|
223
|
+
opt.on('--install_local','install local after edit helps')
|
|
224
|
+
{install_local}
|
|
225
|
+
opt.on('--delete NAME','delete NAME help'){|file| delete_help(file)}
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
begin
|
|
229
|
+
command_parser.parse!(@argv)
|
|
230
|
+
rescue=> eval
|
|
231
|
+
p eval
|
|
232
|
+
end
|
|
233
|
+
exit
|
|
234
|
+
end
|
|
235
|
+
\end{verbatim}}
|
|
236
|
+
\end{screen}
|
|
237
|
+
|
|
238
|
+
しかしThorの場合,executeのような間を取り持つ関数を用意する必要がなく,関数自体をコマンドとして登録していく形をとっているので,この関数は不必要である.以下にThorでの関数宣言を記載する.optparseの場合,-iというコマンドで呼び出されている処理をinitというコマンドで呼び出されるように書き換えたのが以下の関数である.
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
\begin{screen}
|
|
242
|
+
{\small
|
|
243
|
+
\begin{verbatim}
|
|
244
|
+
desc 'init NAME, --init NAME', 'initialize NAME help(eg test_help).'
|
|
245
|
+
# 関数についての説明,ここがヘルプで表示される.
|
|
246
|
+
map "--init" => "init"
|
|
247
|
+
--オプションでも呼び出すことが可能.
|
|
248
|
+
def init(file)
|
|
249
|
+
以下は変更なし
|
|
250
|
+
p target_help=File.join(@local_help_dir,file)
|
|
251
|
+
if File::exists?(target_help)
|
|
252
|
+
puts "File exists. rm it first to initialize it."
|
|
253
|
+
exit
|
|
254
|
+
end
|
|
255
|
+
p template = File.join(@default_help_dir,'template_help')
|
|
256
|
+
FileUtils::Verbose.cp(template,target_help)
|
|
257
|
+
end
|
|
258
|
+
\end{verbatim}}
|
|
259
|
+
\end{screen}
|
|
260
|
+
|
|
261
|
+
このように書き換えることで,Thorを使用したオプションの設定を行うことができるのだが,実際に動かしてみるとエラーが表示されることがある.ここで表示されるエラーは,コマンドとして設定されていない関数があることについての警告文である.その関数はコマンドとして使用しないということを明確に記述することでこの警告を消すことが可能である.
|
|
262
|
+
|
|
263
|
+
\begin{screen}
|
|
264
|
+
{\small
|
|
265
|
+
\begin{verbatim}
|
|
266
|
+
no_commands do
|
|
267
|
+
|
|
268
|
+
この間にコマンド設定しない関数を記述
|
|
269
|
+
|
|
270
|
+
end
|
|
271
|
+
\end{verbatim}}
|
|
272
|
+
\end{screen}
|
|
273
|
+
|
|
274
|
+
\section{変更後のオプション}\label{}
|
|
275
|
+
|
|
276
|
+
オプションを省略記法から自然言語に近い記法に変更したことでより直感的なコマンド入力が可能になると思われる.以下にThorで書き換えた後のmy\_helpのオプション一覧を示す.
|
|
277
|
+
|
|
278
|
+
\begin{screen}
|
|
279
|
+
{\small
|
|
280
|
+
\begin{verbatim}
|
|
281
|
+
Commands:
|
|
282
|
+
my_help clean, --clean clean up exe dir.
|
|
283
|
+
my_help delete NAME, --delete NAME delete NAME help
|
|
284
|
+
my_help edit NAME, --edit NAME edit NAME help(eg test_help)
|
|
285
|
+
my_help help {[}COMMAND{]} Describe available commands or one specific
|
|
286
|
+
command
|
|
287
|
+
my_help init NAME, --init NAME initialize NAME help(eg test_help).
|
|
288
|
+
my_help install_local, --install_local install local after edit
|
|
289
|
+
helps
|
|
290
|
+
my_help list, --list list specific helps
|
|
291
|
+
my_help make, --make make executables for all helps.
|
|
292
|
+
my_help version, -v show program version
|
|
293
|
+
\end{verbatim}}
|
|
294
|
+
\end{screen}
|
|
295
|
+
|
|
296
|
+
\section{コマンドの自動生成}\label{}
|
|
297
|
+
|
|
298
|
+
自分で作成したヘルプにはデフォルトでどのヘルプにも存在するコマンドと,個別に存在するコマンドがある.デフォルトで存在するコマンドを自動生成する部分をThorで記述しようとすると非常に複雑になるため,その部分の記述をoptparseで記述した.これにより,Thorで記述すると非常に冗長になってしまうソースコードを簡潔に記述することができた.
|
|
299
|
+
|
|
300
|
+
\begin{screen}
|
|
301
|
+
{\small
|
|
302
|
+
\begin{verbatim}
|
|
303
|
+
Commands:
|
|
304
|
+
emacs_help add NAME, --add NAME # add NAME help
|
|
305
|
+
emacs_help all, --all # all help
|
|
306
|
+
emacs_help backup NAME, --backup NAME # backup NAME help
|
|
307
|
+
emacs_help edit, --edit # edit help
|
|
308
|
+
emacs_help help [COMMAND] # Describe available commands
|
|
309
|
+
emacs_help hiki, --hiki # hiki help
|
|
310
|
+
emacs_help remove NAME, --remove NAME # remove NAME help
|
|
311
|
+
emacs_help store NAME, --store # store NAME help
|
|
312
|
+
|
|
313
|
+
Usage: emacs_help [options]
|
|
314
|
+
-v, --version show program Version.
|
|
315
|
+
-c, --cursor Cursor移動
|
|
316
|
+
-p, --ページ Page移動
|
|
317
|
+
-f, --ファイル File操作
|
|
318
|
+
-e, --編集 Edit操作
|
|
319
|
+
-w, --ウィンドウ Window操作
|
|
320
|
+
-b, --バッファ Buffer操作
|
|
321
|
+
-q, --終了 終了操作
|
|
322
|
+
\end{verbatim}}
|
|
323
|
+
\end{screen}
|
|
324
|
+
|
|
325
|
+
上記はemacs\_helpという独自のヘルプのコマンドである.前半部分のコマンドがThorで記述されたもの,後半部分のコマンドはoptparseで自動生成したものである.
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
\chapter{総括}\label{ux7dcfux62ec}
|
|
2
|
+
|
|
3
|
+
今回の研究では,ユーザメモソフトであるmy\_helpのThorによる書き換えを行った.この書き換えによる成果は以下の通りである.
|
|
4
|
+
|
|
5
|
+
\begin{enumerate}
|
|
6
|
+
\def\labelenumi{\arabic{enumi}.}
|
|
7
|
+
\item
|
|
8
|
+
オプションの記法を-(ハイフン)を用いた省略記法からフルワードを用いた自然言語に近い記法に変更した.これにより,初心者でも直感的にオプションを使用することができ,学習コストの削減,学習効率の向上に繋がると考えられる.
|
|
9
|
+
\item
|
|
10
|
+
Thorを用いることによってoptparseを用いた時よりもソースコードを短くすることに成功した.
|
|
11
|
+
\end{enumerate}
|
|
12
|
+
|
|
13
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26) 14 FEB 2018 19:09
|
|
2
|
+
entering extended mode
|
|
3
|
+
restricted \write18 enabled.
|
|
4
|
+
file:line:error style messages enabled.
|
|
5
|
+
%&-line parsing enabled.
|
|
6
|
+
**chapter6.tex
|
|
7
|
+
(./chapter6.tex
|
|
8
|
+
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01>)
|
|
9
|
+
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
|
|
10
|
+
|
|
11
|
+
./chapter6.tex:3: LaTeX Error: Environment thebibliography undefined.
|
|
12
|
+
|
|
13
|
+
See the LaTeX manual or LaTeX Companion for explanation.
|
|
14
|
+
Type H <return> for immediate help.
|
|
15
|
+
...
|
|
16
|
+
|
|
17
|
+
l.3 \begin{thebibliography}
|
|
18
|
+
{9}
|
|
19
|
+
?
|
|
20
|
+
./chapter6.tex:3: Emergency stop.
|
|
21
|
+
...
|
|
22
|
+
|
|
23
|
+
l.3 \begin{thebibliography}
|
|
24
|
+
{9}
|
|
25
|
+
Your command was ignored.
|
|
26
|
+
Type I <command> <return> to replace it with another command,
|
|
27
|
+
or <return> to continue without it.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
Here is how much of TeX's memory you used:
|
|
31
|
+
6 strings out of 493683
|
|
32
|
+
207 string characters out of 6149653
|
|
33
|
+
54216 words of memory out of 5000000
|
|
34
|
+
3672 multiletter control sequences out of 15000+600000
|
|
35
|
+
7511 words of font info for 31 fonts, out of 8000000 for 9000
|
|
36
|
+
929 hyphenation exceptions out of 8191
|
|
37
|
+
5i,0n,4p,67b,16s stack positions out of 5000i,500n,10000p,200000b,80000s
|
|
38
|
+
No pages of output.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
%\chapter*{参考文献}\label{ux53c2ux8003ux6587ux732e}
|
|
2
|
+
|
|
3
|
+
\begin{thebibliography}{9}
|
|
4
|
+
\bibitem{awesome} David Bryant Copeland, {\it Build Awesome Command-Line Applications in Ruby 2},(Pragmatic Bookshelf, 2013).
|
|
5
|
+
|
|
6
|
+
\bibitem{opt1} library optparse, erikhuda,
|
|
7
|
+
\texttt{https://docs.ruby-lang.org/ja/latest/library\slash optparse.html},
|
|
8
|
+
accessed 2018.2.9.
|
|
9
|
+
|
|
10
|
+
\bibitem{opt2} コマンドライン引数によるオプションに対応する (optparse),
|
|
11
|
+
\texttt{http://maku77.github.io/ruby/io/optparse.html},
|
|
12
|
+
accessed 2018.2.1.
|
|
13
|
+
|
|
14
|
+
\bibitem{koichiro} S.Koichiro,
|
|
15
|
+
Thorの使い方まとめ,
|
|
16
|
+
\texttt{http://qiita.com/succi0303/items\slash32560103190436c9435b},
|
|
17
|
+
accessed 2018.2.9.
|
|
18
|
+
|
|
19
|
+
\bibitem{hibariya} Hibariya,
|
|
20
|
+
Thorで簡単にコマンドラインアプリをつくる,
|
|
21
|
+
\url{http://note.hibariya.org/articles/20111025/a0.html},
|
|
22
|
+
accessed 2018.2.9.
|
|
23
|
+
\end{thebibliography}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
% Add a bibliography block to the postdoc
|
|
27
|
+
|
|
28
|
+
\end{document}
|
data/docs/yagi/bachelor_thesis/final/thesis/mk_latex/split_files/informations/informations.aux
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
\relax
|