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.
Files changed (252) hide show
  1. data/Gemfile +11 -0
  2. data/LICENSE +22 -0
  3. data/README.markdown +83 -0
  4. data/Rakefile +8 -0
  5. data/bin/xiki +46 -0
  6. data/etc/command/xiki_command.rb +203 -0
  7. data/etc/command/xiki_process.rb +52 -0
  8. data/etc/command/xiki_wrapper +2 -0
  9. data/etc/js/menu1.js +55 -0
  10. data/etc/js/xiki.js +259 -0
  11. data/etc/logo.png +0 -0
  12. data/etc/presentations/bootstrap.deck +5 -0
  13. data/etc/presentations/databases.deck +41 -0
  14. data/etc/presentations/diffs.deck +23 -0
  15. data/etc/presentations/documentation.deck +14 -0
  16. data/etc/presentations/effects.deck +5 -0
  17. data/etc/presentations/face.deck +297 -0
  18. data/etc/presentations/files.deck +79 -0
  19. data/etc/presentations/icons.deck +22 -0
  20. data/etc/presentations/images.deck +24 -0
  21. data/etc/presentations/key_shortcuts.deck +16 -0
  22. data/etc/presentations/macros.deck +18 -0
  23. data/etc/presentations/menu_classes.deck +44 -0
  24. data/etc/presentations/menu_directories.deck +30 -0
  25. data/etc/presentations/notes.deck +19 -0
  26. data/etc/presentations/other_languages.deck +55 -0
  27. data/etc/presentations/other_wiki_syntaxes.deck +4 -0
  28. data/etc/presentations/piano.deck +5 -0
  29. data/etc/presentations/potential/diffs.deck +38 -0
  30. data/etc/presentations/potential/evolution.deck +18 -0
  31. data/etc/presentations/potential/intro.deck +711 -0
  32. data/etc/presentations/potential/intro1.deck +711 -0
  33. data/etc/presentations/potential/intro2.deck +97 -0
  34. data/etc/presentations/potential/make_mysql_menu.deck +36 -0
  35. data/etc/presentations/potential/ruby_development.deck +17 -0
  36. data/etc/presentations/potential/ui_prototyping.deck +50 -0
  37. data/etc/presentations/potential/web_dev.deck +4 -0
  38. data/etc/presentations/potential/web_development.deck +10 -0
  39. data/etc/presentations/potential/wiki.deck +45 -0
  40. data/etc/presentations/presentations.deck +24 -0
  41. data/etc/presentations/rails_development.deck +29 -0
  42. data/etc/presentations/search_key_shortcuts.deck +37 -0
  43. data/etc/presentations/simplest_possible_ui.deck +37 -0
  44. data/etc/presentations/svg.deck +5 -0
  45. data/etc/presentations/testing.deck +28 -0
  46. data/etc/presentations/the_end.deck +13 -0
  47. data/etc/presentations/type_something_and_double_click.deck +57 -0
  48. data/etc/presentations/type_the_acronym.deck +144 -0
  49. data/etc/presentations/web_browser.deck +56 -0
  50. data/etc/presentations/xiki_command.deck +20 -0
  51. data/etc/presentations/xiki_url.deck +14 -0
  52. data/etc/shark.icns +0 -0
  53. data/etc/shark_script.icns +0 -0
  54. data/etc/snippets/html.notes +7 -0
  55. data/etc/snippets/notes.notes +20 -0
  56. data/etc/snippets/rb.notes +38 -0
  57. data/etc/templates/menu_template.menu +2 -0
  58. data/etc/templates/menu_template.rb +8 -0
  59. data/etc/templates/template.rb +5 -0
  60. data/etc/themes/Dark_Metal.notes +28 -0
  61. data/etc/themes/Orange_Path.notes +15 -0
  62. data/etc/themes/Shiny_Blue.notes +27 -0
  63. data/etc/themes/Shiny_Green.notes +27 -0
  64. data/etc/wrappers/wrapper.js +17 -0
  65. data/etc/wrappers/wrapper.py +20 -0
  66. data/etc/wrappers/wrapper.rb +25 -0
  67. data/lib/block.rb +72 -0
  68. data/lib/bookmarks.rb +352 -0
  69. data/lib/buffers.rb +170 -0
  70. data/lib/clipboard.rb +333 -0
  71. data/lib/code.rb +860 -0
  72. data/lib/code_tree.rb +476 -0
  73. data/lib/color.rb +274 -0
  74. data/lib/console.rb +557 -0
  75. data/lib/control_lock.rb +9 -0
  76. data/lib/control_tab.rb +176 -0
  77. data/lib/core_ext.rb +31 -0
  78. data/lib/cursor.rb +111 -0
  79. data/lib/deletes.rb +65 -0
  80. data/lib/diff_log.rb +297 -0
  81. data/lib/effects.rb +145 -0
  82. data/lib/environment.rb +5 -0
  83. data/lib/file_tree.rb +1875 -0
  84. data/lib/files.rb +334 -0
  85. data/lib/hide.rb +259 -0
  86. data/lib/history.rb +286 -0
  87. data/lib/image.rb +51 -0
  88. data/lib/incrementer.rb +15 -0
  89. data/lib/insert.rb +7 -0
  90. data/lib/irc.rb +22 -0
  91. data/lib/key_bindings.rb +658 -0
  92. data/lib/keys.rb +754 -0
  93. data/lib/launcher.rb +1351 -0
  94. data/lib/line.rb +429 -0
  95. data/lib/links.rb +6 -0
  96. data/lib/location.rb +175 -0
  97. data/lib/macros.rb +48 -0
  98. data/lib/man.rb +19 -0
  99. data/lib/menu.rb +708 -0
  100. data/lib/merb.rb +259 -0
  101. data/lib/message.rb +5 -0
  102. data/lib/meths.rb +56 -0
  103. data/lib/mode.rb +34 -0
  104. data/lib/move.rb +248 -0
  105. data/lib/notes.rb +1000 -0
  106. data/lib/numbers.rb +45 -0
  107. data/lib/ol.rb +203 -0
  108. data/lib/ol_helper.rb +44 -0
  109. data/lib/overlay.rb +167 -0
  110. data/lib/pause_means_space.rb +68 -0
  111. data/lib/php.rb +22 -0
  112. data/lib/projects.rb +21 -0
  113. data/lib/relinquish_exception.rb +2 -0
  114. data/lib/remote.rb +206 -0
  115. data/lib/requirer.rb +46 -0
  116. data/lib/rest_tree.rb +108 -0
  117. data/lib/ruby.rb +57 -0
  118. data/lib/ruby_console.rb +165 -0
  119. data/lib/search.rb +1572 -0
  120. data/lib/search_term.rb +40 -0
  121. data/lib/snippet.rb +68 -0
  122. data/lib/specs.rb +229 -0
  123. data/lib/styles.rb +274 -0
  124. data/lib/svn.rb +682 -0
  125. data/lib/text_util.rb +110 -0
  126. data/lib/tree.rb +1871 -0
  127. data/lib/tree_cursor.rb +87 -0
  128. data/lib/trouble_shooting.rb +27 -0
  129. data/lib/url_tree.rb +11 -0
  130. data/lib/view.rb +1474 -0
  131. data/lib/window.rb +133 -0
  132. data/lib/xiki.rb +404 -0
  133. data/menus/accounts.rb +5 -0
  134. data/menus/address_book.rb +21 -0
  135. data/menus/agenda.rb +28 -0
  136. data/menus/all.rb +5 -0
  137. data/menus/amazon.rb +16 -0
  138. data/menus/app.rb +16 -0
  139. data/menus/applescript.rb +46 -0
  140. data/menus/as.rb +15 -0
  141. data/menus/bookmarklet.rb +63 -0
  142. data/menus/bootstrap.rb +568 -0
  143. data/menus/browse.rb +13 -0
  144. data/menus/browser.rb +78 -0
  145. data/menus/cassandra_db.rb +36 -0
  146. data/menus/chmod.rb +27 -0
  147. data/menus/classes.rb +5 -0
  148. data/menus/coffee_script.rb +35 -0
  149. data/menus/computer.rb +24 -0
  150. data/menus/contacts.rb +5 -0
  151. data/menus/cookies.rb +25 -0
  152. data/menus/couch.rb +184 -0
  153. data/menus/crop.rb +45 -0
  154. data/menus/css.rb +55 -0
  155. data/menus/current.rb +5 -0
  156. data/menus/db.rb +12 -0
  157. data/menus/deck.rb +219 -0
  158. data/menus/dictionary.rb +9 -0
  159. data/menus/dir.rb +8 -0
  160. data/menus/disk.rb +5 -0
  161. data/menus/do.rb +13 -0
  162. data/menus/docs.rb +58 -0
  163. data/menus/dotsies.rb +107 -0
  164. data/menus/edited.rb +18 -0
  165. data/menus/emacs.rb +17 -0
  166. data/menus/enter.rb +13 -0
  167. data/menus/eval.rb +17 -0
  168. data/menus/executable.rb +16 -0
  169. data/menus/filter.rb +46 -0
  170. data/menus/firefox.rb +607 -0
  171. data/menus/foo.rb +30 -0
  172. data/menus/french.rb +7 -0
  173. data/menus/git.rb +185 -0
  174. data/menus/gito.rb +785 -0
  175. data/menus/google.rb +35 -0
  176. data/menus/google_images.rb +11 -0
  177. data/menus/google_patents.rb +10 -0
  178. data/menus/gutenberg.rb +13 -0
  179. data/menus/head.rb +10 -0
  180. data/menus/headings.rb +39 -0
  181. data/menus/html.rb +61 -0
  182. data/menus/icon.rb +40 -0
  183. data/menus/images.menu +2 -0
  184. data/menus/img.rb +15 -0
  185. data/menus/info.rb +9 -0
  186. data/menus/ip.rb +10 -0
  187. data/menus/iterm.rb +36 -0
  188. data/menus/itunes.rb +78 -0
  189. data/menus/javascript.rb +74 -0
  190. data/menus/layout.rb +18 -0
  191. data/menus/local_storage.rb +67 -0
  192. data/menus/ls.rb +19 -0
  193. data/menus/mac.rb +87 -0
  194. data/menus/maps.rb +18 -0
  195. data/menus/matches.rb +18 -0
  196. data/menus/memcache.rb +117 -0
  197. data/menus/mkdir.rb +23 -0
  198. data/menus/mongo.rb +83 -0
  199. data/menus/mysql.rb +294 -0
  200. data/menus/node.rb +88 -0
  201. data/menus/open.rb +19 -0
  202. data/menus/outline.rb +24 -0
  203. data/menus/piano.rb +746 -0
  204. data/menus/postgres.rb +34 -0
  205. data/menus/pre.rb +5 -0
  206. data/menus/python.rb +39 -0
  207. data/menus/rails.rb +160 -0
  208. data/menus/rake.rb +12 -0
  209. data/menus/redmine.rb +168 -0
  210. data/menus/riak_tree.rb +204 -0
  211. data/menus/rss.rb +15 -0
  212. data/menus/safari.rb +11 -0
  213. data/menus/sass.rb +15 -0
  214. data/menus/say.rb +6 -0
  215. data/menus/scale.rb +49 -0
  216. data/menus/serve.rb +78 -0
  217. data/menus/shuffle.rb +24 -0
  218. data/menus/spanish.rb +7 -0
  219. data/menus/standalone.rb +57 -0
  220. data/menus/tail.rb +41 -0
  221. data/menus/technologies.rb +19 -0
  222. data/menus/themes.rb +32 -0
  223. data/menus/thesaurus.rb +13 -0
  224. data/menus/to.rb +24 -0
  225. data/menus/twitter.rb +57 -0
  226. data/menus/wikipedia.rb +34 -0
  227. data/menus/words.rb +11 -0
  228. data/spec/code_tree_spec.rb +59 -0
  229. data/spec/diff_log_spec.rb +40 -0
  230. data/spec/file_tree_spec.rb +102 -0
  231. data/spec/keys_spec.rb +24 -0
  232. data/spec/line_spec.rb +68 -0
  233. data/spec/menu_spec.rb +50 -0
  234. data/spec/ol_spec.rb +98 -0
  235. data/spec/remote_spec.rb +43 -0
  236. data/spec/search_spec.rb +162 -0
  237. data/spec/text_util_spec.rb +119 -0
  238. data/spec/tree_cursor_spec.rb +91 -0
  239. data/spec/tree_spec.rb +955 -0
  240. data/tests/console_test.rb +11 -0
  241. data/tests/couch_db_test.rb +12 -0
  242. data/tests/diff_log_test.rb +43 -0
  243. data/tests/el_mixin.rb +16 -0
  244. data/tests/git_test.rb +95 -0
  245. data/tests/keys_test.rb +19 -0
  246. data/tests/line_test.rb +38 -0
  247. data/tests/merb_test.rb +11 -0
  248. data/tests/redmine_test.rb +50 -0
  249. data/tests/remote_test.rb +31 -0
  250. data/tests/rest_tree_test.rb +70 -0
  251. data/xiki.gemspec +37 -0
  252. metadata +332 -0
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ $:.unshift File.expand_path("..")
3
+ require 'console'
4
+ require 'ol'
5
+ class CodeTreeTest < Test::Unit::TestCase
6
+
7
+ def test_extract_method
8
+ assert_equal("ssh foo@foo.org", Console.ssh_line("/foo@foo.org/"))
9
+ assert_equal("ssh -p 1234 foo@foo.org", Console.ssh_line("foo@foo.org:1234"))
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'test/unit'
2
+ $:.unshift File.expand_path("..")
3
+ require 'couch_db'
4
+ require 'ol'
5
+
6
+ class CouchDbTest < Test::Unit::TestCase
7
+
8
+ def test_tmp
9
+ assert true
10
+ end
11
+
12
+ end
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'diff_log'
4
+
5
+ class FileTreeTest < Test::Unit::TestCase
6
+ # Should correctly format simple diff
7
+ def test_format
8
+ formatted = DiffLog.format("/projects/xiki/trunk/", "diff_log.rb",
9
+ "|--- /projects/xiki/trunk/diff_log.rb 2008-03-03 20:35:30.000000000 -0500
10
+ |+++ /tmp/latest-diff.txt 2008-03-03 20:35:44.000000000 -0500
11
+ |@@ -56,0 +57 @@
12
+ |+#new
13
+ |".gsub(/^ *\|/, '')
14
+ )
15
+
16
+ result =
17
+ "|/projects/xiki/trunk/
18
+ | diff_log.rb
19
+ | :57
20
+ | +|#new
21
+ |".gsub(/^ *\|/, '')
22
+ assert_equal(result, formatted)
23
+ end
24
+
25
+ # Should correctly format simple diff
26
+ def test_format_without_path
27
+ formatted = DiffLog.format("/projects/xiki/trunk/", "diff_log.rb",
28
+ "|--- /projects/xiki/trunk/diff_log.rb 2008-03-03 20:35:30.000000000 -0500
29
+ |+++ /tmp/latest-diff.txt 2008-03-03 20:35:44.000000000 -0500
30
+ |@@ -56,0 +57 @@
31
+ |+#new
32
+ |".gsub(/^ *\|/, '')
33
+ )
34
+
35
+ result =
36
+ "|/projects/xiki/trunk/
37
+ | diff_log.rb
38
+ | :57
39
+ | +|#new
40
+ |".gsub(/^ *\|/, '')
41
+ assert_equal(result, formatted)
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ class Elvar
2
+ def method_missing(func, *args, &block)
3
+ # Do nothing
4
+ print "B"
5
+ end
6
+ end
7
+
8
+ module ElMixin
9
+ def elvar
10
+ Elvar.new
11
+ end
12
+ def method_missing(func, *args, &block)
13
+ # Do nothing
14
+ print "B"
15
+ end
16
+ end
@@ -0,0 +1,95 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'ol'
4
+ require 'core_ext'
5
+ require 'yaml'
6
+ require 'git'
7
+
8
+ class GitTest < Test::Unit::TestCase
9
+
10
+ @@status_raw = '
11
+ # On branch master
12
+ # Changes to be committed:
13
+ # (use "git reset HEAD <file>..." to unstage)
14
+ #
15
+ # new file: unadded.txt
16
+ # modified: modified.rb
17
+ #
18
+ # Changed but not updated:
19
+ # (use "git add <file>..." to update what will be committed)
20
+ #
21
+ # modified: changed.rb
22
+ # modified: modifiedandadded.rb
23
+ #
24
+ # Untracked files:
25
+ # (use "git add <file>..." to include in what will be committed)
26
+ #
27
+ # untracked.rb
28
+ # untracked2.rb
29
+ '.unindent
30
+
31
+ @@status_parsed = '
32
+ | On branch master
33
+ | Changes to be committed:
34
+ | (use "git reset HEAD <file>..." to unstage)
35
+ - new file: unadded.txt
36
+ - modified: modified.rb
37
+ | Changed but not updated:
38
+ | (use "git add <file>..." to update what will be committed)
39
+ - modified: changed.rb
40
+ - modified: modifiedandadded.rb
41
+ | Untracked files:
42
+ | (use "git add <file>..." to include in what will be committed)
43
+ - untracked.rb
44
+ - untracked2.rb
45
+ '.unindent
46
+
47
+ @@status_parsed_only_new = '
48
+ | On branch master
49
+ | Initial commit
50
+ | Untracked files:
51
+ | (use "git add <file>..." to include in what will be committed)
52
+ - a.txt
53
+ nothing added to commit but untracked files present (use "git add" to track)
54
+ '.unindent
55
+
56
+ # Should parse status initially
57
+ def test_status_internal
58
+ result = Git.status_internal @@status_raw
59
+ assert_equal @@status_parsed, result
60
+ end
61
+
62
+ # Should parse status into hash of arrays
63
+ def test_status_to_hash
64
+
65
+ # Parse it
66
+ hash = Git.status_to_hash @@status_parsed
67
+
68
+ assert hash[:unadded]
69
+ assert_equal [
70
+ ['modified', 'changed.rb'],
71
+ ['modified', 'modifiedandadded.rb']],
72
+ hash[:unadded]
73
+
74
+ assert hash[:added]
75
+ assert_equal [
76
+ ['new file', 'unadded.txt'],
77
+ ['modified', 'modified.rb']],
78
+ hash[:added]
79
+
80
+ assert hash[:untracked]
81
+ assert_equal [
82
+ ['untracked', 'untracked.rb'],
83
+ ['untracked', 'untracked2.rb']],
84
+ hash[:untracked]
85
+ end
86
+
87
+ # Should handle only new
88
+ def test_status_to_hash_only_new
89
+ # Parse it
90
+ hash = Git.status_to_hash @@status_parsed_only_new
91
+
92
+ assert hash[:untracked]
93
+ end
94
+
95
+ end
@@ -0,0 +1,19 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'ol'
4
+ require 'core_ext'
5
+ require 'yaml'
6
+ require 'keys'
7
+
8
+ class GitTest < Test::Unit::TestCase
9
+
10
+ def test_words_to_letters
11
+ assert_equal "TE", Keys.words_to_letters("to_end")
12
+ end
13
+
14
+ def test_status_to_hash
15
+ assert_equal "C-t C-e", Keys.translate_keys("TE")
16
+ assert_equal "M-t C-e", Keys.translate_keys("_TE")
17
+ end
18
+
19
+ end
@@ -0,0 +1,38 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'line'
4
+ require 'core_ext'
5
+
6
+ class LineTest < Test::Unit::TestCase
7
+
8
+ def test_normal
9
+ assert_equal "you", Line.without_label(:line=>"- hey: you")
10
+ end
11
+
12
+ def test_just_bullet
13
+ assert_equal "you", Line.without_label(:line=>"- you")
14
+ end
15
+
16
+ def test_blank
17
+ assert_equal "", Line.without_label(:line=>"- hey: ")
18
+ end
19
+
20
+ def test_with_indent
21
+ assert_equal "you", Line.without_label(:line=>" - hey: you")
22
+ assert_equal "", Line.without_label(:line=>" - hey: ")
23
+ assert_equal "you", Line.without_label(:line=>" - you")
24
+ end
25
+
26
+ def test_leave_indent
27
+ assert_equal " you", Line.without_label(:line=>" - hey: you", :leave_indent=>true)
28
+ assert_equal " ", Line.without_label(:line=>" - hey: ", :leave_indent=>true)
29
+ end
30
+
31
+ # Make sure it doesn't mess up the string
32
+ def test_side_effects
33
+ before = " - label: hey1"
34
+ Line.without_label(:line=>before)
35
+ assert_equal " - label: hey1", before
36
+ end
37
+
38
+ end
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'merb'
4
+ require 'core_ext'
5
+
6
+ class MerbTest < Test::Unit::TestCase
7
+
8
+ def test_name_from_dir
9
+ assert_equal "you", Merb.name_from_dir("/hey/you")
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ require 'test/unit'
2
+ $:.unshift "../"
3
+ require 'redmine'
4
+ require 'core_ext'
5
+
6
+ class RedmineTest < Test::Unit::TestCase
7
+
8
+ # Should correctly format simple diff
9
+ def test_redmine_to_xiki
10
+ before =
11
+ "#Dev Team Todo
12
+ ##h2
13
+ * Ad
14
+ * 70
15
+ ** Make them show
16
+ ".unindent
17
+
18
+ after =
19
+ "| Dev Team Todo
20
+ || h2
21
+ - Ad
22
+ - 70
23
+ - Make them show
24
+ ".unindent
25
+
26
+ assert_equal(after, Redmine.redmine_to_xiki(before))
27
+ end
28
+
29
+ # Should correctly format simple diff
30
+ def test_xiki_to_redmine
31
+ before =
32
+ "| Dev Team Todo
33
+ || h2
34
+ - Ad
35
+ - 70
36
+ - Make them show
37
+ ".unindent
38
+
39
+ after =
40
+ "#Dev Team Todo
41
+ ##h2
42
+ * Ad
43
+ * 70
44
+ ** Make them show
45
+ ".unindent
46
+
47
+ assert_equal(after, Redmine.xiki_to_redmine(before))
48
+ end
49
+
50
+ end
@@ -0,0 +1,31 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ $:.unshift "../"
4
+ require 'remote'
5
+
6
+ class RemoteTest < Test::Unit::TestCase
7
+
8
+ def test_split_root
9
+ assert_equal(['user', 'foo.com', '2122', '/var/main'], Remote.split_root('user@foo.com:2122/var/main'))
10
+ assert_equal(['user', 'foo.com', '2122', '/'], Remote.split_root('user@foo.com:2122/'))
11
+ assert_equal(['user', 'foo.com', '2122', '/'], Remote.split_root('user@foo.com:2122'))
12
+ end
13
+
14
+ def test_sort
15
+ txt = "ajax/
16
+ apcx.orig
17
+ css/
18
+ f.wav
19
+ ".gsub(/^ +/, '')
20
+
21
+ expected = ["ajax/", "css/", "apcx.orig", "f.wav"]
22
+ assert_equal(expected, Remote.sort(txt))
23
+ end
24
+
25
+ def test_split_root
26
+ assert_equal(["xiki", "xiki.org", "222", "/tmp"], Remote.split_root("xiki@xiki.org:222/tmp/"))
27
+ assert_equal(["xiki", "xiki.org", "22", "/tmp"], Remote.split_root("xiki@xiki.org/tmp/"))
28
+ assert_equal(["xiki", "xiki.org", "22", "/tmp"], Remote.split_root("/xiki@xiki.org/tmp/"))
29
+ end
30
+
31
+ end
@@ -0,0 +1,70 @@
1
+ require 'test/unit'
2
+ $:.unshift File.expand_path("..")
3
+ require 'rest_tree'
4
+ require 'ol'
5
+
6
+ class RestTreeTest < Test::Unit::TestCase
7
+
8
+ def test_handles?
9
+ assert RestTree.handles?(['GET http://foo.com', 'hey'])
10
+ assert ! RestTree.handles?(['HEY http://foo.com', 'hey'])
11
+ end
12
+
13
+ def test_extract_root_verb
14
+ list = ['POST http://foo.com', 'PUT hey']
15
+ assert_equal 'POST', RestTree.extract_root_verb(list)
16
+ assert_equal ['http://foo.com', 'PUT hey'], list
17
+ end
18
+
19
+ def test_extract_verb
20
+ line = 'POST hey'
21
+ assert_equal 'POST', RestTree.extract_verb(line)
22
+ assert_equal 'hey', line
23
+
24
+ line = 'DELETE'
25
+ assert_equal 'DELETE', RestTree.extract_verb(line)
26
+ assert line.empty? # Should be nothing left
27
+
28
+ assert_equal nil, RestTree.extract_verb('hiya')
29
+ end
30
+
31
+ def test_launch_inner
32
+ # Single line
33
+ verb, path, body = RestTree.launch_inner ["PUT http://localhost:5984/foo/"], nil
34
+ assert_equal ['PUT', 'http://localhost:5984/foo/', nil], [verb, path, body]
35
+
36
+ # More path
37
+ verb, path, body = RestTree.launch_inner ["GET http://localhost:5984/foo/", "bar/"], nil
38
+ assert_equal ['GET', 'http://localhost:5984/foo/bar/', nil], [verb, path, body]
39
+
40
+ # More path and verb
41
+ verb, path, body = RestTree.launch_inner ['GET http://localhost:5984/foo/', 'bar/', 'POST'], nil
42
+ assert_equal ['POST', 'http://localhost:5984/foo/bar/', nil], [verb, path, body]
43
+
44
+ # More path, verb, and body
45
+ verb, path, body = RestTree.launch_inner ['GET http://localhost:5984/foo/', 'bar/', 'POST ["txt"]'], nil
46
+ assert_equal ['POST', 'http://localhost:5984/foo/bar/', '["txt"]'], [verb, path, body]
47
+ end
48
+
49
+ def test_launch_inner_with_children
50
+ # TODO Just verb with children
51
+ verb, path, body = RestTree.launch_inner ['GET http://localhost:5984/foo/', 'POST'], ['a', 'b']
52
+ assert_equal ['POST', 'http://localhost:5984/foo/', "a\nb\n"], [verb, path, body]
53
+
54
+ # TODO Quoted children (should be ignored)
55
+ verb, path, body = RestTree.launch_inner ['GET http://localhost:5984/foo/', 'POST'], ['|a', '|b']
56
+ assert_equal ['POST', 'http://localhost:5984/foo/', nil], [verb, path, body]
57
+
58
+
59
+ end
60
+
61
+ def test_remove_before_root
62
+ # No root anywhere
63
+ assert_equal [], RestTree.remove_before_root(["CodeTree.menu/"])
64
+ assert_equal ["GET http://foo.com"], RestTree.remove_before_root(['GET http://foo.com'])
65
+ assert_equal ["GET http://foo.com"], RestTree.remove_before_root(['crap', 'GET http://foo.com'])
66
+ assert_equal ["GET http://localhost:5984/mem/"], RestTree.remove_before_root(["CodeTree.menu/", "CouchDb.menu/", ".rest/", "mem/", "GET http://localhost:5984/mem/"])
67
+
68
+ end
69
+
70
+ end
@@ -0,0 +1,37 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "xiki"
8
+ s.version = "0.5.0a"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Craig Muth"]
12
+ s.date = "2011-08-24"
13
+ s.executables = ["xiki"]
14
+ s.summary = "A shell console with GUI features."
15
+ s.description = "Xiki does what shell consoles do, but lets you edit everything at any time. It's trivial to make your own commands and menus to access other tools."
16
+ s.email = "craig.muth@gmail.com"
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.markdown"
20
+ ]
21
+ files = `git ls-files`.split("\n")
22
+
23
+ # TMP
24
+ files = files.select{|o| o !~ /^etc\/xiki/}
25
+
26
+ s.files = files
27
+ s.homepage = "http://xiki.org"
28
+ s.licenses = ["MIT"]
29
+ s.require_paths = ["."]
30
+ # s.rubygems_version = "1.8.24"
31
+
32
+ # current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
33
+ # s.specification_version = 3
34
+
35
+ s.add_development_dependency("rspec", ["~> 2.3.0"])
36
+
37
+ end