my_help 0.4.5 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,449 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"metadata": {
|
6
|
+
"toc": true
|
7
|
+
},
|
8
|
+
"source": [
|
9
|
+
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
|
10
|
+
"<div class=\"toc\" style=\"margin-top: 1em;\"><ul class=\"toc-item\"><li><span><a href=\"#はじめに\" data-toc-modified-id=\"はじめに-1\"><span class=\"toc-item-num\">1 </span>はじめに</a></span><ul class=\"toc-item\"><li><span><a href=\"#目的\" data-toc-modified-id=\"目的-1.1\"><span class=\"toc-item-num\">1.1 </span>目的</a></span></li></ul></li><li><span><a href=\"#基本的事項\" data-toc-modified-id=\"基本的事項-2\"><span class=\"toc-item-num\">2 </span>基本的事項</a></span><ul class=\"toc-item\"><li><span><a href=\"#my_help\" data-toc-modified-id=\"my_help-2.1\"><span class=\"toc-item-num\">2.1 </span>my_help</a></span><ul class=\"toc-item\"><li><span><a href=\"#my_helpの目的\" data-toc-modified-id=\"my_helpの目的-2.1.1\"><span class=\"toc-item-num\">2.1.1 </span>my_helpの目的</a></span></li><li><span><a href=\"#使用法\" data-toc-modified-id=\"使用法-2.1.2\"><span class=\"toc-item-num\">2.1.2 </span>使用法</a></span></li></ul></li><li><span><a href=\"#optparse\" data-toc-modified-id=\"optparse-2.2\"><span class=\"toc-item-num\">2.2 </span>optparse</a></span></li><li><span><a href=\"#thor\" data-toc-modified-id=\"thor-2.3\"><span class=\"toc-item-num\">2.3 </span>thor</a></span></li><li><span><a href=\"#option\" data-toc-modified-id=\"option-2.4\"><span class=\"toc-item-num\">2.4 </span>option</a></span></li></ul></li><li><span><a href=\"#研究内容\" data-toc-modified-id=\"研究内容-3\"><span class=\"toc-item-num\">3 </span>研究内容</a></span><ul class=\"toc-item\"><li><span><a href=\"#thor化に伴う書き換え(具体的な作業)\" data-toc-modified-id=\"thor化に伴う書き換え(具体的な作業)-3.1\"><span class=\"toc-item-num\">3.1 </span>thor化に伴う書き換え(具体的な作業)</a></span></li><li><span><a href=\"#thorによるサブコマンド\" data-toc-modified-id=\"thorによるサブコマンド-3.2\"><span class=\"toc-item-num\">3.2 </span>thorによるサブコマンド</a></span></li><li><span><a href=\"#exeディレクトリの書き換え\" data-toc-modified-id=\"exeディレクトリの書き換え-3.3\"><span class=\"toc-item-num\">3.3 </span>exeディレクトリの書き換え</a></span></li><li><span><a href=\"#libディレクトリ\" data-toc-modified-id=\"libディレクトリ-3.4\"><span class=\"toc-item-num\">3.4 </span>libディレクトリ</a></span></li><li><span><a href=\"#その他オプション\" data-toc-modified-id=\"その他オプション-3.5\"><span class=\"toc-item-num\">3.5 </span>その他オプション</a></span></li><li><span><a href=\"#オプションの比較\" data-toc-modified-id=\"オプションの比較-3.6\"><span class=\"toc-item-num\">3.6 </span>オプションの比較</a></span><ul class=\"toc-item\"><li><span><a href=\"#optparse版\" data-toc-modified-id=\"optparse版-3.6.1\"><span class=\"toc-item-num\">3.6.1 </span>optparse版</a></span></li><li><span><a href=\"#thor版\" data-toc-modified-id=\"thor版-3.6.2\"><span class=\"toc-item-num\">3.6.2 </span>thor版</a></span></li></ul></li></ul></li><li><span><a href=\"#総括\" data-toc-modified-id=\"総括-4\"><span class=\"toc-item-num\">4 </span>総括</a></span></li><li><span><a href=\"#謝辞\" data-toc-modified-id=\"謝辞-5\"><span class=\"toc-item-num\">5 </span>謝辞</a></span></li><li><span><a href=\"#参考文献\" data-toc-modified-id=\"参考文献-6\"><span class=\"toc-item-num\">6 </span>参考文献</a></span></li></ul></div>"
|
11
|
+
]
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"cell_type": "markdown",
|
15
|
+
"metadata": {},
|
16
|
+
"source": [
|
17
|
+
"# はじめに\n",
|
18
|
+
"\n",
|
19
|
+
"## 目的\n",
|
20
|
+
"\n",
|
21
|
+
"西谷研究室で使われているユーザメモソフト,my helpの振る舞いを制御しているサブコマンドは,マイナスを付した省略記法が取られている.プログラミング初心者にとってこの省略記法は,覚えにくかったりわかりにくかったりするという問題があり,現在はフルワードを使った自然言語に近い記述法が多く用いられている.\n",
|
22
|
+
"そこで,本研究ではコマンドラインツール作成ライブラリを自然言語に近いサブコマンド体系を実装しやすいライブラリであるThorに変更する.rubyの標準ライブラリであるoptparseで作成されているmy helpをThorによって書き直し,異なった2つライブラリで作成されたmy helpの使用感を比較検討することを目的とする.\n",
|
23
|
+
"\n"
|
24
|
+
]
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"cell_type": "markdown",
|
28
|
+
"metadata": {},
|
29
|
+
"source": [
|
30
|
+
"# 基本的事項\n",
|
31
|
+
"\n",
|
32
|
+
"## my_help\n",
|
33
|
+
"\n",
|
34
|
+
"### my_helpの目的\n",
|
35
|
+
"\n",
|
36
|
+
"my helpとは,ユーザー独自のマニュアルを作成することができるユーザメモソフトである.これは,terminalだけを用いて簡単に起動,編集,削除などをすることができるため,非常に便利である.さらに,そのマニュアルは自分ですぐに編集,参照することができるので,メモとしての機能も果たし ている.これにより,プログラミング初心者が,頻繁に使うコマンドやキーバインドなどをいちいちweb browserを立ち上げて調べるのではなく,terminal上で即座に取得できるため,プログラム開発を集中することが期待される.\n",
|
37
|
+
"\n",
|
38
|
+
"メモやtodoリストの作成が行えることや,保存場所を共通化することでどこでも立ち上げることができることなど,emacsのorg-modeと類似している点がいくつか存在する.しかし,明確な相違点も存在する.org-modeはemacsを起動させなければならないが,my helpはemacsを起動させる必要がなくterminalで編集することが可能である.また,org-modeを使用するとなるとorg-mode独自のコマンドを学ぶ必要があり,学習コストがかかってしまう.my_helpにはその必要がなく,非常に単純な操作でアプリを使用することができるので,org-modeの使い方を理解していない初心者にとって使いやすいものとなっている.\n",
|
39
|
+
"\n",
|
40
|
+
"また,アプリやプログラミング言語などの正式なマニュアルは英語で書かれていることが多く,初心者には理解するのが困難である.my_helpを使用すれば,自分なりのマニュアルを作成することができるので,仕様を噛み砕いて理解することが可能である.tarminal上でいつでもメモを参照できるため,どこにメモをしたかを忘れるリスクも軽減される.\n",
|
41
|
+
"\n",
|
42
|
+
"\n",
|
43
|
+
"### 使用法\n",
|
44
|
+
"\n",
|
45
|
+
"インストールする方法だが,gemの標準とは少し方法が異なっている.\n",
|
46
|
+
"まず,githubにあるmy helpのリポジトリをフォーク,クローンすることでローカル(ネットワークに繋がれていない環境)でもmy helpを操作することができるようになる.\n",
|
47
|
+
"\n",
|
48
|
+
"> git clone git@github.com:daddygongon/my_help.git\n",
|
49
|
+
"\n",
|
50
|
+
"これ以降の作業はbundleにて行っていく.\n",
|
51
|
+
"\n",
|
52
|
+
"> bundle update\n",
|
53
|
+
"\n",
|
54
|
+
"を実行することでmy_help.gemspecに記述されている必要なgemsがbundleされる.ここでCould not locate Gemfileとエラーが出た場合は、Gemfileのある場所を探し、その配下に移動してから再びコマンドを入力する.\n",
|
55
|
+
"\n",
|
56
|
+
"> bundle exec exe/my_help\n",
|
57
|
+
"\n",
|
58
|
+
"でmy helpに用意されているコマンドを参照することができる.デフォルトでemacs helpというemacsのヘルプが用意されている.これはemacs helpの他に,省略形のe_hでも表示されるようになっている.\n",
|
59
|
+
"\n",
|
60
|
+
"次に,独自のヘルプを作成する方法であるが,まず,\n",
|
61
|
+
"\n",
|
62
|
+
"> bundle exec exe/my_help -i new_help\n",
|
63
|
+
"\n",
|
64
|
+
"とすることでnew helpという名前のヘルプが作成され,そこにテンプレートが格納される.また,\n",
|
65
|
+
"\n",
|
66
|
+
"> bundle exec exe/my_help -e new_help\n",
|
67
|
+
"\n",
|
68
|
+
"で,自分の好きなように編集することができる.ヘルプが完成したら,\n",
|
69
|
+
"\n",
|
70
|
+
"> bundle exec exe/my_help -m\n",
|
71
|
+
"\n",
|
72
|
+
"とすることでexeディレクトリにnew helpが追加され,new help,n_hが使用可能になるという手順である.\n",
|
73
|
+
"\n",
|
74
|
+
"\n",
|
75
|
+
"## optparse\n",
|
76
|
+
"\n",
|
77
|
+
"今回の研究対象のmy helpは,optparseで実装されている.optparseはRubyの標準ライブラリであり,Rubyでコマンドラインのオプションを操作するためのライブラリである[1].optparseが操作するオプションは,下記のonメソッドで設定する.\n",
|
78
|
+
"\n",
|
79
|
+
"```\n",
|
80
|
+
"def execute\n",
|
81
|
+
" @argv << ’--help’ if @argv.size==0\n",
|
82
|
+
" command_parser = OptionParser.new do |opt|\n",
|
83
|
+
" opt.on(’-v’, ’--version’,’show␣program␣Version.’ ) { |v|\n",
|
84
|
+
" opt.version = MyHelp::VERSION\n",
|
85
|
+
" puts opt.ver\n",
|
86
|
+
" }\n",
|
87
|
+
" opt.on(’-l’, ’--list’, ’list␣specific␣helps’){list_helps}\n",
|
88
|
+
" #中略\n",
|
89
|
+
" end\n",
|
90
|
+
" #中略\n",
|
91
|
+
"end\n",
|
92
|
+
" \n",
|
93
|
+
"def list_helps\n",
|
94
|
+
"#中略\n",
|
95
|
+
"end\n",
|
96
|
+
"#後略\n",
|
97
|
+
"```\n",
|
98
|
+
"\n",
|
99
|
+
"第1引数はショートオプションで,-aや-dのような形で設定する.同様にして,第2引数はロングオプションを表し,--addや--deleteのように,第3引数はそのオプションの説明文で,helpで表示される説明文を設定する.後ろのブロックには,そのオプションが指定された場合に実行されるコードを記述する [2].しかしこのライブラリでは自然言語に近い,ハイフンなしのサブコマンドを実装するには相当な書き換えが必要となる.\n",
|
100
|
+
"\n",
|
101
|
+
"メソッドの引数でオプションを定義し,引数が指定された時の処理をブロックで記述する.ブロックの引数にはオプションが指定されたことを示すtrueが渡される.onメソッドが呼ばれた時点ではオプションは実行されず,定義されるだけである.parseが呼ばれた際,コマンドラインにオプションが登録されていれば実行される.\n",
|
102
|
+
"\n",
|
103
|
+
"オプション定義の際,スペースの後に任意の文字を追加すると,そのオプションは引数を受け取るオプションになる.その文字に[]をつけることで引数は必須でなくなる.また引数がハイフンで始まる場合,オプションとの間にハイフンを2つ挟むことで引数として認識される.\n",
|
104
|
+
"\n",
|
105
|
+
"helpとversionのサブコマンドはデフォルトで作成される.\n",
|
106
|
+
"\n",
|
107
|
+
"## thor\n",
|
108
|
+
"\n",
|
109
|
+
"本研究ではoptparseの代わりのライブラリとしてThorの採用を検討する.Thorは,コマンドラインツールの作成を支援するライブラリであり,gitやbundlerのようにサブコマンドを含むコマンドラインツールを簡単に作成することができる [3].Thorには以下のような特徴がある.\n",
|
110
|
+
"1. コマンドラインオプションのパーズやサブコマンドごとのヘルプを作るなどの面倒な作業を簡単にこなすことができ,手早くビルドツールや実行可能なコマンドを作成できる [4].\n",
|
111
|
+
"1. 特殊なDSL(Domain Specific Language)を使わずにメソッドを定義することで処理を記述するため,テストを行いやすい [4].\n",
|
112
|
+
"1. optparseでは作成することが困難な,マイナスを伴わない(自然言語に近い)サブコマンドを実装することが可能である.\n",
|
113
|
+
"\n",
|
114
|
+
"```\n",
|
115
|
+
"desc 'list, --list', 'list specific helps'\n",
|
116
|
+
" map \"--list\" => \"list\"\n",
|
117
|
+
" def list\n",
|
118
|
+
" print \"Specific help file:\\n\"\n",
|
119
|
+
" local_help_entries.each{|file|\n",
|
120
|
+
" file_path=File.join(@local_help_dir,file)\n",
|
121
|
+
" help = YAML.load(File.read(file_path))\n",
|
122
|
+
" print \" #{file}\\t:#{help[:head][0]}\\n\"\n",
|
123
|
+
" }\n",
|
124
|
+
" end\n",
|
125
|
+
"end\n",
|
126
|
+
"```\n",
|
127
|
+
"\n",
|
128
|
+
"optparseではonメソッドでコマンドの登録を行い,その後のdefでコマンドの振る舞いを定義している.それに対してThorは登録と定義を同時に行うことが可能である.また,Thorを継承したクラスのパブリックメソッドがそのままコマンドになるので非常に簡単にコマンドを作成することが可能である.Thorはコマンドを作成した時点で自動的にヘルプを生成し,コマンドを指定せずにコマンドラインアプリを実行するとヘルプを表示する.\n",
|
129
|
+
"\n",
|
130
|
+
"\n",
|
131
|
+
"![optparse とThor の比較. \\label{opt_thor}](./figs/opt_thor.png)"
|
132
|
+
]
|
133
|
+
},
|
134
|
+
{
|
135
|
+
"cell_type": "markdown",
|
136
|
+
"metadata": {},
|
137
|
+
"source": [
|
138
|
+
"## option\n",
|
139
|
+
"\n",
|
140
|
+
"今日,複雑な機能を持つコマンドが増加している.そのようなコマンドは,オプション(サブコマンド)を使用することで適切な動作を実行することが可能になる.例えばgitコマンドはオプションなしでは意味をなさない.オプションでどのような動作をするかが決まるので,オプションを入力することで正常に動作するのである.\n",
|
141
|
+
"\n",
|
142
|
+
"そもそも,オプションにはショートオプションとロングオプションの2種類がある.ショートオプションはハイフンの後に英字1字を付けた形式のもので,-aや-vなどといったものがショートオプションである.また,ショートオプションは2つ以上のオプションを1つにまとめて実行することもできる.例えば,-l,-a,-tの3つのオプションを1つにまとめて-latとして実行することが可能である.それに対してロングオプションは,ハイフン2つの後に英字2字以上を付けることができる形式である.例えば--allや--versionなどである.ロングオプションは英字を2字以上使用することができるので,どのようなオプションであるかを明確にするために一般的にフルワードが採用されている.--no-の形にすることで否定形のオプションを作成することも可能である.ロングオプションはショートオプションのように複数のオプションを1つにまとめることは不可能であり,1つ1つをスペースで区切る必要がある.\n",
|
143
|
+
"\n",
|
144
|
+
"ショートオプションを設定する際,英字1文字しか使用することができないので基本的には対応づけられたロングオプション(そのオプションがどのような動作を行うのかを表す単語)の頭文字であることが多く,慣れている人であればショートオプションを使うことで素早くアプリケーションを動かすことが可能である.しかし,用いるアプリが1つであるとは限らないし,全てのアプリのショートオプションを統一するのも困難である.またinitialとinstallなど,頭文字が重複してしまう2つのオプションがある場合,-iというショートオプションがinitialを意味するのかinstallを意味するのかを判断するのは,初心者には容易ではなく,混乱を引き起こしかねない.そのため,ヒューマンエラーを引き起こしてしまったり,学習コストがかかってしまったりすることがある.\n",
|
145
|
+
"\n",
|
146
|
+
"ショートオプションの場合,複数のオプションを一つにまとめることができると記述したが,これは引数を必要としないオプションの場合である.引数を必要とするオプションの場合,2文字目以降の英字は引数扱いになってしまう.例えば上に示した-latにおいて,-lが引数を必要とするオプションであれば,-latはatという引数が与えられた-lという風に解釈されてしまうので注意が必要である.そういった点においてもショートオプションは初心者にとって扱いにくい形式であると言える.\n",
|
147
|
+
"\n",
|
148
|
+
"Command line applicationのオプションの記述方法には幾つもの流儀があるようで\n",
|
149
|
+
"何らかの標準があるわけではない.\n",
|
150
|
+
"しかし,それら全てに対応することはできず,なんらかの\n",
|
151
|
+
"基準に従ってオプション記法を解釈する必要がある.\n",
|
152
|
+
"\n",
|
153
|
+
"ここでは,\n",
|
154
|
+
"\"Build awesome command-line application in ruby 2\"に従って\n",
|
155
|
+
"オプション記法と用語をまとめておく.\n",
|
156
|
+
"\n",
|
157
|
+
"コマンドラインの基本形は,\n",
|
158
|
+
"\n",
|
159
|
+
"> ls -lat dir_name\n",
|
160
|
+
"\n",
|
161
|
+
"というように\n",
|
162
|
+
"\n",
|
163
|
+
"> executabel options arguments\n",
|
164
|
+
"\n",
|
165
|
+
"での形であった.これは,GNU標準に基本構造が記載されている.\n",
|
166
|
+
"\n",
|
167
|
+
"その後,幾つかのswitchやflagを組み合わせて,複雑な\n",
|
168
|
+
"命令を解釈できるようにするに従って,\n",
|
169
|
+
"\n",
|
170
|
+
"> grep --igonre-case -C 4 \"some string\" /tmp\n",
|
171
|
+
"\n",
|
172
|
+
"などとほぼ呪文のような形態となってきた.\n",
|
173
|
+
"\n",
|
174
|
+
"その後,command line suiteと呼ばれる一群のcommand line applicationが登場した.典型的なのはgitである[5].\n",
|
175
|
+
"\n",
|
176
|
+
"gitはlinuxのバックアップを分散処理するために,\n",
|
177
|
+
"Linus Torvaldsが開発したものであるが,いくつもの\n",
|
178
|
+
"機能に従ってそれぞれ個別のコマンドが用意されていた.\n",
|
179
|
+
"それぞれ,git-commitとかgit-fetchなどであった.\n",
|
180
|
+
"それがある時,すべてをまとめてsuiteとして\n",
|
181
|
+
"パッケージし直され,1つのまとまったcommandとして提供された.\n",
|
182
|
+
"すなわち,git commitやgit fetchなどである[6]."
|
183
|
+
]
|
184
|
+
},
|
185
|
+
{
|
186
|
+
"cell_type": "markdown",
|
187
|
+
"metadata": {},
|
188
|
+
"source": [
|
189
|
+
"# 研究内容"
|
190
|
+
]
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"cell_type": "markdown",
|
194
|
+
"metadata": {},
|
195
|
+
"source": [
|
196
|
+
"## thor化に伴う書き換え(具体的な作業)\n",
|
197
|
+
"\n",
|
198
|
+
"optparseからthorへの書き換えの際,第一に必要となるのは,~.gemspecファイル内にThorがインストールされるように変更を加えることである.\n",
|
199
|
+
"\n",
|
200
|
+
"```\n",
|
201
|
+
"spec.add_development_dependency \"thor\"\n",
|
202
|
+
"```\n",
|
203
|
+
"\n",
|
204
|
+
"この記述は,作成しているコマンドラインツールがThorに依存性を持つことを意味している.optparseで書いた場合は,Thorに依存性を持つ必要がなく,当然このような記述はされていないので,上の一文を書き加える必要がある.また,bundle updateをターミナル上で実行することで,ローカルでのコマンドラインツールを実行した際にThorが適用されるようにアップデートされる.そうすることで,Thorの記述が実際にソースファイルで使用できるようになる.\n",
|
205
|
+
"\n",
|
206
|
+
"## thorによるサブコマンド\n",
|
207
|
+
"\n",
|
208
|
+
"次に,コマンドが呼ばれる流れについて説明する.\n",
|
209
|
+
"\n",
|
210
|
+
"1. コマンドを実行する.\n",
|
211
|
+
"1. コマンドを実行すると,exeディレクトリの中にあるコマンド名と同じ名前のファイル(以降コマンドファイルと呼ぶ)が実行される.\n",
|
212
|
+
"1. コマンドファイル内でlibディレクトリ内のソースファイルをrequireしておき,クラス内のコマンドを解析する関数を呼び出す.\n",
|
213
|
+
"1. ソースファイル内に書かれた処理が実行される.\n",
|
214
|
+
"\n",
|
215
|
+
"このような流れでコマンドが呼び出され,処理が行われる.Thorとoptpaseの差異は4.におけるコマンドの解析による処理関数への中継の方法である.\n",
|
216
|
+
"\n",
|
217
|
+
"## exeディレクトリの書き換え\n",
|
218
|
+
"\n",
|
219
|
+
"exeディレクトリの中にあるコマンドファイルについて書き換えを行う.まずはoptparseを使用した際のコマンドファイルの記述を記載する.\n",
|
220
|
+
"\n",
|
221
|
+
"```\n",
|
222
|
+
"!/usr/bin/env ruby \n",
|
223
|
+
"require \"my_help_opt\"\n",
|
224
|
+
"\n",
|
225
|
+
"MyHelp::Command.run(ARGV)\n",
|
226
|
+
"```\n",
|
227
|
+
"\n",
|
228
|
+
"optparseの場合,MyHelp::Command.run(ARGV)というクラス関数を実行することでコマンドを呼び出している.しかし,Thorはoptparseのようにrun(ARGV)を用いず,start(ARGV)というクラス関数を実行してコマンドを呼び出す.よって,runをstartに書き換える作業が必要になる.以下にThorを使用した際のコマンドファイルの記述を記載する.\n",
|
229
|
+
"\n",
|
230
|
+
"```\n",
|
231
|
+
"!/usr/bin/env ruby \n",
|
232
|
+
"require \"my_help_thor\"\n",
|
233
|
+
"\n",
|
234
|
+
"MyHelp::Command.start(ARGV)\n",
|
235
|
+
"```\n",
|
236
|
+
"\n",
|
237
|
+
"## libディレクトリ\n",
|
238
|
+
"\n",
|
239
|
+
"まず,self.runについてであるが,Thorでは使用されないのでこの一文は削除する.次にinitializeであるが,こちらについては変更が必要である.そもそもinitializeとはmy_helpを動かすのに必要なディレクトリがあるかどうかを調べるメソッドであり,なければここで作ることができる.optparseのinitializeではargv=[]となっているところをThorでは(アスタリスク)argvとする必要がある.また,大きな違いはsuperの有無である.optparseではsuperは必要ないのだが,Thorでは必要になる.これは,\n",
|
240
|
+
"\n",
|
241
|
+
"## その他オプション\n",
|
242
|
+
"\n",
|
243
|
+
"optparseではコマンド実行の際,引数の解析を行い,その引数に合わせた関数を呼び出す,という手順で動作している.その手順を記述した関数がexecuteである.\n",
|
244
|
+
"\n",
|
245
|
+
"```\n",
|
246
|
+
"def execute\n",
|
247
|
+
" @argv << '--help' if @argv.size==0\n",
|
248
|
+
" command_parser = OptionParser.new do |opt|\n",
|
249
|
+
" opt.on('-v', '--version','show program Version.') { |v|\n",
|
250
|
+
" opt.version = MyHelp::VERSION\n",
|
251
|
+
" puts opt.ver\n",
|
252
|
+
" }\n",
|
253
|
+
" \n",
|
254
|
+
" opt.on('-l', '--list', 'list specific helps'){list_helps}\n",
|
255
|
+
" opt.on('-e NAME', '--edit NAME', 'edit NAME help(eg test_help)'){|file| edit_help(file)}\n",
|
256
|
+
" opt.on('-i NAME', '--init NAME', 'initialize NAME help(eg test_help).'){|file| init_help(file)}\n",
|
257
|
+
" opt.on('-m', '--make', 'make executables for all helps.'){make_help}\n",
|
258
|
+
" opt.on('-c', '--clean', 'clean up exe dir.'){clean_exe}\n",
|
259
|
+
" opt.on('--install_local','install local after edit helps'){install_local}\n",
|
260
|
+
" opt.on('--delete NAME','delete NAME help'){|file| delete_help(file)}\n",
|
261
|
+
" end\n",
|
262
|
+
" \n",
|
263
|
+
" begin\n",
|
264
|
+
" command_parser.parse!(@argv)\n",
|
265
|
+
" rescue=> eval\n",
|
266
|
+
" p eval\n",
|
267
|
+
" end\n",
|
268
|
+
" exit\n",
|
269
|
+
"end\n",
|
270
|
+
"```\n",
|
271
|
+
"\n",
|
272
|
+
"しかしThorの場合,executeのような間を取り持つ関数を用意する必要がなく,関数自体をコマンドとして登録していく形をとっているので,この関数は不必要である.以下にThorでの関数宣言を記載する.optparseno場合,-iというコマンドで呼び出されている処理をinitというコマンドで呼び出されるように書き換えたのが以下の関数である.\n",
|
273
|
+
"\n",
|
274
|
+
"```\n",
|
275
|
+
"desc 'init NAME, --init NAME', 'initialize NAME help(eg test_help).'\n",
|
276
|
+
" 関数についての説明,ここがヘルプで表示される.\n",
|
277
|
+
"map \"--init\" => \"init\"\n",
|
278
|
+
" --オプションでも呼び出すことが可能.\n",
|
279
|
+
"def init(file)\n",
|
280
|
+
"以下は変更なし\n",
|
281
|
+
" p target_help=File.join(@local_help_dir,file)\n",
|
282
|
+
" if File::exists?(target_help)\n",
|
283
|
+
" puts \"File exists. rm it first to initialize it.\"\n",
|
284
|
+
" exit\n",
|
285
|
+
" end\n",
|
286
|
+
" p template = File.join(@default_help_dir,'template_help')\n",
|
287
|
+
" FileUtils::Verbose.cp(template,target_help)\n",
|
288
|
+
"end\n",
|
289
|
+
"```\n",
|
290
|
+
"\n",
|
291
|
+
"このように書き換えることで,Thorを使用したオプションの設定を行うことができるのだが,実際に動かしてみるとエラーが表示されることがある.ここで表示されるエラーは,コマンドとして設定されていない関数があることについての警告文である.その関数はコマンドとして使用しないということを明確に記述することでこの警告を消すことが可能である.\n",
|
292
|
+
"\n",
|
293
|
+
"```\n",
|
294
|
+
"no_commands do\n",
|
295
|
+
"\n",
|
296
|
+
" この間にコマンド設定しない関数を記述\n",
|
297
|
+
"\n",
|
298
|
+
"end\n",
|
299
|
+
"```\n",
|
300
|
+
"\n",
|
301
|
+
"## オプションの比較\n",
|
302
|
+
"\n",
|
303
|
+
"オプションを省略記法から自然言語に近い記法に変更したことでより直感的なコマンド入力が可能になると思われる.\n",
|
304
|
+
"\n",
|
305
|
+
"### optparse版\n",
|
306
|
+
"\n",
|
307
|
+
"Usage: my_help [options] \n",
|
308
|
+
"\n",
|
309
|
+
"-v, --version show program Version.\n",
|
310
|
+
"\n",
|
311
|
+
"-l, --list 個別(specific)ヘルプのList表示.\n",
|
312
|
+
"\n",
|
313
|
+
"-e, --edit NAME NAME(例:test_help)をEdit編集. \n",
|
314
|
+
"\n",
|
315
|
+
"-i, --init NAME NAME(例:test_help)のtemplateを作成. \n",
|
316
|
+
"\n",
|
317
|
+
"-m, --make make executables for all helps. \n",
|
318
|
+
"\n",
|
319
|
+
"-c, --clean clean up exe dir. \n",
|
320
|
+
"\n",
|
321
|
+
"--install_local install local after edit helps \n",
|
322
|
+
"\n",
|
323
|
+
"--delete NAME delete NAME help\n",
|
324
|
+
"\n",
|
325
|
+
"### thor版\n",
|
326
|
+
"\n",
|
327
|
+
"Commands:\n",
|
328
|
+
"\n",
|
329
|
+
" my_help clean, --clean clean up exe dir.\n",
|
330
|
+
" \n",
|
331
|
+
" my_help delete NAME, --delete NAME delete NAME help\n",
|
332
|
+
" \n",
|
333
|
+
" my_help edit NAME, --edit NAME edit NAME help(eg test_help)\n",
|
334
|
+
" \n",
|
335
|
+
" my_help help [COMMAND] Describe available commands or one specific command\n",
|
336
|
+
" \n",
|
337
|
+
" my_help init NAME, --init NAME initialize NAME help(eg test_help).\n",
|
338
|
+
" \n",
|
339
|
+
" my_help install_local, --install_local install local after edit helps\n",
|
340
|
+
" \n",
|
341
|
+
" my_help list, --list list specific helps\n",
|
342
|
+
" \n",
|
343
|
+
" my_help make, --make make executables for all helps.\n",
|
344
|
+
" \n",
|
345
|
+
" my_help version, -v show program version"
|
346
|
+
]
|
347
|
+
},
|
348
|
+
{
|
349
|
+
"cell_type": "markdown",
|
350
|
+
"metadata": {},
|
351
|
+
"source": [
|
352
|
+
"# 総括\n",
|
353
|
+
"\n",
|
354
|
+
"今回の研究では,ユーザメモソフトであるmy helpのthorによる書き換えを行った.この書き換えによる成果は以下の通りである.\n",
|
355
|
+
"\n",
|
356
|
+
"1. オプションの記法を-(ハイフン)を用いた省略記法からフルワードを用いた自然言語に近い記法に変更した.これにより,初心者でも直感的にオプションを使用することができ,学習コストの削減,学習効率の向上に繋がると考えられる.\n",
|
357
|
+
"\n",
|
358
|
+
"1. thorを用いることによってoptparseを用いた時よりもソースコードを短くすることに成功した."
|
359
|
+
]
|
360
|
+
},
|
361
|
+
{
|
362
|
+
"cell_type": "markdown",
|
363
|
+
"metadata": {
|
364
|
+
"collapsed": true
|
365
|
+
},
|
366
|
+
"source": [
|
367
|
+
"# 謝辞\n",
|
368
|
+
"\n",
|
369
|
+
"本研究を行うにあたって,終始多大なるご指導,ご鞭撻を頂いた関西学院大学理工学部情報科学科西谷滋人教授に対し,深く御礼申し上げます.また,本研究の進行に伴い,様々な助力,協力をして頂きました西谷研究室の先輩方,同輩達に心から感謝いたします.西谷研究室の益々のご発展,ご多幸を心よりお祈り申し上げます."
|
370
|
+
]
|
371
|
+
},
|
372
|
+
{
|
373
|
+
"cell_type": "markdown",
|
374
|
+
"metadata": {},
|
375
|
+
"source": [
|
376
|
+
"# 参考文献\n",
|
377
|
+
"\n",
|
378
|
+
"[1] library optparse, https://docs.ruby-lang.org/ja/latest/library/optparse.html accessed 2018.2.9.\n",
|
379
|
+
"\n",
|
380
|
+
"[2] コマンドライン引数によるオプションに対応する (optparse), http://maku77.github.io/ruby/io/optparse.html accessed 2018.2.1.\n",
|
381
|
+
"\n",
|
382
|
+
"[3] S.Koichiro, Thorの使い方まとめ, https://qiita.com/succi0303/items/32560103190436c9435b accessed 2018.2.9.\n",
|
383
|
+
"\n",
|
384
|
+
"[4] Thorで簡単にコマンドラインアプリをつくる, http://note.hibariya.org/entries/20111025/a0.html 2018.2.9.\n",
|
385
|
+
"\n",
|
386
|
+
"[5] David Bryant Copeland, Build Awesome Command-Line Applications in Ruby 2, (Pragmatic Bookshelf, 2013), pp.14-5.\n",
|
387
|
+
"\n",
|
388
|
+
"[6] David Bryant Copeland, Build Awesome Command-Line Applications in Ruby 2, (Pragmatic Bookshelf, 2013), p.16."
|
389
|
+
]
|
390
|
+
},
|
391
|
+
{
|
392
|
+
"cell_type": "code",
|
393
|
+
"execution_count": null,
|
394
|
+
"metadata": {
|
395
|
+
"collapsed": true
|
396
|
+
},
|
397
|
+
"outputs": [],
|
398
|
+
"source": []
|
399
|
+
}
|
400
|
+
],
|
401
|
+
"metadata": {
|
402
|
+
"kernelspec": {
|
403
|
+
"display_name": "Ruby 2.3.3",
|
404
|
+
"language": "ruby",
|
405
|
+
"name": "ruby"
|
406
|
+
},
|
407
|
+
"language_info": {
|
408
|
+
"file_extension": ".rb",
|
409
|
+
"mimetype": "application/x-ruby",
|
410
|
+
"name": "ruby",
|
411
|
+
"version": "2.3.3"
|
412
|
+
},
|
413
|
+
"latex_envs": {
|
414
|
+
"LaTeX_envs_menu_present": true,
|
415
|
+
"autocomplete": true,
|
416
|
+
"bibliofile": "biblio.bib",
|
417
|
+
"cite_by": "apalike",
|
418
|
+
"current_citInitial": 1,
|
419
|
+
"eqLabelWithNumbers": true,
|
420
|
+
"eqNumInitial": 1,
|
421
|
+
"hotkeys": {
|
422
|
+
"equation": "Ctrl-E",
|
423
|
+
"itemize": "Ctrl-I"
|
424
|
+
},
|
425
|
+
"labels_anchors": false,
|
426
|
+
"latex_user_defs": false,
|
427
|
+
"report_style_numbering": false,
|
428
|
+
"user_envs_cfg": false
|
429
|
+
},
|
430
|
+
"toc": {
|
431
|
+
"nav_menu": {},
|
432
|
+
"number_sections": true,
|
433
|
+
"sideBar": true,
|
434
|
+
"skip_h1_title": false,
|
435
|
+
"toc_cell": true,
|
436
|
+
"toc_position": {
|
437
|
+
"height": "529px",
|
438
|
+
"left": "0px",
|
439
|
+
"right": "926.2000122070313px",
|
440
|
+
"top": "106px",
|
441
|
+
"width": "152px"
|
442
|
+
},
|
443
|
+
"toc_section_display": "block",
|
444
|
+
"toc_window_display": false
|
445
|
+
}
|
446
|
+
},
|
447
|
+
"nbformat": 4,
|
448
|
+
"nbformat_minor": 2
|
449
|
+
}
|