xiki 0.5.0a
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/Gemfile +11 -0
- data/LICENSE +22 -0
- data/README.markdown +83 -0
- data/Rakefile +8 -0
- data/bin/xiki +46 -0
- data/etc/command/xiki_command.rb +203 -0
- data/etc/command/xiki_process.rb +52 -0
- data/etc/command/xiki_wrapper +2 -0
- data/etc/js/menu1.js +55 -0
- data/etc/js/xiki.js +259 -0
- data/etc/logo.png +0 -0
- data/etc/presentations/bootstrap.deck +5 -0
- data/etc/presentations/databases.deck +41 -0
- data/etc/presentations/diffs.deck +23 -0
- data/etc/presentations/documentation.deck +14 -0
- data/etc/presentations/effects.deck +5 -0
- data/etc/presentations/face.deck +297 -0
- data/etc/presentations/files.deck +79 -0
- data/etc/presentations/icons.deck +22 -0
- data/etc/presentations/images.deck +24 -0
- data/etc/presentations/key_shortcuts.deck +16 -0
- data/etc/presentations/macros.deck +18 -0
- data/etc/presentations/menu_classes.deck +44 -0
- data/etc/presentations/menu_directories.deck +30 -0
- data/etc/presentations/notes.deck +19 -0
- data/etc/presentations/other_languages.deck +55 -0
- data/etc/presentations/other_wiki_syntaxes.deck +4 -0
- data/etc/presentations/piano.deck +5 -0
- data/etc/presentations/potential/diffs.deck +38 -0
- data/etc/presentations/potential/evolution.deck +18 -0
- data/etc/presentations/potential/intro.deck +711 -0
- data/etc/presentations/potential/intro1.deck +711 -0
- data/etc/presentations/potential/intro2.deck +97 -0
- data/etc/presentations/potential/make_mysql_menu.deck +36 -0
- data/etc/presentations/potential/ruby_development.deck +17 -0
- data/etc/presentations/potential/ui_prototyping.deck +50 -0
- data/etc/presentations/potential/web_dev.deck +4 -0
- data/etc/presentations/potential/web_development.deck +10 -0
- data/etc/presentations/potential/wiki.deck +45 -0
- data/etc/presentations/presentations.deck +24 -0
- data/etc/presentations/rails_development.deck +29 -0
- data/etc/presentations/search_key_shortcuts.deck +37 -0
- data/etc/presentations/simplest_possible_ui.deck +37 -0
- data/etc/presentations/svg.deck +5 -0
- data/etc/presentations/testing.deck +28 -0
- data/etc/presentations/the_end.deck +13 -0
- data/etc/presentations/type_something_and_double_click.deck +57 -0
- data/etc/presentations/type_the_acronym.deck +144 -0
- data/etc/presentations/web_browser.deck +56 -0
- data/etc/presentations/xiki_command.deck +20 -0
- data/etc/presentations/xiki_url.deck +14 -0
- data/etc/shark.icns +0 -0
- data/etc/shark_script.icns +0 -0
- data/etc/snippets/html.notes +7 -0
- data/etc/snippets/notes.notes +20 -0
- data/etc/snippets/rb.notes +38 -0
- data/etc/templates/menu_template.menu +2 -0
- data/etc/templates/menu_template.rb +8 -0
- data/etc/templates/template.rb +5 -0
- data/etc/themes/Dark_Metal.notes +28 -0
- data/etc/themes/Orange_Path.notes +15 -0
- data/etc/themes/Shiny_Blue.notes +27 -0
- data/etc/themes/Shiny_Green.notes +27 -0
- data/etc/wrappers/wrapper.js +17 -0
- data/etc/wrappers/wrapper.py +20 -0
- data/etc/wrappers/wrapper.rb +25 -0
- data/lib/block.rb +72 -0
- data/lib/bookmarks.rb +352 -0
- data/lib/buffers.rb +170 -0
- data/lib/clipboard.rb +333 -0
- data/lib/code.rb +860 -0
- data/lib/code_tree.rb +476 -0
- data/lib/color.rb +274 -0
- data/lib/console.rb +557 -0
- data/lib/control_lock.rb +9 -0
- data/lib/control_tab.rb +176 -0
- data/lib/core_ext.rb +31 -0
- data/lib/cursor.rb +111 -0
- data/lib/deletes.rb +65 -0
- data/lib/diff_log.rb +297 -0
- data/lib/effects.rb +145 -0
- data/lib/environment.rb +5 -0
- data/lib/file_tree.rb +1875 -0
- data/lib/files.rb +334 -0
- data/lib/hide.rb +259 -0
- data/lib/history.rb +286 -0
- data/lib/image.rb +51 -0
- data/lib/incrementer.rb +15 -0
- data/lib/insert.rb +7 -0
- data/lib/irc.rb +22 -0
- data/lib/key_bindings.rb +658 -0
- data/lib/keys.rb +754 -0
- data/lib/launcher.rb +1351 -0
- data/lib/line.rb +429 -0
- data/lib/links.rb +6 -0
- data/lib/location.rb +175 -0
- data/lib/macros.rb +48 -0
- data/lib/man.rb +19 -0
- data/lib/menu.rb +708 -0
- data/lib/merb.rb +259 -0
- data/lib/message.rb +5 -0
- data/lib/meths.rb +56 -0
- data/lib/mode.rb +34 -0
- data/lib/move.rb +248 -0
- data/lib/notes.rb +1000 -0
- data/lib/numbers.rb +45 -0
- data/lib/ol.rb +203 -0
- data/lib/ol_helper.rb +44 -0
- data/lib/overlay.rb +167 -0
- data/lib/pause_means_space.rb +68 -0
- data/lib/php.rb +22 -0
- data/lib/projects.rb +21 -0
- data/lib/relinquish_exception.rb +2 -0
- data/lib/remote.rb +206 -0
- data/lib/requirer.rb +46 -0
- data/lib/rest_tree.rb +108 -0
- data/lib/ruby.rb +57 -0
- data/lib/ruby_console.rb +165 -0
- data/lib/search.rb +1572 -0
- data/lib/search_term.rb +40 -0
- data/lib/snippet.rb +68 -0
- data/lib/specs.rb +229 -0
- data/lib/styles.rb +274 -0
- data/lib/svn.rb +682 -0
- data/lib/text_util.rb +110 -0
- data/lib/tree.rb +1871 -0
- data/lib/tree_cursor.rb +87 -0
- data/lib/trouble_shooting.rb +27 -0
- data/lib/url_tree.rb +11 -0
- data/lib/view.rb +1474 -0
- data/lib/window.rb +133 -0
- data/lib/xiki.rb +404 -0
- data/menus/accounts.rb +5 -0
- data/menus/address_book.rb +21 -0
- data/menus/agenda.rb +28 -0
- data/menus/all.rb +5 -0
- data/menus/amazon.rb +16 -0
- data/menus/app.rb +16 -0
- data/menus/applescript.rb +46 -0
- data/menus/as.rb +15 -0
- data/menus/bookmarklet.rb +63 -0
- data/menus/bootstrap.rb +568 -0
- data/menus/browse.rb +13 -0
- data/menus/browser.rb +78 -0
- data/menus/cassandra_db.rb +36 -0
- data/menus/chmod.rb +27 -0
- data/menus/classes.rb +5 -0
- data/menus/coffee_script.rb +35 -0
- data/menus/computer.rb +24 -0
- data/menus/contacts.rb +5 -0
- data/menus/cookies.rb +25 -0
- data/menus/couch.rb +184 -0
- data/menus/crop.rb +45 -0
- data/menus/css.rb +55 -0
- data/menus/current.rb +5 -0
- data/menus/db.rb +12 -0
- data/menus/deck.rb +219 -0
- data/menus/dictionary.rb +9 -0
- data/menus/dir.rb +8 -0
- data/menus/disk.rb +5 -0
- data/menus/do.rb +13 -0
- data/menus/docs.rb +58 -0
- data/menus/dotsies.rb +107 -0
- data/menus/edited.rb +18 -0
- data/menus/emacs.rb +17 -0
- data/menus/enter.rb +13 -0
- data/menus/eval.rb +17 -0
- data/menus/executable.rb +16 -0
- data/menus/filter.rb +46 -0
- data/menus/firefox.rb +607 -0
- data/menus/foo.rb +30 -0
- data/menus/french.rb +7 -0
- data/menus/git.rb +185 -0
- data/menus/gito.rb +785 -0
- data/menus/google.rb +35 -0
- data/menus/google_images.rb +11 -0
- data/menus/google_patents.rb +10 -0
- data/menus/gutenberg.rb +13 -0
- data/menus/head.rb +10 -0
- data/menus/headings.rb +39 -0
- data/menus/html.rb +61 -0
- data/menus/icon.rb +40 -0
- data/menus/images.menu +2 -0
- data/menus/img.rb +15 -0
- data/menus/info.rb +9 -0
- data/menus/ip.rb +10 -0
- data/menus/iterm.rb +36 -0
- data/menus/itunes.rb +78 -0
- data/menus/javascript.rb +74 -0
- data/menus/layout.rb +18 -0
- data/menus/local_storage.rb +67 -0
- data/menus/ls.rb +19 -0
- data/menus/mac.rb +87 -0
- data/menus/maps.rb +18 -0
- data/menus/matches.rb +18 -0
- data/menus/memcache.rb +117 -0
- data/menus/mkdir.rb +23 -0
- data/menus/mongo.rb +83 -0
- data/menus/mysql.rb +294 -0
- data/menus/node.rb +88 -0
- data/menus/open.rb +19 -0
- data/menus/outline.rb +24 -0
- data/menus/piano.rb +746 -0
- data/menus/postgres.rb +34 -0
- data/menus/pre.rb +5 -0
- data/menus/python.rb +39 -0
- data/menus/rails.rb +160 -0
- data/menus/rake.rb +12 -0
- data/menus/redmine.rb +168 -0
- data/menus/riak_tree.rb +204 -0
- data/menus/rss.rb +15 -0
- data/menus/safari.rb +11 -0
- data/menus/sass.rb +15 -0
- data/menus/say.rb +6 -0
- data/menus/scale.rb +49 -0
- data/menus/serve.rb +78 -0
- data/menus/shuffle.rb +24 -0
- data/menus/spanish.rb +7 -0
- data/menus/standalone.rb +57 -0
- data/menus/tail.rb +41 -0
- data/menus/technologies.rb +19 -0
- data/menus/themes.rb +32 -0
- data/menus/thesaurus.rb +13 -0
- data/menus/to.rb +24 -0
- data/menus/twitter.rb +57 -0
- data/menus/wikipedia.rb +34 -0
- data/menus/words.rb +11 -0
- data/spec/code_tree_spec.rb +59 -0
- data/spec/diff_log_spec.rb +40 -0
- data/spec/file_tree_spec.rb +102 -0
- data/spec/keys_spec.rb +24 -0
- data/spec/line_spec.rb +68 -0
- data/spec/menu_spec.rb +50 -0
- data/spec/ol_spec.rb +98 -0
- data/spec/remote_spec.rb +43 -0
- data/spec/search_spec.rb +162 -0
- data/spec/text_util_spec.rb +119 -0
- data/spec/tree_cursor_spec.rb +91 -0
- data/spec/tree_spec.rb +955 -0
- data/tests/console_test.rb +11 -0
- data/tests/couch_db_test.rb +12 -0
- data/tests/diff_log_test.rb +43 -0
- data/tests/el_mixin.rb +16 -0
- data/tests/git_test.rb +95 -0
- data/tests/keys_test.rb +19 -0
- data/tests/line_test.rb +38 -0
- data/tests/merb_test.rb +11 -0
- data/tests/redmine_test.rb +50 -0
- data/tests/remote_test.rb +31 -0
- data/tests/rest_tree_test.rb +70 -0
- data/xiki.gemspec +37 -0
- metadata +332 -0
data/menus/rss.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Gets mp3 url's from an rss feed
|
|
2
|
+
class Rss
|
|
3
|
+
def self.menu rss=nil
|
|
4
|
+
# If no rss passed, tell them to provide one
|
|
5
|
+
if rss.nil?
|
|
6
|
+
return "- rss url - <put url here>"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# rss passed, so get result and pull out url's
|
|
10
|
+
xml = Net::HTTP.get URI.parse(rss.sub(/.+?http/,'http'))
|
|
11
|
+
urls = []
|
|
12
|
+
xml.scan(/http:\/\/[\w.\/-]+\.mp3/) {|m| urls << m}
|
|
13
|
+
urls.uniq.join("\n")
|
|
14
|
+
end
|
|
15
|
+
end
|
data/menus/safari.rb
ADDED
data/menus/sass.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class Sass
|
|
2
|
+
def self.menu *args
|
|
3
|
+
txt = ENV['txt']
|
|
4
|
+
File.open("/tmp/tmp.sass", "w") { |f| f << txt }
|
|
5
|
+
css = `sass /tmp/tmp.sass`
|
|
6
|
+
|
|
7
|
+
css.gsub!("\n", '\n')
|
|
8
|
+
css.gsub!('"', '\"')
|
|
9
|
+
code = "$('head').append(\"<style>#{css}</style>\")"
|
|
10
|
+
|
|
11
|
+
Firefox.run code
|
|
12
|
+
|
|
13
|
+
".flash - Loaded in browser!"
|
|
14
|
+
end
|
|
15
|
+
end
|
data/menus/say.rb
ADDED
data/menus/scale.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class Scale
|
|
2
|
+
|
|
3
|
+
def self.menu percent=nil, save=nil
|
|
4
|
+
|
|
5
|
+
dir = Tree.dir :file=>"foo.png"
|
|
6
|
+
|
|
7
|
+
tmp_dir = "/tmp/scale"
|
|
8
|
+
Dir.mkdir tmp_dir if ! File.exists? tmp_dir
|
|
9
|
+
|
|
10
|
+
# If nothing, show percent options
|
|
11
|
+
|
|
12
|
+
return "
|
|
13
|
+
- 25%/
|
|
14
|
+
- 50%/
|
|
15
|
+
- 75%/
|
|
16
|
+
- 150%/
|
|
17
|
+
- 64x64/
|
|
18
|
+
- 128x128/
|
|
19
|
+
" if ! percent
|
|
20
|
+
|
|
21
|
+
dir, file = File.dirname(dir), File.basename(dir)
|
|
22
|
+
dest = file.sub '.', "_#{percent.sub('%', '')}."
|
|
23
|
+
|
|
24
|
+
# If just percent, so resize into tmp dir and show
|
|
25
|
+
|
|
26
|
+
if save.nil?
|
|
27
|
+
dest = "#{tmp_dir}/#{dest}"
|
|
28
|
+
Console.sync %`convert "#{file}" -resize #{percent} "#{dest}"`, :dir=>dir
|
|
29
|
+
Image.>> dest, "_"
|
|
30
|
+
# Line.previous
|
|
31
|
+
return
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Image clicked on, so resize to destination
|
|
35
|
+
|
|
36
|
+
Console.sync %`convert "#{file}" -resize #{percent} "#{dest}"`, :dir=>dir
|
|
37
|
+
Line.previous
|
|
38
|
+
Tree.to_parent
|
|
39
|
+
Tree.kill_under
|
|
40
|
+
indent = Line.indent Line.value(0)
|
|
41
|
+
Line.next
|
|
42
|
+
View.<< "#{indent}- #{dest}\n", :dont_move=>1
|
|
43
|
+
|
|
44
|
+
Effects.glow :fade_in=>1
|
|
45
|
+
|
|
46
|
+
nil
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
data/menus/serve.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
class Serve
|
|
2
|
+
def self.menu *args
|
|
3
|
+
|
|
4
|
+
children = Tree.children(:string=>1)
|
|
5
|
+
children = children.unindent if children
|
|
6
|
+
|
|
7
|
+
trunk = Xiki.trunk
|
|
8
|
+
|
|
9
|
+
# If no children and no parents, say how to use it.
|
|
10
|
+
if children.blank? && trunk.length == 1
|
|
11
|
+
return "
|
|
12
|
+
> How to use
|
|
13
|
+
| To serve a menu in the browser, put a menu under or above, like one of these:
|
|
14
|
+
|
|
|
15
|
+
| serve/
|
|
16
|
+
| - dogs/
|
|
17
|
+
| - cats/
|
|
18
|
+
|
|
|
19
|
+
| animals/
|
|
20
|
+
| @serve
|
|
21
|
+
"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if children.blank?
|
|
26
|
+
file = File.expand_path "~/menus/#{trunk[0]}.menu"
|
|
27
|
+
else
|
|
28
|
+
file = "/tmp/tmp.menu"
|
|
29
|
+
File.open(file, "w") { |f| f << children }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
code = self.wrap_controller file
|
|
33
|
+
Node.run_controller code
|
|
34
|
+
|
|
35
|
+
".flash - showing in browser!"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.wrap_controller file
|
|
39
|
+
%`
|
|
40
|
+
var http = require('http');
|
|
41
|
+
var Xiki = require('#{Xiki.dir}etc/js/xiki.js');
|
|
42
|
+
var fs = require('fs');
|
|
43
|
+
http.createServer(function(req, res) {
|
|
44
|
+
|
|
45
|
+
url = decodeURI(req.url);
|
|
46
|
+
console.log('processing request: ' + url);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// If requesting js, just return it
|
|
50
|
+
if(url.match(/^\\/js\\//)){
|
|
51
|
+
res.writeHead(200, {'Content-Type': 'application/x-javascript'});
|
|
52
|
+
var js = fs.readFileSync('#{Xiki.dir}etc/js/'+url.replace(/.+\\//, ''), 'utf8');
|
|
53
|
+
res.end(js);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
tree = fs.readFileSync(#{file.inspect}, 'utf8');
|
|
58
|
+
|
|
59
|
+
if(req.headers['user-agent'] && ! req.headers['x-requested-with']){
|
|
60
|
+
|
|
61
|
+
res.writeHead(200, {'Content-Type': 'text/html'});
|
|
62
|
+
res.end(Xiki.render_mobile_ajax());
|
|
63
|
+
|
|
64
|
+
}else{
|
|
65
|
+
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
66
|
+
console.log("tree:", tree);
|
|
67
|
+
items = Xiki.children(tree, url);
|
|
68
|
+
console.log("items:", items);
|
|
69
|
+
res.end(items);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
}).listen(8161, '127.0.0.1');
|
|
74
|
+
console.log('Server running at http://127.0.0.1:8161/');
|
|
75
|
+
`.unindent
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
data/menus/shuffle.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class Shuffle
|
|
2
|
+
def self.menu *args
|
|
3
|
+
|
|
4
|
+
message = "| This menu shuffles the siblings that follow it."
|
|
5
|
+
return message if args.any?
|
|
6
|
+
|
|
7
|
+
orig = Location.new
|
|
8
|
+
|
|
9
|
+
ignore, ignore2, left, right = Tree.sibling_bounds
|
|
10
|
+
|
|
11
|
+
return message if left == right
|
|
12
|
+
|
|
13
|
+
txt = View.txt left, right
|
|
14
|
+
View.delete left, right
|
|
15
|
+
|
|
16
|
+
Line.next
|
|
17
|
+
|
|
18
|
+
Code.randomize_lines txt
|
|
19
|
+
|
|
20
|
+
orig.go
|
|
21
|
+
|
|
22
|
+
nil
|
|
23
|
+
end
|
|
24
|
+
end
|
data/menus/spanish.rb
ADDED
data/menus/standalone.rb
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class Standalone
|
|
2
|
+
def self.menu *args
|
|
3
|
+
children = Tree.children(:string=>1)
|
|
4
|
+
children = children.unindent if children
|
|
5
|
+
|
|
6
|
+
trunk = Xiki.trunk
|
|
7
|
+
|
|
8
|
+
# If no children and no parents, say how to use it.
|
|
9
|
+
if children.blank? && trunk.length == 1
|
|
10
|
+
return "
|
|
11
|
+
> How to use
|
|
12
|
+
| To make a stand-alone jquery mobile page and show in the browser,
|
|
13
|
+
| put a menu under or above, like one of these:
|
|
14
|
+
|
|
|
15
|
+
| standalone/
|
|
16
|
+
| - dogs/
|
|
17
|
+
| - cats/
|
|
18
|
+
|
|
|
19
|
+
| animals/
|
|
20
|
+
| @standalone
|
|
21
|
+
"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
menu = "untitled"
|
|
25
|
+
|
|
26
|
+
if children.blank?
|
|
27
|
+
file = File.expand_path "~/menus/#{trunk[0]}.menu"
|
|
28
|
+
menu = trunk[0]
|
|
29
|
+
children = File.read file
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Write file to tmp
|
|
33
|
+
File.open("/tmp/#{menu}.html", "w") { |f| f << self.wrap_standalone(children) }
|
|
34
|
+
|
|
35
|
+
Firefox.url "file:///tmp/untitled.html"
|
|
36
|
+
|
|
37
|
+
".flash - showing in browser!"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.wrap_standalone children
|
|
41
|
+
%`
|
|
42
|
+
<head>
|
|
43
|
+
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
|
|
44
|
+
<script src="file://#{Xiki.dir}etc/js/xiki.js"></script>
|
|
45
|
+
<script src="file://#{Xiki.dir}etc/js/menu1.js"></script>
|
|
46
|
+
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
|
|
47
|
+
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
|
|
48
|
+
</head>
|
|
49
|
+
<body>
|
|
50
|
+
<div data-xiki="menu">\n#{children}
|
|
51
|
+
</div>
|
|
52
|
+
</body>
|
|
53
|
+
`.unindent
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
data/menus/tail.rb
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
class Tail
|
|
2
|
+
# def self.menu *args
|
|
3
|
+
|
|
4
|
+
def self.ongoing
|
|
5
|
+
dir = Tree.dir :file=>1
|
|
6
|
+
Console.run "tail -f \"#{dir}\""
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.in
|
|
10
|
+
dir = Tree.dir :file=>1
|
|
11
|
+
Tree.quote `tail "#{dir}"`
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.menu_before *args
|
|
15
|
+
# Don't do anything unless it's just numeric args
|
|
16
|
+
return nil if args.length != 1 || args[0] !~ /^\d+$/
|
|
17
|
+
|
|
18
|
+
dir = Tree.dir :file=>1
|
|
19
|
+
|
|
20
|
+
count = args[0].to_i
|
|
21
|
+
Tree.quote `tail -n #{count} "#{dir}"`
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.menu
|
|
25
|
+
"
|
|
26
|
+
- .in/
|
|
27
|
+
- 3/
|
|
28
|
+
- .ongoing/
|
|
29
|
+
- .docs/
|
|
30
|
+
> Shows the first 10 lines inline
|
|
31
|
+
<< in/
|
|
32
|
+
|
|
33
|
+
> Show N lines inline
|
|
34
|
+
<< 3/
|
|
35
|
+
|
|
36
|
+
> Opens a shell and keeps showing updates
|
|
37
|
+
<< ongoing/
|
|
38
|
+
"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Technologies
|
|
2
|
+
def self.menu topic=nil, heading=nil, *content
|
|
3
|
+
|
|
4
|
+
content = content.any? ? content.join("/") : nil
|
|
5
|
+
|
|
6
|
+
# If no topic, just show all dirs
|
|
7
|
+
|
|
8
|
+
if topic.nil?
|
|
9
|
+
entries = Dir.new(Bookmarks["$te"]).entries
|
|
10
|
+
entries = entries.select{|o| o =~ /^\w/}
|
|
11
|
+
return entries.map{|o| "#{o}/"}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# If just topic, list all headings
|
|
15
|
+
|
|
16
|
+
Notes.drill "$te/#{topic}/#{topic}.notes", heading, content
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
data/menus/themes.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class Themes
|
|
2
|
+
def self.menu *args
|
|
3
|
+
|
|
4
|
+
# If nothing passed, show options
|
|
5
|
+
|
|
6
|
+
if args.empty?
|
|
7
|
+
path = "#{Xiki.dir}etc/themes/"
|
|
8
|
+
|
|
9
|
+
themes = Dir.new(path).entries.select{|o| o =~ /^\w/}
|
|
10
|
+
|
|
11
|
+
return "
|
|
12
|
+
| Click one of these to change how the window dividers
|
|
13
|
+
| look (aka the emacs mode line).
|
|
14
|
+
#{themes.map{|o| "- #{o[/\w+/].gsub('_', ' ')}/\n"}.join()}
|
|
15
|
+
"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Theme name passed, so use it
|
|
19
|
+
|
|
20
|
+
self.use args[0]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.use name
|
|
24
|
+
path = "#{Xiki.dir}etc/themes/#{TextUtil.title_case name, :underscores=>1}.notes"
|
|
25
|
+
return "| Theme doesn't exist" if ! File.exists? path
|
|
26
|
+
|
|
27
|
+
load path
|
|
28
|
+
|
|
29
|
+
nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
data/menus/thesaurus.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# - @http://thesaurus.com/browse/<here>
|
|
2
|
+
|
|
3
|
+
class Thesaurus
|
|
4
|
+
# self.add :paren=>"th" do # - (th): thesaurus.com
|
|
5
|
+
def self.menu word=nil
|
|
6
|
+
return View.prompt('Type a word to look up') if word.nil?
|
|
7
|
+
|
|
8
|
+
word = word.sub(/^\s+/, '').gsub('"', '%22').gsub(':', '%3A').gsub(' ', '%20')
|
|
9
|
+
# Browser.url "http://en.wiktionary.org/wiki/Wikisaurus:#{word}"
|
|
10
|
+
$el.browse_url "http://thesaurus.reference.com/browse/#{word}"
|
|
11
|
+
nil
|
|
12
|
+
end
|
|
13
|
+
end
|
data/menus/to.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class To
|
|
2
|
+
def self.menu
|
|
3
|
+
%`
|
|
4
|
+
> Summary
|
|
5
|
+
| Keys shortcuts that start with "to+" (ctrl-t) such as to+end.
|
|
6
|
+
|
|
|
7
|
+
- frequent/
|
|
8
|
+
> Jumping cursor around
|
|
9
|
+
| to+row - jump to line
|
|
10
|
+
| to+axis - beginning of line
|
|
11
|
+
| to+end - end of line
|
|
12
|
+
|
|
|
13
|
+
| to+previous - beginning of previous paragraph
|
|
14
|
+
| to+next - beginning of next paragraph
|
|
15
|
+
|
|
|
16
|
+
| to+highest - beginning of file
|
|
17
|
+
| to+lowest - end of file
|
|
18
|
+
|
|
|
19
|
+
- others/
|
|
20
|
+
| to+backward - backward one word
|
|
21
|
+
| to+foreward - foreward one word
|
|
22
|
+
`
|
|
23
|
+
end
|
|
24
|
+
end
|
data/menus/twitter.rb
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'timeout'
|
|
3
|
+
|
|
4
|
+
class Twitter
|
|
5
|
+
|
|
6
|
+
CODE_SAMPLES = %q<
|
|
7
|
+
# C-. on this
|
|
8
|
+
- Twitter.menu
|
|
9
|
+
>
|
|
10
|
+
|
|
11
|
+
def self.post_or_list
|
|
12
|
+
if Keys.prefix_u? # If U prefix, just list
|
|
13
|
+
$el.shell_command("twitter timeline")
|
|
14
|
+
else # Otherwise, post
|
|
15
|
+
self.post
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.list options={}
|
|
20
|
+
View.handle_bar
|
|
21
|
+
Console.run "twitter timeline", :buffer => "*twitter timeline"
|
|
22
|
+
Styles.define :twitter_name, :fg => '99f'
|
|
23
|
+
Styles.define :twitter_date, :fg => 'ddd'
|
|
24
|
+
Styles.apply '^\\(-- .+\\)\\( at .+\\)', nil, :twitter_name, :twitter_date
|
|
25
|
+
View.to_top
|
|
26
|
+
$el.kill_line
|
|
27
|
+
View.previous
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.tree options={}
|
|
31
|
+
txt = nil
|
|
32
|
+
begin
|
|
33
|
+
timeout(3) do
|
|
34
|
+
txt = Net::HTTP.get URI.parse("http://twitter.com/statuses/friends_timeline/13453802.atom")
|
|
35
|
+
end
|
|
36
|
+
rescue Exception => e
|
|
37
|
+
return puts("- Timed out!")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
txt.scan( /<title>(.+)<\/title>/ ).each do |t|
|
|
41
|
+
puts "- #{t}"
|
|
42
|
+
end
|
|
43
|
+
View.wrap :off
|
|
44
|
+
""
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.post message
|
|
48
|
+
puts $el.shell_command_to_string("twitter post \"#{message}\"")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.menu options={}
|
|
52
|
+
puts "+ in tree: .tree/"
|
|
53
|
+
puts "- async: .list"
|
|
54
|
+
puts "- post: .post 'foo'"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|