x2c 0.1
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.
- data/README +103 -0
- data/x2c/config.rb +59 -0
- data/x2c/core/args.rb +36 -0
- data/x2c/core/client.rb +61 -0
- data/x2c/core/collection.rb +136 -0
- data/x2c/core/configure.rb +43 -0
- data/x2c/core/meta.rb +77 -0
- data/x2c/core/prompt.rb +59 -0
- data/x2c/core/resulteval.rb +133 -0
- data/x2c/doc.rb +243 -0
- data/x2c/doc/Array/cdesc-Array.yaml +21 -0
- data/x2c/doc/Array/format-i.yaml +10 -0
- data/x2c/doc/Array/inspect-i.yaml +10 -0
- data/x2c/doc/Array/to_s-i.yaml +10 -0
- data/x2c/doc/Fixnum/cdesc-Fixnum.yaml +20 -0
- data/x2c/doc/Fixnum/hour-i.yaml +12 -0
- data/x2c/doc/Fixnum/min-i.yaml +12 -0
- data/x2c/doc/Fixnum/sec-i.yaml +12 -0
- data/x2c/doc/Hash/cdesc-Hash.yaml +21 -0
- data/x2c/doc/Hash/format-i.yaml +10 -0
- data/x2c/doc/Hash/inspect-i.yaml +10 -0
- data/x2c/doc/Hash/to_s-i.yaml +10 -0
- data/x2c/doc/Help/cdesc-Help.yaml +30 -0
- data/x2c/doc/Help/help-c.yaml +10 -0
- data/x2c/doc/Help/help_hacks-c.yaml +10 -0
- data/x2c/doc/Help/ignore-c.yaml +10 -0
- data/x2c/doc/Help/irb_help-c.yaml +10 -0
- data/x2c/doc/Help/match%3f-c.yaml +10 -0
- data/x2c/doc/Help/trace_help-c.yaml +10 -0
- data/x2c/doc/IRB/ExtendCommandBundle/cdesc-ExtendCommandBundle.yaml +15 -0
- data/x2c/doc/IRB/Prompt/%5b%5d-i.yaml +10 -0
- data/x2c/doc/IRB/Prompt/cdesc-Prompt.yaml +36 -0
- data/x2c/doc/IRB/Prompt/config-i.yaml +10 -0
- data/x2c/doc/IRB/Prompt/main%3d-i.yaml +12 -0
- data/x2c/doc/IRB/Prompt/new-c.yaml +10 -0
- data/x2c/doc/IRB/Prompt/pop-i.yaml +10 -0
- data/x2c/doc/IRB/Prompt/push-i.yaml +10 -0
- data/x2c/doc/IRB/Prompt/set-i.yaml +11 -0
- data/x2c/doc/IRB/Prompt/start-i.yaml +10 -0
- data/x2c/doc/IRB/cdesc-IRB.yaml +15 -0
- data/x2c/doc/Kernel/cdesc-Kernel.yaml +16 -0
- data/x2c/doc/Kernel/xmms-i.yaml +12 -0
- data/x2c/doc/NilClass/cdesc-NilClass.yaml +16 -0
- data/x2c/doc/NilClass/inspect-i.yaml +10 -0
- data/x2c/doc/Object/cdesc-Object.yaml +18 -0
- data/x2c/doc/Object/format-i.yaml +10 -0
- data/x2c/doc/Object/to_d-i.yaml +12 -0
- data/x2c/doc/Prompting/activate-i.yaml +12 -0
- data/x2c/doc/Prompting/back-i.yaml +12 -0
- data/x2c/doc/Prompting/cdesc-Prompting.yaml +45 -0
- data/x2c/doc/Prompting/gointo-i.yaml +12 -0
- data/x2c/doc/Prompting/inspect-i.yaml +12 -0
- data/x2c/doc/Prompting/intersect-i.yaml +12 -0
- data/x2c/doc/Prompting/last%3d-i.yaml +12 -0
- data/x2c/doc/Prompting/last-i.yaml +12 -0
- data/x2c/doc/Prompting/lost-i.yaml +12 -0
- data/x2c/doc/Prompting/makelast-i.yaml +12 -0
- data/x2c/doc/Prompting/pop-i.yaml +12 -0
- data/x2c/doc/Prompting/push-i.yaml +12 -0
- data/x2c/doc/Prompting/stack-i.yaml +12 -0
- data/x2c/doc/Prompting/to_s-i.yaml +12 -0
- data/x2c/doc/Prompting/union-i.yaml +12 -0
- data/x2c/doc/String/cdesc-String.yaml +18 -0
- data/x2c/doc/String/format-i.yaml +10 -0
- data/x2c/doc/String/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/Browse/%5b%5d-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/cd-i.yaml +17 -0
- data/x2c/doc/Xmms/Browse/cdesc-Browse.yaml +34 -0
- data/x2c/doc/Xmms/Browse/dirs-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/files-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Browse/get-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/list-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/mlib_add-i.yaml +12 -0
- data/x2c/doc/Xmms/Browse/open-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Chains/cdesc-Chains.yaml +39 -0
- data/x2c/doc/Xmms/Client/Chains/info-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Chains/remove-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Chains/song-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Config/cdesc-Config.yaml +18 -0
- data/x2c/doc/Xmms/Client/Config/config-i.yaml +18 -0
- data/x2c/doc/Xmms/Client/Daemon/cdesc-Daemon.yaml +27 -0
- data/x2c/doc/Xmms/Client/Daemon/connect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/Daemon/dead_daemon-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Daemon/post_daemon-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Daemon/pre_daemon-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Daemon/start_daemon-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/IPlayback/cdesc-IPlayback.yaml +22 -0
- data/x2c/doc/Xmms/Client/IPlayback/pause-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/IPlayback/play-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/IPlayback/skip-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/ListNames/cdesc-ListNames.yaml +20 -0
- data/x2c/doc/Xmms/Client/ListNames/setup_list-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/ListNames/setup_lists-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Mlib/browse-i.yaml +14 -0
- data/x2c/doc/Xmms/Client/Mlib/cdesc-Mlib.yaml +20 -0
- data/x2c/doc/Xmms/Client/Mlib/rehash-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Remember/cdesc-Remember.yaml +25 -0
- data/x2c/doc/Xmms/Client/Remember/gointo-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Remember/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/Remember/push-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Remember/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/Search/cdesc-Search.yaml +17 -0
- data/x2c/doc/Xmms/Client/Shortcut/cdesc-Shortcut.yaml +22 -0
- data/x2c/doc/Xmms/Client/Shortcut/now-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Shortcut/seek-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Shortcut/volume-i.yaml +14 -0
- data/x2c/doc/Xmms/Client/Vote/cdesc-Vote.yaml +24 -0
- data/x2c/doc/Xmms/Client/Vote/rating-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Vote/remove_rating%21-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Vote/undo_voting-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/Vote/vote-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/__connect-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/async_start-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/bindata_add-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/bindata_retrieve-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/c-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/cdesc-Client.yaml +169 -0
- data/x2c/doc/Xmms/Client/coll_find-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_get-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_idlist_from_playlist_file-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_list-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_query_ids-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_query_info-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_remove-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_rename-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/coll_save-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/configure-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/configval_get-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/configval_list-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/configval_register-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/configval_set-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/connect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/continue-i.yaml +11 -0
- data/x2c/doc/Xmms/Client/format-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/handled_connect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/help-i.yaml +16 -0
- data/x2c/doc/Xmms/Client/main-c.yaml +12 -0
- data/x2c/doc/Xmms/Client/main_stats-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/medialib_add_entry-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_entry_property_remove-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_entry_property_set-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_entry_remove-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_get_id-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_get_info-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_path_import-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_rehash-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/medialib_select-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/new-c.yaml +12 -0
- data/x2c/doc/Xmms/Client/on_disconnect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/playback_pause-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_seek_ms-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_seek_ms_rel-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_seek_samples-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_seek_samples_rel-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_start-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_stop-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_tickle-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_volume_get-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playback_volume_set-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playbacklist-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/playlist-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playlist_list-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playlist_set_next-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/playlist_set_next_rel-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/plugin_list-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/post_connect-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/pre_connect-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/quit-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/setup-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/showprompt-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/shutdown-i.yaml +12 -0
- data/x2c/doc/Xmms/Client/welcome-i.yaml +10 -0
- data/x2c/doc/Xmms/Client/xform_media_browse-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/%26-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/%5b%5d%3d-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/%5b%5d-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/%7c-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/%7e-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Attributes/add-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Attributes/cdesc-Attributes.yaml +25 -0
- data/x2c/doc/Xmms/Collection/Attributes/field-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Attributes/field_string-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Attributes/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Chains/cdesc-Chains.yaml +39 -0
- data/x2c/doc/Xmms/Collection/Chains/list-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Chains/load-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Chains/load_form_file-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Chains/play-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Chains/playlist-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Chains/save-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/FormQuery/cdesc-FormQuery.yaml +22 -0
- data/x2c/doc/Xmms/Collection/FormQuery/method_missing-i.yaml +14 -0
- data/x2c/doc/Xmms/Collection/Info/cdesc-Info.yaml +32 -0
- data/x2c/doc/Xmms/Collection/Info/info-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Info/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Operands/cdesc-Operands.yaml +18 -0
- data/x2c/doc/Xmms/Collection/Operands/empty%3f-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Query/%3c%3d-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Query/%3e%3d-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Query/%7e-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Query/_-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Query/cdesc-Query.yaml +32 -0
- data/x2c/doc/Xmms/Collection/Query/exist%3f-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/Query/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Query/has-i.yaml +13 -0
- data/x2c/doc/Xmms/Collection/Query/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/acceptable-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/awesome-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/cdesc-Vote.yaml +32 -0
- data/x2c/doc/Xmms/Collection/Vote/good-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/nice-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/notsucking-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/Vote/unvoted-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/and-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/attribute-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/cdesc-Collection.yaml +140 -0
- data/x2c/doc/Xmms/Collection/complement-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/default-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/format-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/idlis-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/idlist%3d-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/intersect-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/load-c.yaml +10 -0
- data/x2c/doc/Xmms/Collection/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Collection/new_constructor-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/new_list-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/new_pshuffle-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/new_selection-c.yaml +12 -0
- data/x2c/doc/Xmms/Collection/not-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/operand-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/or-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/parent-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/pshuffle-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/queue-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/tree_inject-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/tree_walk-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/typ-i.yaml +10 -0
- data/x2c/doc/Xmms/Collection/union-i.yaml +12 -0
- data/x2c/doc/Xmms/Collection/universe-c.yaml +12 -0
- data/x2c/doc/Xmms/Config/%5b%5d%3d-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/%5b%5d-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/cdesc-Config.yaml +47 -0
- data/x2c/doc/Xmms/Config/configs-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/join-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/keys-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/method_missing-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/methods-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Config/parent-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/respond_to%3f-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/subs-i.yaml +10 -0
- data/x2c/doc/Xmms/Config/subtrees-i.yaml +10 -0
- data/x2c/doc/Xmms/Duration/cdesc-Duration.yaml +25 -0
- data/x2c/doc/Xmms/Duration/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Duration/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Duration/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/Format/cdesc-Format.yaml +22 -0
- data/x2c/doc/Xmms/Format/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Format/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/Format/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/Info/cdesc-Info.yaml +32 -0
- data/x2c/doc/Xmms/Info/count-i.yaml +12 -0
- data/x2c/doc/Xmms/Info/format-i.yaml +12 -0
- data/x2c/doc/Xmms/Info/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/Info/method_missing-i.yaml +10 -0
- data/x2c/doc/Xmms/Info/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Info/search-i.yaml +12 -0
- data/x2c/doc/Xmms/Info/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/Media/cdesc-Media.yaml +31 -0
- data/x2c/doc/Xmms/Media/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Media/media-i.yaml +12 -0
- data/x2c/doc/Xmms/Media/mlib_add-i.yaml +12 -0
- data/x2c/doc/Xmms/Media/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Media/parent-i.yaml +12 -0
- data/x2c/doc/Xmms/Options/%5b%5d%3d-c.yaml +10 -0
- data/x2c/doc/Xmms/Options/%5b%5d-c.yaml +10 -0
- data/x2c/doc/Xmms/Options/cdesc-Options.yaml +24 -0
- data/x2c/doc/Xmms/Options/get_argv-c.yaml +10 -0
- data/x2c/doc/Xmms/Options/help-c.yaml +10 -0
- data/x2c/doc/Xmms/Options/opts-c.yaml +10 -0
- data/x2c/doc/Xmms/Playlist/Chains/cdesc-Chains.yaml +18 -0
- data/x2c/doc/Xmms/Playlist/Chains/play-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/Shortcut/add-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/Shortcut/cdesc-Shortcut.yaml +24 -0
- data/x2c/doc/Xmms/Playlist/Shortcut/insert-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/Shortcut/move-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/Shortcut/remove_entries-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/add_collection-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/add_entry-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/cdesc-Playlist.yaml +56 -0
- data/x2c/doc/Xmms/Playlist/clear-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/collection-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/current_pos-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/entries-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Playlist/insert_entry-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/load-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/name-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/new-c.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/playlist_move_entry-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/radd-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/remove-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/remove_entry-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/shuffle-i.yaml +12 -0
- data/x2c/doc/Xmms/Playlist/sort-i.yaml +12 -0
- data/x2c/doc/Xmms/PropDict/Mlib/cdesc-Mlib.yaml +30 -0
- data/x2c/doc/Xmms/PropDict/Mlib/method_missing-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/Mlib/methods-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/Mlib/rehash-i.yaml +12 -0
- data/x2c/doc/Xmms/PropDict/Mlib/remove%21-i.yaml +12 -0
- data/x2c/doc/Xmms/PropDict/Mlib/respond_to%3f-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/cdesc-PropDict.yaml +27 -0
- data/x2c/doc/Xmms/PropDict/format-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/id-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/inspect-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/to_h-i.yaml +10 -0
- data/x2c/doc/Xmms/PropDict/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/Remember/cdesc-Remember.yaml +18 -0
- data/x2c/doc/Xmms/Result/cdesc-Result.yaml +20 -0
- data/x2c/doc/Xmms/Result/val-i.yaml +12 -0
- data/x2c/doc/Xmms/Song/cdesc-Song.yaml +29 -0
- data/x2c/doc/Xmms/Song/format-c.yaml +12 -0
- data/x2c/doc/Xmms/Song/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Song/info-i.yaml +10 -0
- data/x2c/doc/Xmms/Song/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/Chains/cdesc-Chains.yaml +29 -0
- data/x2c/doc/Xmms/Songlist/Chains/idlist-i.yaml +12 -0
- data/x2c/doc/Xmms/Songlist/Chains/queue-i.yaml +12 -0
- data/x2c/doc/Xmms/Songlist/cdesc-Songlist.yaml +37 -0
- data/x2c/doc/Xmms/Songlist/collection-i.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/format-i.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/format_hash-i.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/info_hash-i.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/new-c.yaml +10 -0
- data/x2c/doc/Xmms/Songlist/songs-i.yaml +12 -0
- data/x2c/doc/Xmms/Songlist/to_s-i.yaml +10 -0
- data/x2c/doc/Xmms/cdesc-Xmms.yaml +18 -0
- data/x2c/doc/Xmms/save_call-c.yaml +12 -0
- data/x2c/doc/created.rid +1 -0
- data/x2c/plug/async.rb +50 -0
- data/x2c/plug/chains.rb +148 -0
- data/x2c/plug/config.rb +90 -0
- data/x2c/plug/daemon.rb +72 -0
- data/x2c/plug/format.rb +251 -0
- data/x2c/plug/help.rb +240 -0
- data/x2c/plug/info.rb +86 -0
- data/x2c/plug/iplayback.rb +49 -0
- data/x2c/plug/listnames.rb +43 -0
- data/x2c/plug/mlib.rb +128 -0
- data/x2c/plug/query.rb +51 -0
- data/x2c/plug/remember.rb +124 -0
- data/x2c/plug/shortcuts.rb +108 -0
- data/x2c/plug/tutorial.rb +134 -0
- data/x2c/plug/vote.rb +77 -0
- data/x2c/x2c +36 -0
- data/x2c/x2c.rb +16 -0
- metadata +453 -0
data/x2c/plug/info.rb
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
require 'plug/format.rb'
|
|
3
|
+
|
|
4
|
+
module Xmms
|
|
5
|
+
# The info calls is used to show stats about Colelctions
|
|
6
|
+
# and search inside of them
|
|
7
|
+
#
|
|
8
|
+
# You can futher select only a certain field for information
|
|
9
|
+
# by typing info.field
|
|
10
|
+
class Info
|
|
11
|
+
include Format
|
|
12
|
+
def initialize coll = Collection.universe, *info
|
|
13
|
+
info=[:artist, :album, :title] if info.empty?
|
|
14
|
+
@coll = coll
|
|
15
|
+
@info = info
|
|
16
|
+
end
|
|
17
|
+
# search str the information object
|
|
18
|
+
def search str=nil
|
|
19
|
+
str ||= Readline.readline('search << ')
|
|
20
|
+
ids = []
|
|
21
|
+
@info.map do |i|
|
|
22
|
+
list = xmms.coll_query_info(@coll,[i.to_s,'id']).val.each do |h|
|
|
23
|
+
ids << h[:id] if h[i] =~ /#{str}/
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Songlist.new(ids)
|
|
27
|
+
end
|
|
28
|
+
def to_s
|
|
29
|
+
' '+format(' ', 1337)
|
|
30
|
+
end
|
|
31
|
+
def inspect
|
|
32
|
+
' '+format(' ', 1337)
|
|
33
|
+
end
|
|
34
|
+
# count of infos available
|
|
35
|
+
def count
|
|
36
|
+
xmms.coll_query_info(@coll, @info.last.to_s).length
|
|
37
|
+
end
|
|
38
|
+
# show the stats
|
|
39
|
+
def format idt=' ', show=3
|
|
40
|
+
@info.map do |i|
|
|
41
|
+
l = xmms.coll_query_info(@coll,i.to_s)
|
|
42
|
+
return '' if l.length.zero?
|
|
43
|
+
while l.respond_to?(:val)
|
|
44
|
+
l = l.val
|
|
45
|
+
end
|
|
46
|
+
min = [l.length, show].min
|
|
47
|
+
all = (min == l.length)
|
|
48
|
+
"#{l.length} #{i}s:\n#{idt} #{(l[0...min].map{|a| a.values}+(all ? [] : ['...'])).format(idt+' ')}"
|
|
49
|
+
end.join("\n#{idt}")
|
|
50
|
+
end
|
|
51
|
+
def method_missing id
|
|
52
|
+
Info.new @coll, id
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
class Collection
|
|
56
|
+
# the info plugin shows nice stats and makes a collections searchable
|
|
57
|
+
# * info creates the default info object
|
|
58
|
+
# * artists, albums, titles, ids and urls show only the specified field
|
|
59
|
+
# * search will search the collection
|
|
60
|
+
module Info
|
|
61
|
+
# creates the info object to show stats
|
|
62
|
+
def info
|
|
63
|
+
Xmms::Info.new(self)
|
|
64
|
+
end
|
|
65
|
+
alias_forward :artists, :info, :artist
|
|
66
|
+
alias_forward :albums, :info, :album
|
|
67
|
+
alias_forward :titles, :info, :tilte
|
|
68
|
+
alias_forward :ids, :info, :id
|
|
69
|
+
alias_forward :urls, :info, :url
|
|
70
|
+
alias_forward :search, :info
|
|
71
|
+
|
|
72
|
+
alias_method :__inspect, :inspect
|
|
73
|
+
def inspect
|
|
74
|
+
__inspect+"\n "+info.format
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
include Info
|
|
78
|
+
end
|
|
79
|
+
class Client
|
|
80
|
+
# you can serach the media library with the s/search command
|
|
81
|
+
module Search
|
|
82
|
+
alias_forward :search, :universe
|
|
83
|
+
end
|
|
84
|
+
include Search
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
require 'plug/chains.rb'
|
|
3
|
+
|
|
4
|
+
module Xmms
|
|
5
|
+
class Client
|
|
6
|
+
# the Inteligent Playback module is used to extend the play, pause and skip commands
|
|
7
|
+
module IPlayback
|
|
8
|
+
# skip n tracks
|
|
9
|
+
def skip n=1
|
|
10
|
+
playlist_set_next_rel n
|
|
11
|
+
playback_tickle
|
|
12
|
+
end
|
|
13
|
+
# pause/unpase
|
|
14
|
+
def pause
|
|
15
|
+
if playback_status.val != Xmms::Client::PAUSE
|
|
16
|
+
playback_pause
|
|
17
|
+
else
|
|
18
|
+
playback_start
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
# play the last result
|
|
22
|
+
def play arg=nil
|
|
23
|
+
val = case arg
|
|
24
|
+
when Collection ; arg.play
|
|
25
|
+
when Playlist ; arg.play
|
|
26
|
+
when Songlist ; arg.idlist.play
|
|
27
|
+
when String ;
|
|
28
|
+
begin
|
|
29
|
+
playlist(arg).play
|
|
30
|
+
rescue Result::ValueError => e
|
|
31
|
+
coll_get(arg).play
|
|
32
|
+
rescue Result::ValueError => e
|
|
33
|
+
raise Result::ValueError, "can't find valid list or collection #{arg} (#{e})"
|
|
34
|
+
end
|
|
35
|
+
when nil
|
|
36
|
+
begin
|
|
37
|
+
last ? last.play : current
|
|
38
|
+
rescue
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
raise(Result::ValueError,"Can't play a #{arg.class}")
|
|
43
|
+
end
|
|
44
|
+
playback_start.val; ls
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
include IPlayback
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
module Xmms
|
|
3
|
+
class Client
|
|
4
|
+
# the ListNames plugin gives esay access to saved Collection.
|
|
5
|
+
# it will create Constances or functions for the name of all collection,
|
|
6
|
+
# so you can access them by typing there names
|
|
7
|
+
module ListNames
|
|
8
|
+
# set up a list
|
|
9
|
+
def setup_list n
|
|
10
|
+
s = catch(:warn) do
|
|
11
|
+
begin
|
|
12
|
+
c = coll_get(n).val
|
|
13
|
+
c.name = n
|
|
14
|
+
throw(:warn, "constant #{n} already exists") if Client.const_defined?(n)
|
|
15
|
+
Client.const_set(n,c)
|
|
16
|
+
rescue NameError
|
|
17
|
+
throw(:warn, "method #{n} already exists") if self.respond_to?(n)
|
|
18
|
+
Client.send :define_method, n.to_sym do
|
|
19
|
+
c
|
|
20
|
+
end
|
|
21
|
+
rescue NameError
|
|
22
|
+
throw(:warn,"consider renaming it")
|
|
23
|
+
rescue
|
|
24
|
+
throw(:warn,"perhaps something is inconsistent")
|
|
25
|
+
end;nil
|
|
26
|
+
end
|
|
27
|
+
s && puts("can't create shortcut for #{n}, #{s}")
|
|
28
|
+
end
|
|
29
|
+
# sets up constances and methods according to collection names
|
|
30
|
+
def setup_lists
|
|
31
|
+
coll_list.each do |n|
|
|
32
|
+
setup_list n
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
include ListNames
|
|
37
|
+
end
|
|
38
|
+
class Collection
|
|
39
|
+
after_method_hook :save do |v|
|
|
40
|
+
xmms.setup_list v.name
|
|
41
|
+
end rescue nil
|
|
42
|
+
end
|
|
43
|
+
end
|
data/x2c/plug/mlib.rb
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
module Xmms
|
|
3
|
+
module Format; end
|
|
4
|
+
module Remember; end
|
|
5
|
+
# class for browsing media
|
|
6
|
+
class Media
|
|
7
|
+
Options['media-dir'=> ["file://#{Dir.pwd}", "path to the root of you muisc dir"]]
|
|
8
|
+
include Format
|
|
9
|
+
include Remember
|
|
10
|
+
attr_reader :path
|
|
11
|
+
def initialize path=Options['media-dir']
|
|
12
|
+
@path = path[/^file:\/\//] ? path : 'file://'+path
|
|
13
|
+
end
|
|
14
|
+
def format idt=' '
|
|
15
|
+
'parent <-' + "\n#{idt}" +
|
|
16
|
+
@path
|
|
17
|
+
end
|
|
18
|
+
# parent of file
|
|
19
|
+
def parent
|
|
20
|
+
Browse.new(File.dirname(@path))
|
|
21
|
+
end
|
|
22
|
+
# returns a new collection of files under current path
|
|
23
|
+
def media
|
|
24
|
+
Collection.new_match(:url => "#{@path}%")
|
|
25
|
+
end
|
|
26
|
+
# adds media to mlib
|
|
27
|
+
def mlib_add
|
|
28
|
+
xmms.medialib_add_entry(@path).val
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
# class for browsing media
|
|
32
|
+
class Browse < Media
|
|
33
|
+
# list all
|
|
34
|
+
def list
|
|
35
|
+
xmms.xform_media_browse @path
|
|
36
|
+
end
|
|
37
|
+
# list dir
|
|
38
|
+
def dirs
|
|
39
|
+
list.map{|h| h[:isdir].zero? ? nil : h[:path]}.compact.map{|d| d.sub(/^#{@path}\/*/,'')}
|
|
40
|
+
end
|
|
41
|
+
# list files
|
|
42
|
+
def files
|
|
43
|
+
list.map{|h| h[:isdir].zero? ? h[:path] : nil}.compact.map{|f| f.sub(/^#{@path}\/*/,'')}
|
|
44
|
+
end
|
|
45
|
+
def format idt=' '
|
|
46
|
+
'parent <-' + "\n#{idt}" +
|
|
47
|
+
dirs.map{|d| d+' ->'}.format + "\n#{idt}" +
|
|
48
|
+
files.map.format
|
|
49
|
+
end
|
|
50
|
+
# open sub
|
|
51
|
+
def cd sub
|
|
52
|
+
if files.include?(sub)
|
|
53
|
+
Media.new(File.join(@path,sub))
|
|
54
|
+
else
|
|
55
|
+
Browse.new(File.join(@path,sub))
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
alias_method :[], :cd
|
|
59
|
+
alias_method :open, :cd
|
|
60
|
+
alias_method :get, :cd
|
|
61
|
+
# adds media in path to mlib
|
|
62
|
+
def mlib_add
|
|
63
|
+
xmms.medialib_path_import(@path).val
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
class PropDict
|
|
67
|
+
# the Mlib module can change the info for a certain song:
|
|
68
|
+
# you can rehash it, set some or remove infos.
|
|
69
|
+
#
|
|
70
|
+
# As all is ruby, you can simple edit a hole branch of songs
|
|
71
|
+
# with thing like each:
|
|
72
|
+
# ls.each{|s| s.artist = 'Bar'}
|
|
73
|
+
# (artist == foobar).list.each{|s| s.rehash}
|
|
74
|
+
module Mlib
|
|
75
|
+
# rehash the info
|
|
76
|
+
def rehash
|
|
77
|
+
xmms.medialib_rehash(self[:id]).val
|
|
78
|
+
end
|
|
79
|
+
# remove song form media lib
|
|
80
|
+
def remove!
|
|
81
|
+
xmms.medialib_entry_remove(self[:id]).val
|
|
82
|
+
end
|
|
83
|
+
alias_method :__respond_to?, :respond_to?
|
|
84
|
+
alias_method :__methods, :methods
|
|
85
|
+
def respond_to? id
|
|
86
|
+
__respond_to?(id) || self[id] || ([?=,?!].include?(id.to_s[-1]) && self[id.to_s.chop.to_sym])
|
|
87
|
+
end
|
|
88
|
+
def methods
|
|
89
|
+
k = to_h.keys.map{|k| k.to_s}
|
|
90
|
+
__methods + k + k.map{|k| k+'='} + k.map{|k| k+'!'}
|
|
91
|
+
end
|
|
92
|
+
def method_missing key, val=nil, *args
|
|
93
|
+
case key.to_s[-1]
|
|
94
|
+
when ?= ; xmms.medialib_entry_property_set(self[:id], key.to_s.chop.to_sym, val).val
|
|
95
|
+
when ?! ; xmms.medialib_entry_property_remove(self[:id], key.to_s.chop.to_sym).val
|
|
96
|
+
else ; self[key] || raise(NoMethodError,"unknow field #{key}", caller)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
include Mlib
|
|
101
|
+
end
|
|
102
|
+
class Client
|
|
103
|
+
# the Mlib module is change thing inside the mlib, you
|
|
104
|
+
# can browse you file system and add pathes or files
|
|
105
|
+
# or rehash the media lib. Also have a look at PropDict::Mlib
|
|
106
|
+
# where you can edit the medialib entry of a song
|
|
107
|
+
module Mlib
|
|
108
|
+
# browse for new media:
|
|
109
|
+
# browse [path]
|
|
110
|
+
# cd 'subdir'
|
|
111
|
+
# last['file'].mlib_add # add singlen file
|
|
112
|
+
# cd '..'
|
|
113
|
+
# cd '..'
|
|
114
|
+
# last.open('otherdir')
|
|
115
|
+
# mlib_add # add other dir
|
|
116
|
+
# cd '..'
|
|
117
|
+
# get('jod').mlib_add # add 'jod'
|
|
118
|
+
def browse path=Options['media-dir']
|
|
119
|
+
Browse.new path
|
|
120
|
+
end
|
|
121
|
+
# rehash media, arg can be a list, collection or id
|
|
122
|
+
def rehash arg=nil
|
|
123
|
+
arg ? Song.new(arg).rehash : medialib_rehash(0).val
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
include Mlib
|
|
127
|
+
end
|
|
128
|
+
end
|
data/x2c/plug/query.rb
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
module Xmms
|
|
3
|
+
class Collection
|
|
4
|
+
# in the middle class to format querys, eg. ((Collection.field == value).field > num) ...
|
|
5
|
+
class Query
|
|
6
|
+
def initialize field, base=Collection.default
|
|
7
|
+
@field = field.to_s
|
|
8
|
+
@base = base
|
|
9
|
+
end
|
|
10
|
+
# with this equals, match, hash, greater, smaller should work
|
|
11
|
+
[:equals, :match, :greater, :smaller].each do |id|
|
|
12
|
+
new = "new_#{id.to_s}".to_sym
|
|
13
|
+
define_method id do |*val|
|
|
14
|
+
Collection.send(new, @base, @field=>val[0])
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
def ~
|
|
18
|
+
~has
|
|
19
|
+
end
|
|
20
|
+
def has
|
|
21
|
+
Collection.new_has(@base, @field=>nil)
|
|
22
|
+
end
|
|
23
|
+
def >= val
|
|
24
|
+
(self>val) | (self==val)
|
|
25
|
+
end
|
|
26
|
+
def <= val
|
|
27
|
+
(self<val) | (self==val)
|
|
28
|
+
end
|
|
29
|
+
alias_method :is , :equals; alias_method :==, :equals
|
|
30
|
+
alias_method :about , :match ; alias_method :=~, :match
|
|
31
|
+
alias_method :> , :greater ; alias_method :< , :smaller
|
|
32
|
+
alias_method :exist? , :has ; alias_method :_ , :has
|
|
33
|
+
end
|
|
34
|
+
# the Query plugin will give you access to a powerfull way to form querys on the medialib:
|
|
35
|
+
# for example the following will create a query:
|
|
36
|
+
# universe.((artist =~ '%Foob_r').genre == 'Bla').duration > 10000
|
|
37
|
+
# All fields can bes used with ==, =~, >, <, >=, <= and a string as argument.
|
|
38
|
+
# you can write ~field and field._, to get all media, where field is unset/set
|
|
39
|
+
module FormQuery
|
|
40
|
+
# creates a new query object, used to form querys.
|
|
41
|
+
# The field of the query is dynamicalle taken form the name of the function.
|
|
42
|
+
# The type and value has to be specified later.
|
|
43
|
+
# artist => will create a query with the artist field
|
|
44
|
+
# artist == 'Foo' => will specifiy the query as type equal with value 'Foo'
|
|
45
|
+
def method_missing id
|
|
46
|
+
Collection::Query.new(id,self)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
include FormQuery
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Copyright by Daniel Waeber, see the LICENSE file for details
|
|
2
|
+
|
|
3
|
+
# remembers last results, the Xmms::Remember and Client::Remember for details
|
|
4
|
+
module Prompting
|
|
5
|
+
include Xmms
|
|
6
|
+
@@lastval = Collection.default
|
|
7
|
+
@@stackval = []
|
|
8
|
+
@@gointo = []
|
|
9
|
+
# retun the stack
|
|
10
|
+
def stack
|
|
11
|
+
@@stackval
|
|
12
|
+
end
|
|
13
|
+
# unify all Collections on the stack
|
|
14
|
+
def union
|
|
15
|
+
stack.inject{|a,b| b.is_a?(Collection) ? a|b : a}
|
|
16
|
+
end
|
|
17
|
+
# intersect all Collections on the stack
|
|
18
|
+
def intersect
|
|
19
|
+
stack.inject{|a,b| b.is_a?(Collection) ? a&b : a}
|
|
20
|
+
end
|
|
21
|
+
# push self to stack
|
|
22
|
+
def push
|
|
23
|
+
@@stackval.push self
|
|
24
|
+
end
|
|
25
|
+
# pop value form stack
|
|
26
|
+
def pop
|
|
27
|
+
@@stackval.pop
|
|
28
|
+
end
|
|
29
|
+
# get the prelast value
|
|
30
|
+
def lost
|
|
31
|
+
@@lostval.makelast
|
|
32
|
+
end
|
|
33
|
+
# return last rememberd value
|
|
34
|
+
def last
|
|
35
|
+
@@lastval
|
|
36
|
+
end
|
|
37
|
+
# set rememberd value
|
|
38
|
+
def last= val
|
|
39
|
+
@@lostval = @@lastval
|
|
40
|
+
if @@gointo.last
|
|
41
|
+
@@lastval = val
|
|
42
|
+
$prompt.set self
|
|
43
|
+
return nil
|
|
44
|
+
else
|
|
45
|
+
@@lastval = val
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
# set self to rememberd value
|
|
49
|
+
def makelast
|
|
50
|
+
self.last = self unless last==self
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# set prompt to self and cascade on subwaluse
|
|
54
|
+
def gointo
|
|
55
|
+
@@gointo.push true
|
|
56
|
+
$prompt.push self
|
|
57
|
+
end
|
|
58
|
+
# only set the promt to object
|
|
59
|
+
def activate
|
|
60
|
+
@@gointo.push false
|
|
61
|
+
$prompt.push self
|
|
62
|
+
end
|
|
63
|
+
# go back to previous prompt
|
|
64
|
+
def back
|
|
65
|
+
@@gointo.pop
|
|
66
|
+
$prompt.pop
|
|
67
|
+
$prompt.set(xmms) unless $prompt.main
|
|
68
|
+
makelast
|
|
69
|
+
end
|
|
70
|
+
# new formating
|
|
71
|
+
def to_s
|
|
72
|
+
self.makelast
|
|
73
|
+
((last==self)?'`':' ') + self.format
|
|
74
|
+
end
|
|
75
|
+
# new formating
|
|
76
|
+
def inspect
|
|
77
|
+
self.makelast
|
|
78
|
+
((last==self)?'`':' ') + self.format
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
module Xmms
|
|
83
|
+
class Client
|
|
84
|
+
# the Remember module is used to remember last results.
|
|
85
|
+
# You can push the last result on a stack, pop form it or gointo it
|
|
86
|
+
# all unkonwn methods will be forwarded to the last result
|
|
87
|
+
module Remember
|
|
88
|
+
include Prompting
|
|
89
|
+
def to_s; format end
|
|
90
|
+
def inspect;format end
|
|
91
|
+
# push last value instead of client
|
|
92
|
+
def push val=last
|
|
93
|
+
val.push
|
|
94
|
+
end
|
|
95
|
+
# gointo last value instead of client
|
|
96
|
+
def gointo val=last
|
|
97
|
+
val.gointo
|
|
98
|
+
end
|
|
99
|
+
# forward to last
|
|
100
|
+
dynamic_forward :last
|
|
101
|
+
end
|
|
102
|
+
include Remember
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# include support for being automaticalley remembered
|
|
106
|
+
# so if you get a result of a type include Remember,
|
|
107
|
+
# last will be set to the result.
|
|
108
|
+
# For more detail on last, see Client::Remember
|
|
109
|
+
module Remember
|
|
110
|
+
include Prompting
|
|
111
|
+
end
|
|
112
|
+
class Collection
|
|
113
|
+
include Remember
|
|
114
|
+
end
|
|
115
|
+
class Songlist
|
|
116
|
+
include Remember
|
|
117
|
+
end
|
|
118
|
+
class Song
|
|
119
|
+
include Remember
|
|
120
|
+
end
|
|
121
|
+
class Playlist
|
|
122
|
+
include Remember
|
|
123
|
+
end
|
|
124
|
+
end
|