tdiary 3.2.2.20130507
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +16 -0
- data/.travis.yml +29 -0
- data/Capfile +2 -0
- data/ChangeLog +3173 -0
- data/Gemfile +58 -0
- data/Gemfile.lock +201 -0
- data/LICENSE +340 -0
- data/Procfile +1 -0
- data/README.md +33 -0
- data/Rakefile +26 -0
- data/bin/tdiary +7 -0
- data/config.ru +61 -0
- data/data/.htaccess +2 -0
- data/doc/HOWTO-authenticate-in-rack.md +89 -0
- data/doc/HOWTO-make-io.md +305 -0
- data/doc/HOWTO-make-plugin.md +279 -0
- data/doc/HOWTO-make-theme.md +67 -0
- data/doc/HOWTO-testing-tDiary.md +44 -0
- data/doc/HOWTO-use-plugin.md +148 -0
- data/doc/HOWTO-write-tDiary.en.md +131 -0
- data/doc/HOWTO-write-tDiary.md +136 -0
- data/doc/INSTALL-paas.md +202 -0
- data/doc/INSTALL.md +160 -0
- data/doc/README.en.md +174 -0
- data/doc/README.md +56 -0
- data/doc/UPGRADE.md +164 -0
- data/doc/doc.css +115 -0
- data/dot.htaccess +27 -0
- data/index.fcgi +45 -0
- data/index.rb +57 -0
- data/js/00default.js +60 -0
- data/js/01conf.js +62 -0
- data/js/02edit.coffee +5 -0
- data/js/02edit.js +15 -0
- data/js/amazon.js +43 -0
- data/js/calendar3.js +130 -0
- data/js/caretposition.js +170 -0
- data/js/category.js +29 -0
- data/js/category_autocomplete.js +96 -0
- data/js/comment_ajax.js +27 -0
- data/js/draft.js +149 -0
- data/js/highlight.js +36 -0
- data/js/image.js +181 -0
- data/misc/convert2.rb +123 -0
- data/misc/filter/antispamservice.rb +101 -0
- data/misc/filter/limitdays.rb +40 -0
- data/misc/filter/linkcheck.rb +81 -0
- data/misc/filter/plugin/antispamservice.rb +82 -0
- data/misc/filter/plugin/en/antispamservice.rb +21 -0
- data/misc/filter/plugin/ja/antispamservice.rb +20 -0
- data/misc/lib/README +4 -0
- data/misc/lib/compatible.rb +1 -0
- data/misc/lib/fcgi_patch.rb +90 -0
- data/misc/migrate.rb +157 -0
- data/misc/paas/cloudfoundry/Gemfile +26 -0
- data/misc/paas/cloudfoundry/Gemfile.lock +85 -0
- data/misc/paas/heroku/Gemfile +22 -0
- data/misc/paas/heroku/Gemfile.lock +85 -0
- data/misc/paas/sqale/Gemfile +19 -0
- data/misc/paas/sqale/Gemfile.lock +85 -0
- data/misc/paas/sqale/Procfile +1 -0
- data/misc/paas/sqale/dot.env +1 -0
- data/misc/plugin/ChangeLog.DO_NOT_UPDATE +2333 -0
- data/misc/plugin/a.rb +211 -0
- data/misc/plugin/amazon.rb +403 -0
- data/misc/plugin/amazon/README.en +17 -0
- data/misc/plugin/amazon/README.ja +29 -0
- data/misc/plugin/amazon/amazonimg.rb +113 -0
- data/misc/plugin/amazon/large.png +0 -0
- data/misc/plugin/amazon/medium.png +0 -0
- data/misc/plugin/amazon/small.png +0 -0
- data/misc/plugin/append-css.rb +51 -0
- data/misc/plugin/bq.rb +48 -0
- data/misc/plugin/calendar2.rb +184 -0
- data/misc/plugin/calendar3.rb +256 -0
- data/misc/plugin/category.rb +779 -0
- data/misc/plugin/category_autocomplete.rb +33 -0
- data/misc/plugin/comment_ajax.rb +11 -0
- data/misc/plugin/comment_mail-qmail.rb +57 -0
- data/misc/plugin/comment_mail-sendmail.rb +56 -0
- data/misc/plugin/comment_mail-smtp.rb +59 -0
- data/misc/plugin/comment_rank.rb +36 -0
- data/misc/plugin/counter.rb +631 -0
- data/misc/plugin/daily_theme.rb +55 -0
- data/misc/plugin/disp_referrer.rb +1486 -0
- data/misc/plugin/doctype-html401tr.rb +16 -0
- data/misc/plugin/draft.rb +20 -0
- data/misc/plugin/dropdown_calendar.rb +32 -0
- data/misc/plugin/edit_today.rb +50 -0
- data/misc/plugin/en/a.rb +10 -0
- data/misc/plugin/en/amazon.rb +71 -0
- data/misc/plugin/en/append-css.rb +17 -0
- data/misc/plugin/en/bq.rb +12 -0
- data/misc/plugin/en/calendar2.rb +12 -0
- data/misc/plugin/en/category.rb +204 -0
- data/misc/plugin/en/counter.rb +48 -0
- data/misc/plugin/en/daily_theme.rb +14 -0
- data/misc/plugin/en/disp_referrer.rb +387 -0
- data/misc/plugin/en/dropdown_calendar.rb +14 -0
- data/misc/plugin/en/edit_today.rb +22 -0
- data/misc/plugin/en/hide-mail-field.rb +19 -0
- data/misc/plugin/en/highlight.rb +29 -0
- data/misc/plugin/en/image.rb +54 -0
- data/misc/plugin/en/kw.rb +22 -0
- data/misc/plugin/en/makerss.rb +47 -0
- data/misc/plugin/en/pb-show.rb +21 -0
- data/misc/plugin/en/ping.rb +16 -0
- data/misc/plugin/en/recent_comment.rb +44 -0
- data/misc/plugin/en/recent_comment3.rb +56 -0
- data/misc/plugin/en/recent_rss.rb +33 -0
- data/misc/plugin/en/referer_scheme.rb +48 -0
- data/misc/plugin/en/search_control.rb +74 -0
- data/misc/plugin/en/search_form.rb +22 -0
- data/misc/plugin/en/speed_comment.rb +19 -0
- data/misc/plugin/en/tb-show.rb +37 -0
- data/misc/plugin/en/todo.rb +43 -0
- data/misc/plugin/en/weather.rb +185 -0
- data/misc/plugin/en/xmlrpc.rb +14 -0
- data/misc/plugin/footnote.rb +92 -0
- data/misc/plugin/gradation.rb +39 -0
- data/misc/plugin/gradient.rb +36 -0
- data/misc/plugin/hide-mail-field.rb +50 -0
- data/misc/plugin/highlight.rb +22 -0
- data/misc/plugin/html_anchor.rb +34 -0
- data/misc/plugin/image.rb +290 -0
- data/misc/plugin/ja/amazon.rb +89 -0
- data/misc/plugin/ja/bq.rb +13 -0
- data/misc/plugin/ja/calendar2.rb +12 -0
- data/misc/plugin/ja/category.rb +212 -0
- data/misc/plugin/ja/daily_theme.rb +15 -0
- data/misc/plugin/ja/disp_referrer.rb +644 -0
- data/misc/plugin/ja/edit_today.rb +23 -0
- data/misc/plugin/ja/hide-mail-field.rb +20 -0
- data/misc/plugin/ja/highlight.rb +30 -0
- data/misc/plugin/ja/makerss.rb +44 -0
- data/misc/plugin/ja/my-sequel.rb +52 -0
- data/misc/plugin/ja/pb-show.rb +23 -0
- data/misc/plugin/ja/ping.rb +17 -0
- data/misc/plugin/ja/recent_comment.rb +45 -0
- data/misc/plugin/ja/recent_comment3.rb +57 -0
- data/misc/plugin/ja/recent_rss.rb +34 -0
- data/misc/plugin/ja/referer_scheme.rb +86 -0
- data/misc/plugin/ja/search_control.rb +75 -0
- data/misc/plugin/ja/search_form.rb +32 -0
- data/misc/plugin/ja/tb-show.rb +38 -0
- data/misc/plugin/ja/todo.rb +46 -0
- data/misc/plugin/ja/weather.rb +402 -0
- data/misc/plugin/ja/xmlrpc.rb +15 -0
- data/misc/plugin/kw.rb +150 -0
- data/misc/plugin/list.rb +40 -0
- data/misc/plugin/makelirs.rb +89 -0
- data/misc/plugin/makerss.rb +744 -0
- data/misc/plugin/my-ex.rb +68 -0
- data/misc/plugin/my-sequel.rb +539 -0
- data/misc/plugin/navi_user.rb +19 -0
- data/misc/plugin/number_anchor.rb +47 -0
- data/misc/plugin/pb-show.rb +165 -0
- data/misc/plugin/ping.rb +99 -0
- data/misc/plugin/pre_wrap.rb +19 -0
- data/misc/plugin/random_google.rb +165 -0
- data/misc/plugin/recent_comment.rb +82 -0
- data/misc/plugin/recent_comment3.rb +192 -0
- data/misc/plugin/recent_list.rb +91 -0
- data/misc/plugin/recent_namazu.rb +50 -0
- data/misc/plugin/recent_rss.rb +305 -0
- data/misc/plugin/referer-antibot.rb +53 -0
- data/misc/plugin/referer-utf8.rb +12 -0
- data/misc/plugin/referer_scheme.rb +87 -0
- data/misc/plugin/search_control.rb +227 -0
- data/misc/plugin/search_form.rb +53 -0
- data/misc/plugin/sn.rb +107 -0
- data/misc/plugin/speed_comment.rb +68 -0
- data/misc/plugin/squeeze.rb +272 -0
- data/misc/plugin/src.rb +30 -0
- data/misc/plugin/tb-show.rb +212 -0
- data/misc/plugin/title_list.rb +41 -0
- data/misc/plugin/title_tag.rb +80 -0
- data/misc/plugin/tlink.rb +163 -0
- data/misc/plugin/todo.rb +182 -0
- data/misc/plugin/weather.rb +505 -0
- data/misc/plugin/whatsnew.rb +100 -0
- data/misc/plugin/xmlrpc.rb +80 -0
- data/misc/plugin/xmlrpc/README +20 -0
- data/misc/plugin/xmlrpc/xmlrpc.rb +575 -0
- data/misc/style/emptdiary/README.rd +83 -0
- data/misc/style/emptdiary/README.rd.en +78 -0
- data/misc/style/emptdiary/emptdiary_style.rb +199 -0
- data/misc/style/etdiary/README.rd +83 -0
- data/misc/style/etdiary/etdiary_style.rb +446 -0
- data/misc/style/gfm/gfm_style.rb +194 -0
- data/misc/style/rd/README.rd +71 -0
- data/misc/style/rd/rd_style.rb +366 -0
- data/misc/style/wiki/README +116 -0
- data/misc/style/wiki/README.en +101 -0
- data/misc/style/wiki/wiki_parser.rb +273 -0
- data/misc/style/wiki/wiki_style.rb +478 -0
- data/misc/theme_convert/Readme.rd +21 -0
- data/misc/theme_convert/append.rcss +150 -0
- data/misc/theme_convert/theme_convert.rb +453 -0
- data/plugin/00default.rb +1015 -0
- data/plugin/05referer.rb +298 -0
- data/plugin/10spamfilter.rb +183 -0
- data/plugin/50sp.rb +146 -0
- data/plugin/60sf.rb +152 -0
- data/plugin/90migrate.rb +109 -0
- data/plugin/en/00default.rb +390 -0
- data/plugin/en/05referer.rb +49 -0
- data/plugin/en/10spamfilter.rb +81 -0
- data/plugin/en/50sp.rb +56 -0
- data/plugin/en/60sf.rb +60 -0
- data/plugin/ja/00default.rb +401 -0
- data/plugin/ja/05referer.rb +47 -0
- data/plugin/ja/10spamfilter.rb +79 -0
- data/plugin/ja/50sp.rb +66 -0
- data/plugin/ja/60sf.rb +73 -0
- data/public/.gitkeep +0 -0
- data/public/images/.gitkeep +0 -0
- data/public/javascripts/.gitkeep +0 -0
- data/public/stylesheets/.gitkeep +0 -0
- data/skel/category.rhtml +9 -0
- data/skel/conf.rhtml +23 -0
- data/skel/day.rhtml +33 -0
- data/skel/diary.rhtml +83 -0
- data/skel/footer.rhtml +8 -0
- data/skel/header.rhtml +10 -0
- data/skel/i.category.rhtml +6 -0
- data/skel/i.conf.rhtml +14 -0
- data/skel/i.day.rhtml +28 -0
- data/skel/i.diary.rhtml +17 -0
- data/skel/i.footer.rhtml +2 -0
- data/skel/i.header.rhtml +3 -0
- data/skel/i.latest.rhtml +24 -0
- data/skel/i.month.rhtml +39 -0
- data/skel/i.search.rhtml +5 -0
- data/skel/i.update.rhtml +40 -0
- data/skel/i.update.rhtml.en +40 -0
- data/skel/latest.rhtml +27 -0
- data/skel/mail.rtxt +18 -0
- data/skel/mail.rtxt.en +18 -0
- data/skel/month.rhtml +27 -0
- data/skel/plugin_error.rhtml +27 -0
- data/skel/preview.rhtml +85 -0
- data/skel/preview.rhtml.en +72 -0
- data/skel/referer.rhtml +24 -0
- data/skel/search.rhtml +14 -0
- data/skel/tdiary.rconf +76 -0
- data/skel/update.rhtml +103 -0
- data/skel/update.rhtml.en +83 -0
- data/spec/acceptance/append_comment_spec.rb +94 -0
- data/spec/acceptance/append_diary_spec.rb +98 -0
- data/spec/acceptance/bugfix/encoding_error_spec.rb +27 -0
- data/spec/acceptance/save_conf_comment_spec.rb +87 -0
- data/spec/acceptance/save_conf_default_spec.rb +169 -0
- data/spec/acceptance/save_conf_dnsbl_spec.rb +152 -0
- data/spec/acceptance/save_conf_filter_spec.rb +50 -0
- data/spec/acceptance/save_conf_plugin_spec.rb +69 -0
- data/spec/acceptance/save_conf_referer_spec.rb +60 -0
- data/spec/acceptance/save_conf_security_spec.rb +280 -0
- data/spec/acceptance/support/helpers.rb +49 -0
- data/spec/acceptance/support/paths.rb +7 -0
- data/spec/acceptance/update_diary_spec.rb +113 -0
- data/spec/acceptance/view_category_spec.rb +38 -0
- data/spec/acceptance/view_comment_spec.rb +67 -0
- data/spec/acceptance/view_diary_spec.rb +126 -0
- data/spec/acceptance/view_referer_spec.rb +31 -0
- data/spec/acceptance_helper.rb +101 -0
- data/spec/core/compatible_spec.rb +54 -0
- data/spec/core/core_ext_spec.rb +59 -0
- data/spec/core/plugin_spec.rb +389 -0
- data/spec/core/rack/assets/precompile_spec.rb +76 -0
- data/spec/core/rack/html_anchor_spec.rb +57 -0
- data/spec/core/rack/valid_request_path_spec.rb +67 -0
- data/spec/core/style/emptdiary_style_spec.rb +165 -0
- data/spec/core/style/etdiary_style_spec.rb +512 -0
- data/spec/core/style/gfm_style_spec.rb +334 -0
- data/spec/core/style/rd_style_spec.rb +202 -0
- data/spec/core/style/tdiary_style_spec.rb +240 -0
- data/spec/core/style/wiki_style_spec.rb +441 -0
- data/spec/fixtures/ascii8bit-pstore.db +0 -0
- data/spec/fixtures/invalid-sequence-volatile.tdr +9 -0
- data/spec/fixtures/just_installed.conf +1 -0
- data/spec/fixtures/plugin/ja/sample.rb +4 -0
- data/spec/fixtures/plugin/sample.rb +6 -0
- data/spec/fixtures/sample.rb +12 -0
- data/spec/fixtures/tdiary.conf.gem +212 -0
- data/spec/fixtures/tdiary.conf.rack +212 -0
- data/spec/fixtures/tdiary.conf.rdb +227 -0
- data/spec/fixtures/tdiary.conf.secure +204 -0
- data/spec/fixtures/tdiary.conf.webrick +212 -0
- data/spec/javascripts/00default_spec.js +35 -0
- data/spec/javascripts/fixtures/00default.html +1 -0
- data/spec/javascripts/support/jasmine.yml +76 -0
- data/spec/plugin/bq_spec.rb +24 -0
- data/spec/plugin/plugin_helper.rb +203 -0
- data/spec/spec_helper.rb +32 -0
- data/tdiary.conf.beginner +244 -0
- data/tdiary.conf.sample +345 -0
- data/tdiary.conf.sample-en +333 -0
- data/tdiary.gemspec +26 -0
- data/tdiary.rb +151 -0
- data/tdiary/admin.rb +236 -0
- data/tdiary/application.rb +57 -0
- data/tdiary/author_only_base.rb +171 -0
- data/tdiary/base.rb +220 -0
- data/tdiary/cli.rb +116 -0
- data/tdiary/comment.rb +40 -0
- data/tdiary/comment_manager.rb +94 -0
- data/tdiary/compatible.rb +72 -0
- data/tdiary/config.rb +270 -0
- data/tdiary/core_ext.rb +122 -0
- data/tdiary/deploy.rb +50 -0
- data/tdiary/dispatcher.rb +77 -0
- data/tdiary/dispatcher/index_main.rb +122 -0
- data/tdiary/dispatcher/update_main.rb +101 -0
- data/tdiary/environment.rb +15 -0
- data/tdiary/filter.rb +48 -0
- data/tdiary/filter/default.rb +54 -0
- data/tdiary/filter/spam.rb +304 -0
- data/tdiary/io/base.rb +70 -0
- data/tdiary/io/cache/file.rb +123 -0
- data/tdiary/io/cache/memcached.rb +88 -0
- data/tdiary/io/cache/redis.rb +100 -0
- data/tdiary/io/default.rb +297 -0
- data/tdiary/io/pstore.rb +252 -0
- data/tdiary/io/rdb.rb +213 -0
- data/tdiary/lang/en.rb +79 -0
- data/tdiary/lang/ja.rb +72 -0
- data/tdiary/plugin.rb +375 -0
- data/tdiary/rack/assets/precompile.rb +37 -0
- data/tdiary/rack/auth/basic.rb +38 -0
- data/tdiary/rack/auth/omniauth.rb +51 -0
- data/tdiary/rack/html_anchor.rb +31 -0
- data/tdiary/rack/valid_request_path.rb +36 -0
- data/tdiary/referer_manager.rb +80 -0
- data/tdiary/request.rb +217 -0
- data/tdiary/response.rb +29 -0
- data/tdiary/server.rb +85 -0
- data/tdiary/style.rb +194 -0
- data/tdiary/style/tdiary_style.rb +198 -0
- data/tdiary/style/wiki_style.rb +213 -0
- data/tdiary/tasks.rb +1 -0
- data/tdiary/tasks/assets.rake +31 -0
- data/tdiary/tasks/auth.rake +28 -0
- data/tdiary/tasks/db.rake +110 -0
- data/tdiary/tasks/doc.rake +31 -0
- data/tdiary/tasks/heroku.rake +37 -0
- data/tdiary/tasks/jasmine.rake +16 -0
- data/tdiary/tasks/rdoc.rake +24 -0
- data/tdiary/tasks/release.rake +122 -0
- data/tdiary/tasks/rspec.rake +51 -0
- data/tdiary/tasks/server.rake +33 -0
- data/tdiary/tasks/test.rake +17 -0
- data/tdiary/version.rb +3 -0
- data/tdiary/view.rb +468 -0
- data/tdiary/view_helper.rb +15 -0
- data/test/disp_referrer_test.rb +93 -0
- data/test/my-sequel_test.rb +238 -0
- data/test/test_helper.rb +7 -0
- data/test/test_plugin_helper.rb +64 -0
- data/test/test_plugin_helper_test.rb +28 -0
- data/test/weather_test.rb +33 -0
- data/theme/base.css +268 -0
- data/theme/conf.block.png +0 -0
- data/theme/conf.css +254 -0
- data/theme/default/README +11 -0
- data/theme/default/body.png +0 -0
- data/theme/default/default.css +743 -0
- data/theme/help.png +0 -0
- data/theme/loading.gif +0 -0
- data/theme/tdiary1/README +7 -0
- data/theme/tdiary1/tdiary1.css +394 -0
- data/theme/tdiary2/README +19 -0
- data/theme/tdiary2/tdiary2.css +624 -0
- data/update.fcgi +45 -0
- data/update.rb +57 -0
- data/vendor/hikidoc-0.0.6/COPYING +28 -0
- data/vendor/hikidoc-0.0.6/NEWS +30 -0
- data/vendor/hikidoc-0.0.6/NEWS.ja +30 -0
- data/vendor/hikidoc-0.0.6/README +86 -0
- data/vendor/hikidoc-0.0.6/README.ja +83 -0
- data/vendor/hikidoc-0.0.6/Rakefile +68 -0
- data/vendor/hikidoc-0.0.6/TextFormattingRules +320 -0
- data/vendor/hikidoc-0.0.6/TextFormattingRules.ja +318 -0
- data/vendor/hikidoc-0.0.6/bin/hikidoc +66 -0
- data/vendor/hikidoc-0.0.6/lib/hikidoc.rb +914 -0
- data/vendor/hikidoc-0.0.6/setup.rb +1360 -0
- data/vendor/hikidoc-0.0.6/test/run-test.rb +13 -0
- data/vendor/hikidoc-0.0.6/test/test_hikidoc.rb +506 -0
- data/vendor/imagesize-0.1.1/Manifest.txt +19 -0
- data/vendor/imagesize-0.1.1/README.txt +49 -0
- data/vendor/imagesize-0.1.1/lib/image_size.rb +305 -0
- data/vendor/imagesize-0.1.1/lib/image_size/version.rb +9 -0
- data/vendor/imagesize-0.1.1/setup.rb +1585 -0
- data/vendor/imagesize-0.1.1/test/2-4-7.png +0 -0
- data/vendor/imagesize-0.1.1/test/4_1_2.gif +0 -0
- data/vendor/imagesize-0.1.1/test/bmp.bmp +0 -0
- data/vendor/imagesize-0.1.1/test/cursor.xbm +6 -0
- data/vendor/imagesize-0.1.1/test/detect.swf +0 -0
- data/vendor/imagesize-0.1.1/test/pbm.pbm +0 -0
- data/vendor/imagesize-0.1.1/test/pcx.pcx +0 -0
- data/vendor/imagesize-0.1.1/test/pgm.pgm +5 -0
- data/vendor/imagesize-0.1.1/test/test.xpm +38 -0
- data/vendor/imagesize-0.1.1/test/test_helper.rb +2 -0
- data/vendor/imagesize-0.1.1/test/test_image_size.rb +71 -0
- data/vendor/imagesize-0.1.1/test/tiff.tiff +0 -0
- data/vendor/imagesize-0.1.1/test/tokyo_tower.jpg +0 -0
- data/vendor/imagesize-0.1.1/test/tower_e.gif.psd +0 -0
- data/vendor/jasmine-jquery-1.4.2/jasmine-jquery.js +548 -0
- data/vendor/jquery-1.8/jquery.js +9227 -0
- data/vendor/rdtool-0.6.38/COPYING.txt +339 -0
- data/vendor/rdtool-0.6.38/Gemfile +3 -0
- data/vendor/rdtool-0.6.38/HISTORY +318 -0
- data/vendor/rdtool-0.6.38/LGPL-2.1 +502 -0
- data/vendor/rdtool-0.6.38/LICENSE.txt +58 -0
- data/vendor/rdtool-0.6.38/README.html +66 -0
- data/vendor/rdtool-0.6.38/README.ja.html +73 -0
- data/vendor/rdtool-0.6.38/README.rd +76 -0
- data/vendor/rdtool-0.6.38/README.rd.ja +85 -0
- data/vendor/rdtool-0.6.38/Rakefile +152 -0
- data/vendor/rdtool-0.6.38/TODO +22 -0
- data/vendor/rdtool-0.6.38/bin/rd2 +283 -0
- data/vendor/rdtool-0.6.38/bin/rdswap.rb +207 -0
- data/vendor/rdtool-0.6.38/doc/rd-draft.html +456 -0
- data/vendor/rdtool-0.6.38/doc/rd-draft.ja.html +466 -0
- data/vendor/rdtool-0.6.38/doc/rd-draft.rd +479 -0
- data/vendor/rdtool-0.6.38/doc/rd-draft.rd.ja +487 -0
- data/vendor/rdtool-0.6.38/lib/rd/block-element.rb +114 -0
- data/vendor/rdtool-0.6.38/lib/rd/complex-list-item.rb +65 -0
- data/vendor/rdtool-0.6.38/lib/rd/desclist.rb +55 -0
- data/vendor/rdtool-0.6.38/lib/rd/document-struct.rb +46 -0
- data/vendor/rdtool-0.6.38/lib/rd/dot.rd2rc +18 -0
- data/vendor/rdtool-0.6.38/lib/rd/element.rb +160 -0
- data/vendor/rdtool-0.6.38/lib/rd/filter.rb +255 -0
- data/vendor/rdtool-0.6.38/lib/rd/head-filter.rb +14 -0
- data/vendor/rdtool-0.6.38/lib/rd/inline-element.rb +233 -0
- data/vendor/rdtool-0.6.38/lib/rd/labeled-element.rb +14 -0
- data/vendor/rdtool-0.6.38/lib/rd/list.rb +57 -0
- data/vendor/rdtool-0.6.38/lib/rd/loose-struct.rb +11 -0
- data/vendor/rdtool-0.6.38/lib/rd/methodlist.rb +57 -0
- data/vendor/rdtool-0.6.38/lib/rd/output-format-visitor.rb +30 -0
- data/vendor/rdtool-0.6.38/lib/rd/package.rb +4 -0
- data/vendor/rdtool-0.6.38/lib/rd/parser-util.rb +14 -0
- data/vendor/rdtool-0.6.38/lib/rd/post-install +1 -0
- data/vendor/rdtool-0.6.38/lib/rd/pre-setup.rb +18 -0
- data/vendor/rdtool-0.6.38/lib/rd/rbl-file.rb +69 -0
- data/vendor/rdtool-0.6.38/lib/rd/rbl-suite.rb +37 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd-struct.rb +86 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-lib.rb +266 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-opt.rb +34 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-lib.rb +490 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-opt.rb +67 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2man-lib.rb +251 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2rdo-lib.rb +19 -0
- data/vendor/rdtool-0.6.38/lib/rd/rd2rmi-lib.rb +32 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.ry +518 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.tab.rb +1061 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdfmt.rb +15 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.ry +503 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.tab.rb +1243 -0
- data/vendor/rdtool-0.6.38/lib/rd/rdvisitor.rb +214 -0
- data/vendor/rdtool-0.6.38/lib/rd/reference-resolver.rb +114 -0
- data/vendor/rdtool-0.6.38/lib/rd/search-file.rb +14 -0
- data/vendor/rdtool-0.6.38/lib/rd/tree.rb +103 -0
- data/vendor/rdtool-0.6.38/lib/rd/version.rb +41 -0
- data/vendor/rdtool-0.6.38/lib/rd/visitor.rb +86 -0
- data/vendor/rdtool-0.6.38/rdtool.gemspec +125 -0
- data/vendor/rdtool-0.6.38/setup.rb +1596 -0
- data/vendor/rdtool-0.6.38/test/data/includee1.html +1 -0
- data/vendor/rdtool-0.6.38/test/data/includee2.html +1 -0
- data/vendor/rdtool-0.6.38/test/data/includee3.nothtml +1 -0
- data/vendor/rdtool-0.6.38/test/data/includee4.xhtml +0 -0
- data/vendor/rdtool-0.6.38/test/data/label.rbl +2 -0
- data/vendor/rdtool-0.6.38/test/data/label2.rbl +2 -0
- data/vendor/rdtool-0.6.38/test/data/sub/includee2.html +1 -0
- data/vendor/rdtool-0.6.38/test/data/sub/includee4.html +0 -0
- data/vendor/rdtool-0.6.38/test/dummy-observer.rb +6 -0
- data/vendor/rdtool-0.6.38/test/dummy.rb +33 -0
- data/vendor/rdtool-0.6.38/test/temp-dir.rb +19 -0
- data/vendor/rdtool-0.6.38/test/test-block-parser.rb +46 -0
- data/vendor/rdtool-0.6.38/test/test-desclist-item.rb +219 -0
- data/vendor/rdtool-0.6.38/test/test-document-element.rb +46 -0
- data/vendor/rdtool-0.6.38/test/test-document-struct.rb +66 -0
- data/vendor/rdtool-0.6.38/test/test-element.rb +46 -0
- data/vendor/rdtool-0.6.38/test/test-headline.rb +80 -0
- data/vendor/rdtool-0.6.38/test/test-inline-parser.rb +46 -0
- data/vendor/rdtool-0.6.38/test/test-list-item.rb +54 -0
- data/vendor/rdtool-0.6.38/test/test-list.rb +53 -0
- data/vendor/rdtool-0.6.38/test/test-methodlist-item.rb +73 -0
- data/vendor/rdtool-0.6.38/test/test-nonterminal-element.rb +170 -0
- data/vendor/rdtool-0.6.38/test/test-nonterminal-inline.rb +33 -0
- data/vendor/rdtool-0.6.38/test/test-output-format-visitor.rb +48 -0
- data/vendor/rdtool-0.6.38/test/test-parser-util.rb +41 -0
- data/vendor/rdtool-0.6.38/test/test-rbl-file.rb +156 -0
- data/vendor/rdtool-0.6.38/test/test-rbl-suite.rb +43 -0
- data/vendor/rdtool-0.6.38/test/test-rd2html-lib.rb +496 -0
- data/vendor/rdtool-0.6.38/test/test-rdtree.rb +17 -0
- data/vendor/rdtool-0.6.38/test/test-rdvisitor.rb +29 -0
- data/vendor/rdtool-0.6.38/test/test-reference-resolver.rb +202 -0
- data/vendor/rdtool-0.6.38/test/test-reference.rb +132 -0
- data/vendor/rdtool-0.6.38/test/test-search-file.rb +22 -0
- data/vendor/rdtool-0.6.38/test/test-terminal-inline.rb +41 -0
- data/vendor/rdtool-0.6.38/test/test-textblock.rb +44 -0
- data/vendor/rdtool-0.6.38/test/test-tree.rb +82 -0
- data/vendor/rdtool-0.6.38/test/test-version.rb +57 -0
- data/vendor/rdtool-0.6.38/test/test-visitor.rb +230 -0
- data/vendor/rdtool-0.6.38/utils/rd-mode.el +464 -0
- metadata +666 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require 'rd/block-element'
|
4
|
+
require 'rd/inline-element'
|
5
|
+
require 'rd/rd-struct'
|
6
|
+
|
7
|
+
include RD
|
8
|
+
|
9
|
+
class TestTextBlock < Test::Unit::TestCase
|
10
|
+
def setup
|
11
|
+
@p = TextBlock.new
|
12
|
+
@c1 = StringElement.new "string"
|
13
|
+
@c2 = Emphasis.new
|
14
|
+
@c21 = StringElement.new "in emphasis"
|
15
|
+
@c2.add_child_under_document_struct(@c21, DocumentStructure::RD)
|
16
|
+
@c3 = Code.new
|
17
|
+
@c31 = StringElement.new "code"
|
18
|
+
@c32 = Var.new
|
19
|
+
@c321 = StringElement.new "var"
|
20
|
+
@c32.add_child_under_document_struct(@c321, DocumentStructure::RD)
|
21
|
+
@c3.add_children_under_document_struct([@c31, @c32], DocumentStructure::RD)
|
22
|
+
@c4 = Verb.new "verb"
|
23
|
+
@p.add_children_under_document_struct([@c1, @c2, @c3, @c4],
|
24
|
+
DocumentStructure::RD)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_each_child
|
28
|
+
exp = [@c1, @c2, @c3, @c4]
|
29
|
+
i = 0
|
30
|
+
@p.each_child do |b|
|
31
|
+
assert_equal(exp[i], b)
|
32
|
+
i += 1
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_each_element
|
37
|
+
exp = [@p, @c1, @c2, @c21, @c3, @c31, @c32, @c321, @c4]
|
38
|
+
i = 0
|
39
|
+
@p.each_element do |b|
|
40
|
+
assert_equal(exp[i], b)
|
41
|
+
i += 1
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require 'rd/tree'
|
4
|
+
require 'rd/element'
|
5
|
+
require 'rd/rd-struct'
|
6
|
+
require 'rd/loose-struct'
|
7
|
+
|
8
|
+
include RD
|
9
|
+
|
10
|
+
class TestTree < Test::Unit::TestCase
|
11
|
+
def test_new_with_document_struct
|
12
|
+
tr = Tree.new_with_document_struct(DocumentStructure::RD, ["test/data"])
|
13
|
+
assert_equal(nil, tr.root)
|
14
|
+
assert_equal(["test/data"], tr.include_paths)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_set_root
|
18
|
+
tr = Tree.new_with_document_struct(DocumentStructure::RD)
|
19
|
+
de = DocumentElement.new
|
20
|
+
tr.set_root(de)
|
21
|
+
assert_equal(de, tr.root)
|
22
|
+
assert_equal(tr, de.tree)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_each_element
|
26
|
+
tr = Tree.new_with_document_struct(DocumentStructure::RD)
|
27
|
+
de = DocumentElement.new
|
28
|
+
tr.root = de
|
29
|
+
exp = [de]
|
30
|
+
i = 0
|
31
|
+
tr.each_element do |b|
|
32
|
+
assert_equal(exp[i], b)
|
33
|
+
end
|
34
|
+
|
35
|
+
tr_emp = Tree.new_with_document_struct(DocumentStructure::RD)
|
36
|
+
assert_equal(nil, tr_emp.each_element)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_make_root
|
40
|
+
tr = Tree.new_with_document_struct(DocumentStructure::RD)
|
41
|
+
res = tr.make_root
|
42
|
+
assert(tr.root)
|
43
|
+
assert_equal(tr.root, res)
|
44
|
+
|
45
|
+
tr2 = Tree.new_with_document_struct(DocumentStructure::RD)
|
46
|
+
res2 = tr2.make_root do
|
47
|
+
new TextBlock
|
48
|
+
end
|
49
|
+
assert(tr2.root)
|
50
|
+
assert_equal("<RD::DocumentElement>\n <RD::TextBlock>", tr2.root.inspect)
|
51
|
+
assert_equal(tr2.root, res2)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_check_valid
|
55
|
+
tr = Tree.new_with_document_struct(DocumentStructure::RD)
|
56
|
+
de = DocumentElement.new
|
57
|
+
tr.root = de
|
58
|
+
de.build do
|
59
|
+
new Headline, 1 do
|
60
|
+
new StringElement, "label"
|
61
|
+
end
|
62
|
+
new TextBlock do
|
63
|
+
new Emphasis do
|
64
|
+
new StringElement, "emphasis"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
assert_equal(true, tr.check_valid)
|
69
|
+
|
70
|
+
tr_fail = Tree.new_with_document_struct(DocumentStructure::RD)
|
71
|
+
de_fail = DocumentElement.new
|
72
|
+
tr_fail.root = de_fail
|
73
|
+
tb_fail = TextBlock.new
|
74
|
+
tb_fail.build(DocumentStructure::LOOSE) do
|
75
|
+
new Headline, 1
|
76
|
+
end
|
77
|
+
de_fail.add_child(tb_fail)
|
78
|
+
assert_raises(RuntimeError) do
|
79
|
+
tr_fail.check_valid
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require 'rd/version'
|
4
|
+
|
5
|
+
include RD
|
6
|
+
|
7
|
+
class TestVersion < Test::Unit::TestCase
|
8
|
+
def test_s_new_from_version_string
|
9
|
+
ver011 = Version.new_from_version_string("name", "$Version: 0.1.1$") # "
|
10
|
+
assert_equal("name", ver011.name)
|
11
|
+
assert_equal(0, ver011.major)
|
12
|
+
assert_equal(1, ver011.minor)
|
13
|
+
assert_equal(1, ver011.patch_level)
|
14
|
+
|
15
|
+
ver0101 = Version.new_from_version_string("name", "$Version: 0.10.1$") #"
|
16
|
+
assert_equal(0, ver0101.major)
|
17
|
+
assert_equal(10, ver0101.minor)
|
18
|
+
assert_equal(1, ver0101.patch_level)
|
19
|
+
|
20
|
+
ver01 = Version.new_from_version_string("name", "$Version: 0.1$") # "
|
21
|
+
assert_equal(0, ver01.major)
|
22
|
+
assert_equal(1, ver01.minor)
|
23
|
+
assert_equal(nil, ver01.patch_level)
|
24
|
+
|
25
|
+
ver0 = Version.new_from_version_string("name", "$Version: 0$") # "
|
26
|
+
assert_equal(0, ver0.major)
|
27
|
+
assert_equal(nil, ver0.minor)
|
28
|
+
assert_equal(nil, ver0.patch_level)
|
29
|
+
|
30
|
+
ver011_2 = Version.new_from_version_string("name", "0.1.1") # "
|
31
|
+
assert_equal("name", ver011_2.name)
|
32
|
+
assert_equal(0, ver011_2.major)
|
33
|
+
assert_equal(1, ver011_2.minor)
|
34
|
+
assert_equal(1, ver011_2.patch_level)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_s_clean_up_version_string
|
38
|
+
assert_equal("0.1.1",
|
39
|
+
Version.clean_up_version_string("$Version: 0.1.1$")) #"
|
40
|
+
assert_equal("0.1.1",
|
41
|
+
Version.clean_up_version_string("0.1.1"))
|
42
|
+
assert_equal("", Version.clean_up_version_string("$Version$")) # "
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_to_s
|
46
|
+
ver011 = Version.new("name", 0, 1, 1)
|
47
|
+
assert_equal("name 0.1.1", ver011.to_s)
|
48
|
+
ver0101 = Version.new("name", 0, 10, 1)
|
49
|
+
assert_equal("name 0.10.1", ver0101.to_s)
|
50
|
+
|
51
|
+
ver01 = Version.new("name", 0, 1, nil)
|
52
|
+
assert_equal("name 0.1", ver01.to_s)
|
53
|
+
|
54
|
+
ver0 = Version.new("name", 0, nil, nil)
|
55
|
+
assert_equal("name 0", ver0.to_s)
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,230 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require 'rd/visitor'
|
4
|
+
require 'rd/block-element'
|
5
|
+
require 'rd/list'
|
6
|
+
require 'rd/desclist'
|
7
|
+
require 'rd/methodlist'
|
8
|
+
require 'rd/inline-element'
|
9
|
+
require 'rd/tree'
|
10
|
+
require 'rd/rd-struct'
|
11
|
+
require 'dummy'
|
12
|
+
|
13
|
+
include RD
|
14
|
+
|
15
|
+
DummyStruct.define_relationship(NonterminalElement, DummyElement)
|
16
|
+
|
17
|
+
class TestVisitor < Test::Unit::TestCase
|
18
|
+
def setup
|
19
|
+
@vis = DummyVisitor.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_visit_children
|
23
|
+
el = TextBlock.new
|
24
|
+
add_2_children(el)
|
25
|
+
assert_equal(["dummy", "dummy"], @vis.visit_children(el))
|
26
|
+
|
27
|
+
empty = TextBlock.new
|
28
|
+
assert_equal([], @vis.visit_children(empty))
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_visit_DocumentElement
|
32
|
+
el = DocumentElement.new
|
33
|
+
add_2_children(el)
|
34
|
+
assert_equal(["apply_to_DocumentElement", [el, ["dummy", "dummy"]]],
|
35
|
+
@vis.visit_DocumentElement(el))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_visit_Headline
|
39
|
+
el = Headline.new(1)
|
40
|
+
add_2_children(el)
|
41
|
+
assert_equal(["apply_to_Headline", [el, ["dummy", "dummy"]]],
|
42
|
+
@vis.visit_Headline(el))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_visit_Include
|
46
|
+
el = Include.new "include"
|
47
|
+
assert_equal(["apply_to_Include", [el]],
|
48
|
+
@vis.visit_Include(el))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_visit_TextBlock
|
52
|
+
el = TextBlock.new
|
53
|
+
add_2_children(el)
|
54
|
+
assert_equal(["apply_to_TextBlock", [el, ["dummy", "dummy"]]],
|
55
|
+
@vis.visit_TextBlock(el))
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_visit_Verbatim
|
59
|
+
el = Verbatim.new "Verbatim"
|
60
|
+
assert_equal(["apply_to_Verbatim", [el]],
|
61
|
+
@vis.visit_Verbatim(el))
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_visit_ItemList
|
65
|
+
el = ItemList.new
|
66
|
+
add_2_children(el)
|
67
|
+
assert_equal(["apply_to_ItemList", [el, ["dummy", "dummy"]]],
|
68
|
+
@vis.visit_ItemList(el))
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_visit_EnumList
|
72
|
+
el = EnumList.new
|
73
|
+
add_2_children(el)
|
74
|
+
assert_equal(["apply_to_EnumList", [el, ["dummy", "dummy"]]],
|
75
|
+
@vis.visit_EnumList(el))
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_visit_DescList
|
79
|
+
el = DescList.new
|
80
|
+
add_2_children(el)
|
81
|
+
assert_equal(["apply_to_DescList", [el, ["dummy", "dummy"]]],
|
82
|
+
@vis.visit_DescList(el))
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_visit_MethodList
|
86
|
+
el = MethodList.new
|
87
|
+
add_2_children(el)
|
88
|
+
assert_equal(["apply_to_MethodList", [el, ["dummy", "dummy"]]],
|
89
|
+
@vis.visit_MethodList(el))
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_visit_ItemListItem
|
93
|
+
el = ItemListItem.new
|
94
|
+
add_2_children(el)
|
95
|
+
assert_equal(["apply_to_ItemListItem", [el, ["dummy", "dummy"]]],
|
96
|
+
@vis.visit_ItemListItem(el))
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_visit_EnumListItem
|
100
|
+
el = EnumListItem.new
|
101
|
+
add_2_children(el)
|
102
|
+
assert_equal(["apply_to_EnumListItem", [el, ["dummy", "dummy"]]],
|
103
|
+
@vis.visit_EnumListItem(el))
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_visit_DescListItem
|
107
|
+
el = DescListItem.new
|
108
|
+
el.set_term_under_document_struct(DummyElement.new, DummyStruct)
|
109
|
+
add_2_children(el)
|
110
|
+
assert_equal(["apply_to_DescListItem", [el, "dummy", ["dummy", "dummy"]]],
|
111
|
+
@vis.visit_DescListItem(el))
|
112
|
+
|
113
|
+
empty = DescListItem.new
|
114
|
+
empty.set_term_under_document_struct(DummyElement.new, DummyStruct)
|
115
|
+
assert_equal(["apply_to_DescListItem", [empty, "dummy", []]],
|
116
|
+
@vis.visit_DescListItem(empty))
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_visit_DescListItemTerm
|
120
|
+
el = DescListItem::Term.new
|
121
|
+
add_2_children(el)
|
122
|
+
assert_equal(["apply_to_DescListItemTerm", [el, ["dummy", "dummy"]]],
|
123
|
+
@vis.visit_DescListItemTerm(el))
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_visit_MethodListItem
|
127
|
+
el = MethodListItem.new
|
128
|
+
el.set_term_under_document_struct(DummyElement.new, DummyStruct)
|
129
|
+
add_2_children(el)
|
130
|
+
assert_equal(["apply_to_MethodListItem", [el, "dummy", ["dummy", "dummy"]]],
|
131
|
+
@vis.visit_MethodListItem(el))
|
132
|
+
|
133
|
+
empty = MethodListItem.new
|
134
|
+
empty.set_term_under_document_struct(DummyElement.new, DummyStruct)
|
135
|
+
assert_equal(["apply_to_MethodListItem", [empty, "dummy", []]],
|
136
|
+
@vis.visit_MethodListItem(empty))
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_visit_MethodListItemTerm
|
140
|
+
el = MethodListItem::Term.new
|
141
|
+
assert_equal(["apply_to_MethodListItemTerm", [el]],
|
142
|
+
@vis.visit_MethodListItemTerm(el))
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_visit_StringElement
|
146
|
+
el = StringElement.new "string"
|
147
|
+
assert_equal(["apply_to_StringElement", [el]], @vis.visit_StringElement(el))
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_visit_Verb
|
151
|
+
el = Verb.new "string"
|
152
|
+
assert_equal(["apply_to_Verb", [el]], @vis.visit_Verb(el))
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_visit_Emphasis
|
156
|
+
el = Emphasis.new
|
157
|
+
add_2_children(el)
|
158
|
+
assert_equal(["apply_to_Emphasis", [el, ["dummy", "dummy"]]],
|
159
|
+
@vis.visit_Emphasis(el))
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_visit_Code
|
163
|
+
el = Code.new
|
164
|
+
add_2_children(el)
|
165
|
+
assert_equal(["apply_to_Code", [el, ["dummy", "dummy"]]],
|
166
|
+
@vis.visit_Code(el))
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_visit_Var
|
170
|
+
el = Var.new
|
171
|
+
add_2_children(el)
|
172
|
+
assert_equal(["apply_to_Var", [el, ["dummy", "dummy"]]],
|
173
|
+
@vis.visit_Var(el))
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_visit_Keyboard
|
177
|
+
el = Keyboard.new
|
178
|
+
add_2_children(el)
|
179
|
+
assert_equal(["apply_to_Keyboard", [el, ["dummy", "dummy"]]],
|
180
|
+
@vis.visit_Keyboard(el))
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_visit_Index
|
184
|
+
el = Index.new
|
185
|
+
add_2_children(el)
|
186
|
+
assert_equal(["apply_to_Index", [el, ["dummy", "dummy"]]],
|
187
|
+
@vis.visit_Index(el))
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_visit_Footnote
|
191
|
+
el = Footnote.new
|
192
|
+
add_2_children(el)
|
193
|
+
assert_equal(["apply_to_Footnote", [el, ["dummy", "dummy"]]],
|
194
|
+
@vis.visit_Footnote(el))
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_visit_Reference
|
198
|
+
el = Reference.new(Reference::RDLabel.new("label"))
|
199
|
+
add_2_children(el)
|
200
|
+
assert_equal(["apply_to_Reference_with_RDLabel", [el, ["dummy", "dummy"]]],
|
201
|
+
@vis.visit_Reference(el))
|
202
|
+
|
203
|
+
empty = Reference.new(Reference::RDLabel.new("label"))
|
204
|
+
assert_equal(["apply_to_Reference_with_RDLabel", [empty, []]],
|
205
|
+
@vis.visit_Reference(empty))
|
206
|
+
|
207
|
+
url_reference = Reference.new(Reference::URL.new("url"))
|
208
|
+
add_2_children(url_reference)
|
209
|
+
assert_equal(["apply_to_Reference_with_URL",
|
210
|
+
[url_reference, ["dummy", "dummy"]]],
|
211
|
+
@vis.visit_Reference(url_reference))
|
212
|
+
|
213
|
+
# OldStyleDummyVisitor#apply_to_Reference_with_RDLabel is not implemented.
|
214
|
+
# So, #apply_to_reference is called instead of it.
|
215
|
+
old_visitor = OldStyleDummyVisitor.new
|
216
|
+
assert_equal(["apply_to_Reference", [el, ["dummy", "dummy"]]],
|
217
|
+
old_visitor.visit_Reference(el))
|
218
|
+
end
|
219
|
+
|
220
|
+
def add_2_children(el)
|
221
|
+
el.add_children_under_document_struct([DummyElement.new, DummyElement.new],
|
222
|
+
DummyStruct)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
class OldStyleDummyVisitor < Visitor
|
227
|
+
def apply_to_Reference(*args)
|
228
|
+
["apply_to_Reference", args]
|
229
|
+
end
|
230
|
+
end
|
@@ -0,0 +1,464 @@
|
|
1
|
+
;;; rd-mode.el --- Major mode for RD editing
|
2
|
+
;;;
|
3
|
+
;;; NOTE: experimental.
|
4
|
+
|
5
|
+
;; Copyright (C) 1999 Koji Arai, Toshiro Kuwabara.
|
6
|
+
|
7
|
+
;; Author: Koji Arai, Toshiro Kuwabara
|
8
|
+
;; Created: Sat Nov 27 00:08:12 1999
|
9
|
+
|
10
|
+
;; This file is not part of GNU Emacs, but the same permissions apply.
|
11
|
+
|
12
|
+
;; GNU Emacs is free software; you can redistribute it and/or modify
|
13
|
+
;; it under the terms of the GNU General Public License as published by
|
14
|
+
;; the Free Software Foundation; either version 2, or (at your option)
|
15
|
+
;; any later version.
|
16
|
+
|
17
|
+
;; GNU Emacs is distributed in the hope that it will be useful,
|
18
|
+
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19
|
+
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20
|
+
;; GNU General Public License for more details.
|
21
|
+
|
22
|
+
;; You should have received a copy of the GNU General Public License
|
23
|
+
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
24
|
+
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
25
|
+
;; Boston, MA 02111-1307, USA.
|
26
|
+
|
27
|
+
;; Settings:
|
28
|
+
;;
|
29
|
+
;; add below lines in your ~/.emacs
|
30
|
+
;;
|
31
|
+
;; (global-font-lock-mode 1 t)
|
32
|
+
;; (autoload 'rd-mode "rd-mode" "major mode for ruby document formatter RD" t)
|
33
|
+
;; (add-to-list 'auto-mode-alist '("\\.rd$" . rd-mode))
|
34
|
+
|
35
|
+
(require 'derived)
|
36
|
+
|
37
|
+
(defvar rd-use-prompt-when-insertion-p nil
|
38
|
+
"Whether to use prompt when inserting inline.")
|
39
|
+
|
40
|
+
(defvar rd-selective-display-ellipses t
|
41
|
+
"*Displays ellipses in RD-mode if non-nil")
|
42
|
+
|
43
|
+
(defvar rd-mode-hook nil
|
44
|
+
"Hooks run when entering `rd-mode' major mode")
|
45
|
+
|
46
|
+
(define-derived-mode rd-mode text-mode "RD"
|
47
|
+
"Major mode for RD editing.
|
48
|
+
\\{rd-mode-map}"
|
49
|
+
(make-local-variable 'paragraph-separate)
|
50
|
+
(setq paragraph-separate "=+\\|\\++\\|[ \t\n\^L]*$")
|
51
|
+
(make-local-variable 'paragraph-start)
|
52
|
+
(setq paragraph-start "=+\\|\\++\\|[ \t\n\^L]")
|
53
|
+
(make-local-variable 'require-final-newline)
|
54
|
+
(setq require-final-newline t)
|
55
|
+
(make-local-variable 'font-lock-defaults)
|
56
|
+
(setq font-lock-defaults '((rd-font-lock-keywords) t nil))
|
57
|
+
(make-local-variable 'font-lock-keywords)
|
58
|
+
(setq font-lock-keywords rd-font-lock-keywords)
|
59
|
+
(make-local-variable 'outline-regexp)
|
60
|
+
(setq outline-regexp "^\\(=+\\)")
|
61
|
+
(outline-minor-mode t)
|
62
|
+
(add-hook (make-local-variable 'write-contents-hooks) 'rd-strip-cr-on-top)
|
63
|
+
(add-hook (make-local-variable 'after-save-hook) 'rd-rehide-endline)
|
64
|
+
(rd-hide-other-block-all)
|
65
|
+
(rd-setup-keys)
|
66
|
+
(setq indent-tabs-mode nil)
|
67
|
+
(setq imenu-create-index-function 'rd-imenu-create-index)
|
68
|
+
(run-hooks 'rd-mode-hook)
|
69
|
+
)
|
70
|
+
|
71
|
+
(defvar rd-heading1-face 'font-lock-keyword-face)
|
72
|
+
(defvar rd-heading2-face 'font-lock-type-face)
|
73
|
+
(defvar rd-heading3-face 'font-lock-variable-name-face)
|
74
|
+
(defvar rd-heading4-face 'font-lock-comment-face)
|
75
|
+
(defvar rd-emphasis-face 'font-lock-function-name-face)
|
76
|
+
(defvar rd-keyboard-face 'font-lock-function-name-face)
|
77
|
+
(defvar rd-variable-face 'font-lock-function-name-face)
|
78
|
+
(defvar rd-verbatim-face 'font-lock-function-name-face)
|
79
|
+
(defvar rd-term-face 'font-lock-function-name-face)
|
80
|
+
(defvar rd-footnote-face 'font-lock-function-name-face)
|
81
|
+
(defvar rd-link-face 'font-lock-function-name-face)
|
82
|
+
(defvar rd-code-face 'font-lock-function-name-face)
|
83
|
+
(defvar rd-description-face 'font-lock-constant-face)
|
84
|
+
|
85
|
+
(defvar rd-font-lock-keywords
|
86
|
+
(list
|
87
|
+
'("^= .*$"
|
88
|
+
0 rd-heading1-face)
|
89
|
+
'("^== .*$"
|
90
|
+
0 rd-heading2-face)
|
91
|
+
'("^=== .*$"
|
92
|
+
0 rd-heading3-face)
|
93
|
+
'("^=====* .*$"
|
94
|
+
0 rd-heading4-face)
|
95
|
+
'("((\\*[^*]*\\*+\\([^)*][^%]*\\*+\\)*))" ; ((* ... *))
|
96
|
+
0 rd-emphasis-face)
|
97
|
+
'("((%[^%]*%+\\([^)%][^%]*%+\\)*))" ; ((% ... %))
|
98
|
+
0 rd-keyboard-face)
|
99
|
+
'("((|[^|]*|+\\([^)|][^|]*|+\\)*))" ; ((| ... |))
|
100
|
+
0 rd-variable-face)
|
101
|
+
'("(('[^']*'+\\([^)'][^']*'+\\)*))" ; ((' ... '))
|
102
|
+
0 rd-verbatim-face)
|
103
|
+
'("((:[^:]*:+\\([^):][^:]*:+\\)*))" ; ((: ... :))
|
104
|
+
0 rd-term-face)
|
105
|
+
'("((-[^-]*-+\\([^)-][^-]*-+\\)*))" ; ((- ... -))
|
106
|
+
0 rd-footnote-face)
|
107
|
+
'("((<[^>]*>+\\([^)>][^>]*>+\\)*))" ; ((< ... >))
|
108
|
+
0 rd-link-face)
|
109
|
+
'("(({[^}]*}+\\([^)}][^}]*}+\\)*))" ; (({ ... }))
|
110
|
+
0 rd-code-face)
|
111
|
+
'("^:.*$"
|
112
|
+
0 rd-description-face)
|
113
|
+
))
|
114
|
+
|
115
|
+
(defun rd-setup-keys ()
|
116
|
+
(interactive)
|
117
|
+
(define-key rd-mode-map "\t" 'rd-indent-line)
|
118
|
+
(define-key rd-mode-map "\C-j" 'rd-newline-and-indent)
|
119
|
+
(define-key rd-mode-map "\C-c\C-v" 'rd-cite-region)
|
120
|
+
(define-key rd-mode-map "\C-c\C-ie" 'rd-insert-emphasis)
|
121
|
+
(define-key rd-mode-map "\C-c\C-ic" 'rd-insert-code)
|
122
|
+
(define-key rd-mode-map "\C-c\C-iv" 'rd-insert-var)
|
123
|
+
(define-key rd-mode-map "\C-c\C-ik" 'rd-insert-keyboard)
|
124
|
+
(define-key rd-mode-map "\C-c\C-ii" 'rd-insert-index)
|
125
|
+
(define-key rd-mode-map "\C-c\C-ir" 'rd-insert-ref)
|
126
|
+
(define-key rd-mode-map "\C-c\C-iu" 'rd-insert-reftourl)
|
127
|
+
(define-key rd-mode-map "\C-c\C-if" 'rd-insert-footnote)
|
128
|
+
(define-key rd-mode-map "\C-c\C-ib" 'rd-insert-verb)
|
129
|
+
(define-key rd-mode-map "\C-c\C-y" 'rd-yank-as-url)
|
130
|
+
(define-key rd-mode-map "\C-c\M-y" 'rd-yank-pop-as-url)
|
131
|
+
(define-key rd-mode-map "\C-c\C-u" 'rd-insert-url)
|
132
|
+
(define-key rd-mode-map "\M-\C-m" 'rd-intelligent-newline))
|
133
|
+
|
134
|
+
(defun rd-strip-cr-on-top ()
|
135
|
+
(save-excursion
|
136
|
+
(widen)
|
137
|
+
(goto-char (point-min))
|
138
|
+
(let ((mod (buffer-modified-p)))
|
139
|
+
(while (re-search-forward "^\r=end\\>" nil t)
|
140
|
+
(beginning-of-line)
|
141
|
+
(delete-char 1)
|
142
|
+
(forward-line))
|
143
|
+
(set-buffer-modified-p mod)))
|
144
|
+
nil)
|
145
|
+
|
146
|
+
(defun rd-rehide-endline ()
|
147
|
+
(save-excursion
|
148
|
+
(widen)
|
149
|
+
(goto-char (point-min))
|
150
|
+
(let ((mod (buffer-modified-p)))
|
151
|
+
(while (re-search-forward "^=end\\>.*\r" nil t)
|
152
|
+
(beginning-of-line)
|
153
|
+
(insert "\r")
|
154
|
+
(forward-line))
|
155
|
+
(set-buffer-modified-p mod))))
|
156
|
+
|
157
|
+
(defun rd-hide-other-block ()
|
158
|
+
"Hides following lines not in RD format."
|
159
|
+
(interactive)
|
160
|
+
(let (end (mod (buffer-modified-p)))
|
161
|
+
(save-excursion
|
162
|
+
(widen)
|
163
|
+
(and (setq end (re-search-forward "^=begin\\>" nil t))
|
164
|
+
(re-search-backward "^=end\\>" nil t))
|
165
|
+
(insert "\r")
|
166
|
+
(while (search-forward "\n" end t)
|
167
|
+
(replace-match "\r" t t)))
|
168
|
+
(set-buffer-modified-p mod))
|
169
|
+
(setq selective-display t
|
170
|
+
selective-display-ellipses rd-selective-display-ellipses))
|
171
|
+
|
172
|
+
(defun rd-hide-other-block-all ()
|
173
|
+
"Hides all lines not in RD format."
|
174
|
+
(interactive)
|
175
|
+
(let (beg end (mod (buffer-modified-p)))
|
176
|
+
(save-excursion
|
177
|
+
(widen)
|
178
|
+
(goto-char (point-min))
|
179
|
+
(while (and (re-search-forward "^=end\\>" nil t)
|
180
|
+
(setq beg (progn (beginning-of-line) (point)))
|
181
|
+
(setq end (re-search-forward "^=begin\\>" nil t)))
|
182
|
+
(goto-char beg)
|
183
|
+
(insert "\r")
|
184
|
+
(while (search-forward "\n" end t)
|
185
|
+
(replace-match "\r" t t))))
|
186
|
+
(set-buffer-modified-p mod))
|
187
|
+
(setq selective-display t
|
188
|
+
selective-display-ellipses rd-selective-display-ellipses))
|
189
|
+
|
190
|
+
(defun rd-show-other-block ()
|
191
|
+
"Shows lines not in RD format before current point."
|
192
|
+
(interactive)
|
193
|
+
(if selective-display
|
194
|
+
(save-excursion
|
195
|
+
(let (end (mod (buffer-modified-p)))
|
196
|
+
(widen)
|
197
|
+
(if (re-search-forward "^\r=end\\>" nil t)
|
198
|
+
(progn
|
199
|
+
(end-of-line)
|
200
|
+
(setq end (point))
|
201
|
+
(beginning-of-line)
|
202
|
+
(delete-char 1)
|
203
|
+
(while (search-forward "\r" end t)
|
204
|
+
(replace-match "\n" t t))))
|
205
|
+
(set-buffer-modified-p mod)))))
|
206
|
+
|
207
|
+
(defun rd-show-other-block-all ()
|
208
|
+
"Shows all lines not in RD format."
|
209
|
+
(interactive)
|
210
|
+
(if selective-display
|
211
|
+
(save-excursion
|
212
|
+
(let (end (mod (buffer-modified-p)))
|
213
|
+
(widen)
|
214
|
+
(goto-char (point-min))
|
215
|
+
(while (re-search-forward "^\r=end\\>" nil t)
|
216
|
+
(end-of-line)
|
217
|
+
(setq end (point))
|
218
|
+
(beginning-of-line)
|
219
|
+
(delete-char 1)
|
220
|
+
(while (search-forward "\r" end t)
|
221
|
+
(replace-match "\n" t t)))
|
222
|
+
(set-buffer-modified-p mod))))
|
223
|
+
(setq selective-display nil selective-display-ellipses t))
|
224
|
+
|
225
|
+
(defun rd-show-label-list ()
|
226
|
+
"Show RD Label list through temporary buffer."
|
227
|
+
(interactive)
|
228
|
+
(occur "^\\(=+\\s-\\|\\+\\|\\s-*:\\|\\s-*---\\)"))
|
229
|
+
|
230
|
+
(defun rd-insert-inline (beg end str)
|
231
|
+
"Insert Inline Inline (general)."
|
232
|
+
(if str
|
233
|
+
(insert (concat beg str end))
|
234
|
+
(progn
|
235
|
+
(if rd-use-prompt-when-insertion-p
|
236
|
+
(rd-insert-inline beg end (read-string (concat beg " elm " end ": ")))
|
237
|
+
(insert beg end)
|
238
|
+
(backward-char (length end))))))
|
239
|
+
|
240
|
+
(defun rd-insert-emphasis (&optional str)
|
241
|
+
"Insert Inline Emphasis."
|
242
|
+
(interactive "*") (rd-insert-inline "((*" "*))" str))
|
243
|
+
|
244
|
+
(defun rd-insert-code (&optional str)
|
245
|
+
"Insert Inline Code."
|
246
|
+
(interactive "*") (rd-insert-inline "(({" "}))" str))
|
247
|
+
|
248
|
+
(defun rd-insert-var (&optional str)
|
249
|
+
"Insert Inline Var."
|
250
|
+
(interactive "*") (rd-insert-inline "((|" "|))" str))
|
251
|
+
|
252
|
+
(defun rd-insert-keyboard (&optional str)
|
253
|
+
"Insert Inline Keyboard."
|
254
|
+
(interactive "*") (rd-insert-inline "((%" "%))" str))
|
255
|
+
|
256
|
+
(defun rd-insert-index (&optional str)
|
257
|
+
"Insert Inline Index."
|
258
|
+
(interactive "*") (rd-insert-inline "((:" ":))" str))
|
259
|
+
|
260
|
+
(defun rd-insert-ref (&optional str)
|
261
|
+
"Insert Inline Reference."
|
262
|
+
(interactive "*") (rd-insert-inline "((<" ">))" str))
|
263
|
+
|
264
|
+
(defun rd-insert-reftourl (&optional str)
|
265
|
+
"Insert Inline RefToURL."
|
266
|
+
(interactive "*") (rd-insert-inline "((<URL:" ">))" str))
|
267
|
+
|
268
|
+
(defun rd-insert-footnote (&optional str)
|
269
|
+
"Insert Inline Footnote."
|
270
|
+
(interactive "*") (rd-insert-inline "((-" "-))" str))
|
271
|
+
|
272
|
+
(defun rd-insert-verb (&optional str)
|
273
|
+
"Insert Inline Verb."
|
274
|
+
(interactive "*") (rd-insert-inline "(('" "'))" str))
|
275
|
+
|
276
|
+
(defun rd-yank-as-url (&optional arg)
|
277
|
+
"Yank as Inline RefToURL."
|
278
|
+
(interactive "*P")
|
279
|
+
(yank arg)
|
280
|
+
(setq this-command 'yank)
|
281
|
+
(let ((yanked-str
|
282
|
+
(concat "((<URL:" (buffer-substring (point) (mark t)) ">))")))
|
283
|
+
(delete-region (point) (mark t))
|
284
|
+
(if (listp arg)
|
285
|
+
(insert yanked-str)
|
286
|
+
(insert-before-markers yanked-str))))
|
287
|
+
|
288
|
+
(defun rd-yank-pop-as-url (arg)
|
289
|
+
"Yank pop as Inline RefToURL."
|
290
|
+
(interactive "*p")
|
291
|
+
(if (not (eq last-command 'yank))
|
292
|
+
(progn
|
293
|
+
(insert (symbol-name last-command))
|
294
|
+
(error "Previous command is not yank-like.")))
|
295
|
+
(setq this-command 'yank)
|
296
|
+
(yank-pop arg)
|
297
|
+
(let ((yanked-str
|
298
|
+
(concat "((<URL:" (buffer-substring (point) (mark t)) ">))")))
|
299
|
+
(delete-region (point) (mark t))
|
300
|
+
(insert yanked-str)))
|
301
|
+
|
302
|
+
(defun rd-newline-and-indent ()
|
303
|
+
"Newline and indent as deep as prev line."
|
304
|
+
(interactive "*")
|
305
|
+
(newline)
|
306
|
+
(rd-indent-line))
|
307
|
+
|
308
|
+
(defun rd-indent-line ()
|
309
|
+
"Indent line as deep as prev line."
|
310
|
+
(interactive "*")
|
311
|
+
(let ((prev-indent (progn
|
312
|
+
(forward-line -1)
|
313
|
+
(rd-current-indentation))))
|
314
|
+
(forward-line 1)
|
315
|
+
(rd-indent-to prev-indent)
|
316
|
+
(back-to-indentation)))
|
317
|
+
|
318
|
+
(defun rd-line-list-p ()
|
319
|
+
"Whether the line is list or not."
|
320
|
+
(save-excursion
|
321
|
+
(beginning-of-line)
|
322
|
+
(looking-at " *\\*\\|---")))
|
323
|
+
|
324
|
+
(defun rd-indent-to (num)
|
325
|
+
(let (beg)
|
326
|
+
(save-excursion
|
327
|
+
(beginning-of-line)
|
328
|
+
(setq beg (point))
|
329
|
+
(back-to-indentation)
|
330
|
+
(delete-region beg (point))
|
331
|
+
(indent-to num))))
|
332
|
+
|
333
|
+
(defun rd-current-indentation ()
|
334
|
+
""
|
335
|
+
(save-excursion
|
336
|
+
(beginning-of-line)
|
337
|
+
(looking-at "--- +\\| *\\(\\* +\\|([0-9]+) +\\)?")
|
338
|
+
(length (buffer-substring (match-beginning 0)(match-end 0)))))
|
339
|
+
|
340
|
+
(defun rd-cite-region (beg end)
|
341
|
+
"Make region into Verbatim."
|
342
|
+
(interactive "r*")
|
343
|
+
(let (listp prev-indent indent)
|
344
|
+
(save-excursion
|
345
|
+
(goto-char beg)
|
346
|
+
(forward-line -1)
|
347
|
+
(setq listp (rd-line-list-p)
|
348
|
+
prev-indent (rd-current-indentation))
|
349
|
+
(forward-line 1)
|
350
|
+
(setq indent (rd-current-indentation))
|
351
|
+
(if (and listp
|
352
|
+
(not (= (- indent prev-indent) 2)))
|
353
|
+
(rd-indent-region beg end (- (+ prev-indent 2) indent))
|
354
|
+
(cond ((= prev-indent indent)
|
355
|
+
(rd-indent-region beg end 2))
|
356
|
+
((> prev-indent indent)
|
357
|
+
(rd-indent-region beg end prev-indent))
|
358
|
+
(t
|
359
|
+
(goto-char end)))))))
|
360
|
+
|
361
|
+
(defun rd-indent-region (beg end &optional indent)
|
362
|
+
"Make the indent of region deeper by INDENT."
|
363
|
+
(interactive "r*")
|
364
|
+
(setq indent (or indent 2))
|
365
|
+
(save-excursion
|
366
|
+
(goto-char beg)
|
367
|
+
(while (< (point) end)
|
368
|
+
(setq end (+ end indent))
|
369
|
+
(insert-char ? indent)
|
370
|
+
(forward-line 1))))
|
371
|
+
|
372
|
+
(defun rd-yank-as-verbatim (&optional arg)
|
373
|
+
(interactive "P")
|
374
|
+
(let ((beg (point))
|
375
|
+
(end (progn
|
376
|
+
(yank)
|
377
|
+
(point)))
|
378
|
+
)
|
379
|
+
(rd-cite-region beg end)
|
380
|
+
(if arg (goto-char beg))))
|
381
|
+
|
382
|
+
(defun rd-insert-buffer-as-verbatim (buf)
|
383
|
+
(interactive "bInsert buffer (verb): ")
|
384
|
+
(insert-buffer buf)
|
385
|
+
(rd-cite-region (point)(mark)))
|
386
|
+
|
387
|
+
|
388
|
+
(defun rd-insert-url (url label)
|
389
|
+
""
|
390
|
+
(interactive "sURL: \nsLabel: ")
|
391
|
+
(if (string= label "")
|
392
|
+
(rd-insert-reftourl url)
|
393
|
+
(rd-insert-ref (concat label "|URL:" url))))
|
394
|
+
|
395
|
+
(defun rd-search-last-listitem ()
|
396
|
+
(beginning-of-line)
|
397
|
+
(if (looking-at "[ \t]*\\(\\*\\|([0-9])\\|:\\|---\\)[ \t]*")
|
398
|
+
(match-string 0)
|
399
|
+
(and (and (eq
|
400
|
+
(rd-current-indentation)
|
401
|
+
(progn (forward-line -1) (rd-current-indentation))
|
402
|
+
)
|
403
|
+
(not (eq (point) (point-min)) )
|
404
|
+
)
|
405
|
+
(rd-search-last-listitem)
|
406
|
+
)
|
407
|
+
)
|
408
|
+
)
|
409
|
+
|
410
|
+
(defun rd-intelligent-newline ()
|
411
|
+
(interactive)
|
412
|
+
(let (item)
|
413
|
+
(setq item
|
414
|
+
(save-excursion (rd-search-last-listitem) )
|
415
|
+
)
|
416
|
+
(end-of-line)
|
417
|
+
(newline)
|
418
|
+
(if item (insert-string item) )
|
419
|
+
)
|
420
|
+
)
|
421
|
+
|
422
|
+
(defun rd-imenu-create-index ()
|
423
|
+
(let ((root '(nil . nil))
|
424
|
+
cur-alist
|
425
|
+
(cur-level 0)
|
426
|
+
(pattern "^\\(=+\\)[ \t\v\f]*\\(.*?\\)[ \t\v\f]*$")
|
427
|
+
(empty-heading "-")
|
428
|
+
(self-heading ".")
|
429
|
+
pos level heading alist)
|
430
|
+
(save-excursion
|
431
|
+
(goto-char (point-min))
|
432
|
+
(while (re-search-forward pattern (point-max) t)
|
433
|
+
(setq heading (match-string-no-properties 2)
|
434
|
+
level (min 6 (length (match-string-no-properties 1)))
|
435
|
+
pos (match-beginning 1))
|
436
|
+
(if (= (length heading) 0)
|
437
|
+
(setq heading empty-heading))
|
438
|
+
(setq alist (list (cons heading pos)))
|
439
|
+
(cond
|
440
|
+
((= cur-level level) ; new sibling
|
441
|
+
(setcdr cur-alist alist)
|
442
|
+
(setq cur-alist alist))
|
443
|
+
((< cur-level level) ; first child
|
444
|
+
(dotimes (i (- level cur-level 1))
|
445
|
+
(setq alist (list (cons empty-heading alist))))
|
446
|
+
(if cur-alist
|
447
|
+
(let* ((parent (car cur-alist))
|
448
|
+
(self-pos (cdr parent)))
|
449
|
+
(setcdr parent (cons (cons self-heading self-pos) alist)))
|
450
|
+
(setcdr root alist)) ; primogenitor
|
451
|
+
(setq cur-alist alist
|
452
|
+
cur-level level))
|
453
|
+
(t ; new sibling of an ancestor
|
454
|
+
(let ((sibling-alist (last (cdr root))))
|
455
|
+
(dotimes (i (1- level))
|
456
|
+
(setq sibling-alist (last (cdar sibling-alist))))
|
457
|
+
(setcdr sibling-alist alist)
|
458
|
+
(setq cur-alist alist
|
459
|
+
cur-level level))))))
|
460
|
+
(cdr root)))
|
461
|
+
|
462
|
+
(provide 'rd-mode)
|
463
|
+
;;; rd-mode.el ends here
|
464
|
+
|