rumai 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/bin/rumai +2 -2
  2. data/doc/api/apple-touch-icon.png +0 -0
  3. data/doc/api/classes/IO.html +1 -1
  4. data/doc/api/classes/Integer.html +6 -6
  5. data/doc/api/classes/Rumai.html +141 -141
  6. data/doc/api/classes/Rumai/Area.html +122 -122
  7. data/doc/api/classes/Rumai/Chain.html +18 -18
  8. data/doc/api/classes/Rumai/Client.html +420 -122
  9. data/doc/api/classes/Rumai/ClientContainer.html +22 -22
  10. data/doc/api/classes/Rumai/IXP/Agent.html +90 -90
  11. data/doc/api/classes/Rumai/IXP/Agent/FidStream.html +41 -41
  12. data/doc/api/classes/Rumai/IXP/Agent/MODES.html +6 -6
  13. data/doc/api/classes/Rumai/IXP/Agent/RangedPool.html +18 -18
  14. data/doc/api/classes/Rumai/IXP/Fcall.html +30 -30
  15. data/doc/api/classes/Rumai/IXP/Qid.html +1 -1
  16. data/doc/api/classes/Rumai/IXP/Stat.html +7 -7
  17. data/doc/api/classes/Rumai/IXP/Stream.html +6 -6
  18. data/doc/api/classes/Rumai/IXP/Struct.html +24 -24
  19. data/doc/api/classes/Rumai/IXP/Struct/Field.html +36 -36
  20. data/doc/api/classes/Rumai/IXP/Struct/Field/CounteeField.html +12 -12
  21. data/doc/api/classes/Rumai/IXP/Struct/Field/CounterField.html +6 -6
  22. data/doc/api/classes/Rumai/IXP/Terror.html +6 -6
  23. data/doc/api/classes/Rumai/Node.html +52 -52
  24. data/doc/api/classes/Rumai/View.html +132 -132
  25. data/doc/api/classes/String.html +12 -12
  26. data/doc/api/classes/StringIO.html +1 -1
  27. data/doc/api/classes/Time.html +12 -12
  28. data/doc/api/created.rid +1 -1
  29. data/doc/api/favicon.ico +0 -0
  30. data/doc/api/files/CREDITS.html +1 -1
  31. data/doc/api/files/LICENSE.html +1 -1
  32. data/doc/api/files/lib/rumai/fs_rb.html +1 -1
  33. data/doc/api/files/lib/rumai/ixp/message_rb.html +1 -1
  34. data/doc/api/files/lib/rumai/ixp/transport_rb.html +1 -1
  35. data/doc/api/files/lib/rumai/ixp_rb.html +1 -1
  36. data/doc/api/files/lib/rumai/wm_rb.html +1 -1
  37. data/doc/api/files/lib/rumai_rb.html +1 -1
  38. data/doc/api/js/searchdoc.js +38 -15
  39. data/doc/api/panel/index.html +13 -5
  40. data/doc/api/panel/search_index.js +1 -1
  41. data/doc/api/panel/tree.js +1 -1
  42. data/doc/history.erb +79 -2
  43. data/doc/index.erb +2 -2
  44. data/doc/index.html +2017 -0
  45. data/doc/intro.erb +38 -62
  46. data/doc/setup.erb +53 -2
  47. data/doc/usage.erb +36 -11
  48. data/lib/rumai.rb +4 -4
  49. data/lib/rumai/fs.rb +2 -2
  50. data/lib/rumai/ixp.rb +2 -2
  51. data/lib/rumai/ixp/message.rb +2 -2
  52. data/lib/rumai/ixp/transport.rb +2 -2
  53. data/lib/rumai/wm.rb +80 -5
  54. data/rakefile +2 -2
  55. data/test/rumai/ixp/message.rb +3 -3
  56. metadata +9 -5
  57. data/doc/index.xhtml +0 -1078
data/rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Copyright 2009 Suraj N. Kurapati
3
- # See the LICENSE file for details.
2
+ # Copyright protects this work.
3
+ # See LICENSE file for details.
4
4
  #++
5
5
 
6
6
  require 'rubygems'
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Copyright 2007 Suraj N. Kurapati
3
- # See the LICENSE file for details.
2
+ # Copyright protects this work.
3
+ # See LICENSE file for details.
4
4
  #++
5
5
 
6
6
  require 'pp' if $DEBUG
@@ -165,7 +165,7 @@ class << Object.new
165
165
  :tag => 0,
166
166
  :fid => 1,
167
167
  :offset => 0,
168
- :data => "hello world!!!"
168
+ :data => "#a1a2a3 #b1b2b3 #c1c2c3 hello world!!!"
169
169
  ) do |req, rsp|
170
170
  T { rsp.type == Rwrite.type }
171
171
  T { rsp.count == req.data.length }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumai
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Suraj N. Kurapati
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-11 00:00:00 -07:00
12
+ date: 2009-10-02 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,7 +42,9 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: "1"
44
44
  version:
45
- description: Ruby interface to the wmii window manager
45
+ description: " Rumai 3.1.0\n\n Ruby interface to the wmii window manager\n\n http://snk.tuxfamily.org/lib/rumai/\n\n Rumai is a [1]Ruby interface to the [2]wmii window manager.\n\n\
46
+ Version 3.1.0 (2009-10-02)\n\n This release adds new methods, fixes some bugs, and revises\n the manual.\n\n * [3]New features\n\n * [4]Bug fixes\n\n * [5]Housekeeping\n\n New features\n\n * Add Client#float methods to manipulate floating status.\n\n * Add Client#manage methods to manipulate managed status.\n\n * The Client#tags= method now accepts '~' and '!' tag\n prefixes.\n\n Bug fixes\n\n * There is no View#move_focus method, only View#select.\n\n * Assertion failure in test suite because all files in\n /rbar (inside wmii's IXP filesystem) contain an automatic\n color header when read.\n\n Housekeeping\n\n * Use simpler Copyright reminder at the top of every file.\n\n * Open source is for fun, so [6]be nice: speak of \"related\n works\" instead of \"competitors\".\n\n\
47
+ References\n\n 1. http://ruby-lang.org/\n 2. http://wmii.suckless.org/\n 3. http://snk.tuxfamily.org/lib/rumai/#New-features\n 4. http://snk.tuxfamily.org/lib/rumai/#Bug-fixes\n 5. http://snk.tuxfamily.org/lib/rumai/#Housekeeping\n 6. http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html\n"
46
48
  email: sunaku@gmail.com
47
49
  executables:
48
50
  - rumai
@@ -64,7 +66,7 @@ files:
64
66
  - LICENSE
65
67
  - doc/intro.erb
66
68
  - doc/setup.erb
67
- - doc/index.xhtml
69
+ - doc/index.html
68
70
  - doc/api/classes/Time.html
69
71
  - doc/api/classes/Integer.html
70
72
  - doc/api/classes/Rumai/ExportInstanceMethods.html
@@ -144,7 +146,9 @@ files:
144
146
  - doc/api/i/arrows.png
145
147
  - doc/api/i/tree_bg.png
146
148
  - doc/api/i/results_bg.png
149
+ - doc/api/apple-touch-icon.png
147
150
  - doc/api/created.rid
151
+ - doc/api/favicon.ico
148
152
  - doc/api/index.html
149
153
  - doc/usage.erb
150
154
  - doc/history.erb
@@ -173,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
177
  requirements: []
174
178
 
175
179
  rubyforge_project: sunaku
176
- rubygems_version: 1.3.3
180
+ rubygems_version: 1.3.5
177
181
  signing_key:
178
182
  specification_version: 3
179
183
  summary: Ruby interface to the wmii window manager
@@ -1,1078 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
4
- <!ENTITY icon_here_frag "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==">
5
- <!ENTITY icon_caution "data:image/png;base64,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">
6
- <!ENTITY icon_nav_here "data:image/png;base64,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">
7
- <!ENTITY icon_nav_prev "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABGBJREFUWIXtlltsFVUUhr81e09Pe2pD0VjlFhBEqSRKWk2hpQQxVOIlpURMRNFEojHBS5ACTxIMxhgTjCTGB8ITweCDUQzhARMMUdLqg8QLaRQRpLS0tgV6oe3pOTN7+TDnlHJ6BzU+sJKVPZc96//W2mvPDNy067SFO8gp32KrbjSOd70PFvaZPb7kHCmv9V//zwEqNvuvzLx9/tpXn36bW/IK3i2vtSv+M4CKLbZySsGtu6qXPRvvDS6y+uHn8q31P1+yKXb3vw6w7E1m+Sbn0FOPbIhfuHKK42c+IzAJqpasLvBs8FXpNqZMFsBMdGLpDuImtHVrlr84LRa30tDyLU5DWrv/YMH0h8SaWH5be1P54uluf0MDOtG4E62A5PbaA8sXPTFn1p1zvIbW44AgIjgN+f7cIRYtWJxz17T5Zc1z7K6JisMEK1BRa98qnl3ywsqyNbknmo4wkOrDaZj2gGTQT0dvI0vve9I/23Tq/jtKEk2N9frTPwJQXmseL5o6Y/czVRvjv7bV051oHxQPNRg87h3opD/VQ9mClf5v505WzVzM0cY61zxe/DGXoGJr7N5YLP7p+lWb4i09p+ns/2vMYH9e+oXW3tM8urQmXz0Ol21l5nUDlG5jirrg6POr3sgPpI8LXb9fc18H++xqv6k6fm7+GpsLlSUrC321R0p3EJ80wNq1mJizX1ZXri8qmjpdTrefQFUjUVHEA2MEz4JnBTFKQAKVEEWpP3uQ2TPmmuK5D8zL7bUHABkNYMQeKHzMfvhg8bLqFSU1sZOt35AMo+BOApAQNSHOc6ikSLhuEmEPeA7PE8QDpwEtXWepXFhtW9ubZ9226IrfWOeOjaQ1jGxprVk3o2je3o01O/MQIRX24wgxnuHYmX0EDBC4JD2pDroTbTgNUUAdqCo1xdtQjY7VgQuV/Yc/7u8Z6FxX/354MFvPZl9wKp+0dJxn+94NEaHgVPG2v/QRYhRB6UpeoDe4jPhg8GBQUPCMsHvfO4iSwiMkgssT5IuREh4GULcrEAgGz0tfxo8V2CSegnFc7D9HQjuxOQKSjpcWd04RA6KEYWjvsX6iC0AMhAMkRlqCYQDZ9sMeUuWbAZRLA+dJaBfGFyS93lGGgjpFnOB5Ah5hyiYuf/ceXePFHxcgYylN0BO2YWxUZs+ApCugqrhQkFARb9SGvzGAvqATz4BnJIKwgpeugHOCSPQ+kMnpTxwg6frwbQy81FUIE6lJqFEjOh1jx98ggKIIggqRiDAI4DLCMmn9CQHYNEF6f0eZaiiEuOhWmL6mV1/MHT8SBwaItlQwUuCxAAzgD3Gs5FA1+zU8j2gHyLVNmAFzDlDkSjOFgANSWR6OB2CAnCzng707Ry3RCOYn2rFAXlrDEH13hKgqLjNxpCUTIJbOPAPgDxkzPjSwS2cWZGWbHDIm0+LJbLHRzMuCsENEM8JDv6ZuCMhQmIxoAMP/FSfTtJkSZo+kA2c8A5I5v2n/b/sb+uLjgZR8ftUAAAAASUVORK5CYII=">
8
- <!ENTITY icon_tip "data:image/png;base64,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">
9
- <!ENTITY icon_important "data:image/png;base64,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">
10
- <!ENTITY icon_nav_list "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABSlJREFUWIXdl1lsVUUYx/8zc7a7daUroXQhlkpoQ4sVA8b6gilbIEIDggEiEiSRFwzEJ/pCXXjgQR8sAW0I0QQSicZIiC9IsClFFqlC6HorXW/Xe+/p7b3nnpnxobbpJW1pS+uD3+N3vpn/b2b+c853gP9rrNp1WZtNHVlo4ZLDl/YzkC+lhAMUZ+9Uv3MCIHK6eraQ4sXvX9ri0tVvD2wtMt4oyaZPvP1rE1bf93ff/f72dGMWbAcKj1xMNYTSeGh7cbxUFNhcQpE2Lvxwz1Sj4czfvn4vONU4ulAAGicni/LTjYR4Jxo7g2jzjSAzJQ5Ll3iUCDUqphu3IACF7150MUqPvr4mS2/sCkICEEKic3AUhfkZBlXJjkUF0HW6JTXJTVwOHYOmNZHv80eQlRYHSFLyQgCrdlXOeKUkIRtezklVff5ITH7U4vC4dAjO00sOVzvnASDJ8vJPz5ghPZSz+ZNg9uaq/VNOQkmypjMaifKYvC0kKBn3eaI6Z4DsTZ9/mBTvOHZ0TxnbVV7q1hXlfO6mqi3P1nEhvIFg2NbU2Ol0hcIM2yAgPHcI5pwA8rd95iFEnN5UVqS19piQTMHO8lJFEHIpb+OZ1Mm1DLjT1jVsexyxizQ0hkF/CJSSlitXKmK353kAYc4rUpPilbQlcXjQ5MOv9zvgdjuwesVSw1b4yRgAxut7B4KGxgjIpDdLSpyOx20+Swh5dTqdaQEo2I6VKzKNJ0+HwIWEkBJ1j7rx6ppcnVIcTdt4xjVeawmHyYVE1BYTZ+5xqFCpxMOmHoVSXJgzAICSrPREtHX7JxKdfSaYoiIj2UMczJ7kBVuldExY/Gu83FQXrtc2WlLImtvVe5vmBJC5tdIppUh3OjUEQ1bMM29PAMsyl6gScgMAFB+6WECkuOlxaLBsCQkgM8lAR++wbO0cClpW9PgMi5wawBg1VACghMJ65mqFLRuMMUooSwYAytgxl6EWFOSlcv9oFJpCkehScb22kQsujzyoOTg8Z4DWxFxTEvDASBhOI9bZDk1BYCRsQwovADCCbbvfKsS6wizW548gJU5HQ4tPhsJRJcevTWu+GQFwpYJT0BbfoIl4V+xL0O3Q0NfvtyXFnZLD1SrnMlNRGf78O4BwlCMlXofKxhcisucHAEAKcbW1vdfKSHZP5AgBDI2if9g0OHi9orscACAkgS3Geo5AKIqoJSVltPbuud0t8wagjF3wdvUpTo0izjm2C4yOeYJzAS2smLe/2BdglA72Do0gwaki2aMhErFQ+9ArbFvMaL7nArT+dKKJc1FT/0eztTI7GZQQcCEmrpniUFQAICBnb/7eEtaZBOwofrzxyLI5P3Xv/L662QDM2BFlb69MQFRvXlf8UlIUKmnvCWBtfhpu1TXADEUeS0LfznmltCnU3V0jBN9DKIsQKU7Xn9tbNVMfOGsAAMgpr9qpG9p3b64vUhraBpCe5IQ5PMzbO3xsNBL9yvvzxx8AQNmBb4wbNQfDsxGdHM/tB9rcK66GI1Glpb1HZiS70DUwgrycpWx9aQEIJdvG6+YjPiuAZaY3GwA0hSHBrcOKcjxo9kGAQgqZWVJSPeV3fsEAnl470UIJqbVsLobNsY4nagtwPnbE/tRux6ICAIAQ5Hirt0sKbiPJY8Dj1DDoN0FABpuvVQYWHcB77WQdF/JUw1/Nlko44gyK5raOMICzLyIOzOHPaLjpl1vuvFuir3/otW7fAOO2vLw8FP7I670hXhRizpFdVmn856KLFf8AcP0p5DnhnVEAAAAASUVORK5CYII=">
11
- <!ENTITY icon_note "data:image/png;base64,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">
12
- <!ENTITY icon_hyperlink "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC">
13
- <!ENTITY icon_warning "data:image/png;base64,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">
14
- <!ENTITY icon_quote "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=">
15
- <!ENTITY icon_nav_next "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABFpJREFUWIXtl0tsVFUYx3/n3HunLYhQwDRqpKZKhSYIMSAGI+ICI02UBejGBBMUURdu0Lgl7gg0QWNiYtDEBBcErZhACOKjPNqC8jBCqTwDobS0Bfqgnce955zPxcy00zItFyNhw5f8c2fmnDn/3/edx70X7sc9DhWn06J1vvheAICIYJ257X8Sk0xZw3rSt+vnxwEA+HTN1zhnsWKwzmDF4JzBOosr+C2yId/U14X9KVMC/yMAwIEL24lMmshliGyGyKaJbIbQpolsSMYkWTb7XQQk7pg6bkeVmy2lbp21fBsS2/fOAeKEw909AMlVVYpkmW+Lszj/M0DOHUEQGal8m7ubACKCE5fLNi+GgCKXGarEXQHIWjlEHK5AkAVLR4N3bA5FtuGidX42DUUKQAkJIZ9pFkAQUILSgohhMLqOKIsa3gwlJdbvXvQRJsdeBtBUZ27ZQreeA6I+WFiz9PPli1eVgUPIZioiWLGgHQqHVkJoB+gNuxDP4nsaEUgkSljz+jrEESAEIsIPv3wbXuvt+KRYBYoexc9/7H25cvH7q5+orE6c6GjA2AgjIY4IKyEp28+NdBsZmxxxLogI4kCcoAh4qWoVx0/+mW49f6z+4Eb7ZjGvomsg3Wc/3NG45URPb4+tnDoHhwFtQVt6wja6UucwKoUfaPxA4ScUXqCGvnuB5tnKWq52d7hT549f9Cfat4v5jAlw9CuiyKRrt/78Wd8EPUUqJlci2nI9c5l+04kOwAt01jihc581Xs68umIBZbqchkO7B8SZV8a7KY25C5o20TUweHPZd3u+yMyYPIeEX0JfeBXP13j+cKZ+IluBbCU0Dz34GDPLF7Jrb30qMuaNpjoujeUB4I3X2HbIXZk6b6Cz9+b1pXOrnws6kq04HWUz9TWen71qT6E8RWkwkYUPr2RPw85kZ0/7pqaNZst4498WAOBysztWWtP+pFg165nqF/z2ZCvak2HzQON5Ck9rFlSsoKWlJTpx+q/Gxg1mzHkvjFgHUe9Eu/ZYa+M/Xe037LyKl9GeQnv5hafwEoqa6Uu42ZOUxiP7ulNEK4h5S44F0LKeUIWmdm/jzt5EOJWqyfNRGpRWaF/x6KTZlKsqftxVn4qsXnZ0A31xxo0NAHBgMx2ZTPjajt3bUzPK5jO99HEAHvCmMXPCEr7/aVvSZFJrD28K/447JsRYAzlIHwjaml3XtKej3qvdbS8umbc86AkvM7f8VX7d91v6wsUz2xrr7GYgyEkXJDjmdIwFkDctyak0ryt/uFOTavqfMsZULZ61wm89c9I0Hz5w7uhW854ZxAcSBRB+zsNj+NQdAVMMYCjjUUrkVNJ1VvarRzprk8nklKYjB5Nn94Rv9V0gVWCWz16NEjDysWm8CozW0CA2hRjjfk9P6Fh97Yx959J+OZ0b2AF21LVQZjTAeO8FOgdYWMbC7PJQ+ZBRZjZnmJejyFqI9WJS0LeYCgEKdedPqPfjXsS/6zUvFnaUbdsAAAAASUVORK5CYII=">
16
- ]>
17
- <html xmlns="http://www.w3.org/1999/xhtml">
18
- <head>
19
- <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
20
- <meta name="generator" content="ERBook 7.0.0"/>
21
-
22
- <title>Rumai 3.0.0</title>
23
-
24
- <meta name="author" content="Suraj N. Kurapati"/>
25
-
26
- <meta name="date" content="11 May 2009"/>
27
-
28
- <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/rumai/ann.xml"/>
29
-
30
- <style type="text/css" media="all">
31
- /*<![CDATA[*/ body{color:#000;background-color:#FFF;line-height:1.5em;font-family:Calibri, Verdana, sans-serif}blockquote{color:#333;font-style:italic}em,strong,dt{font-family:Constantia, "Book Antiqua", "URW Bookman L", serif}hr{height:0;border:0;border-top:thin dashed#000}tt,code,pre{font-family:Monaco, Consolas, "Lucida Console", monospace;font-size:100%}code.para{white-space:pre}a > img{border:none}dt{margin-top:1.5em;font-weight:bolder}h1,h2,h3,h4,h5,h6,.title{font-weight:lighter;font-family:Constantia, "Book Antiqua", "URW Bookman L", serif}#lof h1,#lof h2,#lof h3,#lof h4,#lof h5,#lof h6{margin-top:1.25em}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{margin-top:2.5em;line-height:1.25em}#content h1{font-size:2.0em}#content h2{font-size:1.8em}#content h3{font-size:1.6em}#content h4{font-size:1.4em}#content h5{font-size:1.2em}#content h6{font-size:1.0em}table{border-collapse:collapse;margin:auto;margin-top:1em}th,td{padding:1em;border:1px solid #bbb;vertical-align:top;background-color:#FFF}th{background-color:#F5F5F5}#header{text-align:center}#header > .title{font-size:2.25em}#header > .subtitle{}#header > .authors{margin-top:1.625em;margin-bottom:-0.25em}#header > .date{}.logo,.header_outside_above,#header,.header_outside_below{margin-bottom:5em}.footer_outside_above,#footer,.footer_outside_below{margin-top:5em}#header .header_inside_above,#footer .footer_inside_above{margin-bottom:4em}#header .header_inside_below,#footer .footer_inside_below{margin-top:4em}#Abstract{margin-bottom:5em}#toc li{list-style-type:none}#toc li ul{padding-bottom:1em;border-left:thick solid #F5F5F5}#toc li ul:hover{border-color:#DCDCDC}#toc > ul{padding-left:1em}#bib{margin-top:5em}#footer{border-top:thick dotted #DCDCDC;padding-top:1em;text-align:center}#footer-credits{margin-top:2em;margin-bottom:2em}.part > .title,.chapter > .title{padding-bottom:.5em}.part > .title > big,.chapter > .title > big{display:block;margin-top:.25em}.paragraph > .title,.tip > .title,.note > .title,.caution > .title,.warning > .title,.important > .title,.figure > .title,.table > .title,.example > .title,.equation > .title,.procedure > .title{font-size:large;margin-top:2em}.tip,.note,.caution,.warning,.important,.figure,.table,.example,.equation,.procedure{margin:3em}.tip .nav,.note .nav,.caution .nav,.warning .nav,.important .nav,.figure .nav,.table .nav,.example .nav,.equation .nav,.procedure .nav{margin-right:-3em}.tip > .content,.note > .content,.caution > .content,.warning > .content,.important > .content,.figure > .content,.table > .content,.example > .content,.equation > .content,.procedure > .content{min-height:48px}.tip > .content > .icon,.note > .content > .icon,.caution > .content > .icon,.warning > .content > .icon,.important > .content > .icon{float:left;margin:0 1em 1em 0}.figure > .title{text-align:center}.figure > .content img{display:block;margin:auto}/*]]>*/
32
- </style>
33
-
34
- <style type="text/css" media="screen">
35
- /*<![CDATA[*/ body{margin:0;padding:.5em;background-color:#FFF}#body{margin:auto;max-width:38em}tt{background-color:#F0F8FF}pre,code.para{cursor:text;line-height:normal;border:1px solid #b1d827;background-color:#F5FFDF;padding:1em;display:inline-block;margin:0;min-width:92.5%}code.para,pre.para{background-color:#FFFFE8;border-color:#ED8}a{text-decoration:none}a:hover{text-decoration:underline}a:link{color:#0038E1}a:visited{color:#800080}#toc a:target,#lof a:target,#nav a:target{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==");background-position:center right;background-repeat:no-repeat;padding-right:20px}.nav{float:right;margin-top:-0.25em}.nav > a > img{border-top:thick solid#FFF}.nav > a > img:hover{border-top:thick solid #FA8072}#nav{margin-bottom:4em;text-align:center}/*]]>*/
36
- </style>
37
-
38
- <style type="text/css" media="print">
39
- /*<![CDATA[*/ tt{font-weight:400}pre{border:none}h1,h2,h3,h4,h5,h6{font-weight:400;clear:both}a:link,a:visited{color:#000;text-decoration:none}a[href]:not([href^="#"]):link,a[href]:not([href^="#"]):visited,a.xref[title]:link,a.xref[title]:visited{color:#00F;text-decoration:underline;font-weight:bolder}a[href]:not([href^="#"]):after{content:" " attr(href);font-family:Monaco, Consolas, "Lucida Console", monospace}a.xref[title]:after{content:" " attr(title)}a:after{font-weight:400;font-size:smaller}#nav,.nav,#lof{display:none}#toc,.part,.chapter,#bib{page-break-before:always}.part > .title > big,.chapter > .title > big{padding-bottom:.5em}/*]]>*/
40
- </style>
41
-
42
- <style type="text/css" media="screen">
43
- /*<![CDATA[*/
44
- /* decorate external hyperlinks with a visual indicator */
45
- a[href]:not([href^="#"])
46
- {
47
- background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC");
48
- background-position : center right;
49
- background-repeat : no-repeat;
50
- padding-right : 13px;
51
- }
52
-
53
- /* display icon for blockquote elements */
54
- blockquote
55
- {
56
- background-image : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=");
57
- background-repeat : no-repeat;
58
- margin-left : 0;
59
- padding-left : 65px;
60
- min-height : 50px;
61
- }
62
- /*]]>*/
63
- </style>
64
-
65
- <script type="text/javascript">
66
- //<![CDATA[
67
- /*
68
- * jQuery JavaScript Library v1.3.2
69
- * http://jquery.com/
70
- *
71
- * Copyright (c) 2009 John Resig
72
- * Dual licensed under the MIT and GPL licenses.
73
- * http://docs.jquery.com/License
74
- *
75
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
76
- * Revision: 6246
77
- */
78
- (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
79
- /*
80
- * Sizzle CSS Selector Engine - v0.9.3
81
- * Copyright 2009, The Dojo Foundation
82
- * Released under the MIT, BSD, and GPL Licenses.
83
- * More information: http://sizzlejs.com/
84
- */
85
- (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
86
- /**
87
- * jQuery.ScrollTo - Easy element scrolling using jQuery.
88
- * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
89
- * Dual licensed under MIT and GPL.
90
- * Date: 3/9/2009
91
- * @author Ariel Flesler
92
- * @version 1.4.1
93
- *
94
- * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
95
- */
96
- ;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
97
- /**
98
- * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
99
- * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
100
- * Dual licensed under MIT and GPL.
101
- * Date: 3/11/2009
102
- * @author Ariel Flesler
103
- * @version 1.2.7
104
- **/
105
- ;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);
106
-
107
- $(document).ready(
108
- function(){
109
- $.localScroll({
110
- // the default 1000 is too slow, and 500 is too fast
111
- duration: 700,
112
-
113
- // allow the CSS ':target' pseudo-selector to work properly
114
- hash: true, onAfter: function(){ location = location; }
115
- });
116
- }
117
- );
118
- //]]>
119
- </script>
120
- </head>
121
- <body>
122
- <div id="body">
123
-
124
- <br style="display: none"/>
125
- <hr style="display: none"/>
126
- <br style="display: none"/>
127
-
128
-
129
-
130
-
131
- <div id="header">
132
-
133
-
134
-
135
- <h1 class="title">Rumai 3.0.0</h1>
136
-
137
- <h2 class="subtitle">Ruby interface to the wmii window manager</h2>
138
-
139
- <h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
140
-
141
- <h3 class="date">11 May 2009</h3>
142
-
143
-
144
- </div>
145
-
146
-
147
-
148
-
149
-
150
-
151
- <br style="display: none"/>
152
- <hr style="display: none"/>
153
- <br style="display: none"/>
154
-
155
-
156
- <div id="toc">
157
- <a name="Contents"/><div class="nav" id="Contents"><a title="Focus this segment" href="#Contents"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Return to listing" href="#rev:Contents"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
158
- <h1 class="title">Contents</h1>
159
- <ul><li>1&nbsp;&nbsp;<a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1&nbsp;&nbsp;<a id="rev:Logistics" href="#Logistics">Logistics</a><ul><li><a id="rev:Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li><li>1.2&nbsp;&nbsp;<a id="rev:License" href="#License">License</a></li><li>1.3&nbsp;&nbsp;<a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2&nbsp;&nbsp;<a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3&nbsp;&nbsp;<a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="rev:Concepts" href="#Concepts">Concepts</a></li><li>3.2&nbsp;&nbsp;<a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a><ul><li><a id="rev:shell" href="#shell">Interactive shell</a></li></ul></li><li>3.3&nbsp;&nbsp;<a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1&nbsp;&nbsp;<a id="rev:Automated-client-arrangement" href="#Automated-client-arrangement">Automated client arrangement</a></li><li>3.3.2&nbsp;&nbsp;<a id="rev:Multiple-client-grouping" href="#Multiple-client-grouping">Multiple client grouping</a></li><li>3.3.3&nbsp;&nbsp;<a id="rev:Easy-column-manipulation" href="#Easy-column-manipulation">Easy column manipulation</a></li><li>3.3.4&nbsp;&nbsp;<a id="rev:Easy-client-manipulation" href="#Easy-client-manipulation">Easy client manipulation</a></li><li>3.3.5&nbsp;&nbsp;<a id="rev:Traversing-the-file-system" href="#Traversing-the-file-system">Traversing the file system</a></li><li>3.3.6&nbsp;&nbsp;<a id="rev:Available-commands" href="#Available-commands">Available commands</a></li></ul></li><li>3.4&nbsp;&nbsp;<a id="rev:wmiirc" href="#wmiirc">Scripting your wmiirc</a></li></ul></li><li>4&nbsp;&nbsp;<a id="rev:History" href="#History">History</a><ul><li>4.1&nbsp;&nbsp;<a id="rev:Version-3.0.0-2009-05-11" href="#Version-3.0.0-2009-05-11">Version 3.0.0 (2009-05-11)</a><ul><li><a id="rev:Incompatible-changes" href="#Incompatible-changes">Incompatible changes</a></li><li><a id="rev:New-features" href="#New-features">New features</a></li><li><a id="rev:Bug-fixes" href="#Bug-fixes">Bug fixes</a></li><li><a id="rev:Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li><li>4.2&nbsp;&nbsp;<a id="rev:Version-2.1.0-2009-05-09" href="#Version-2.1.0-2009-05-09">Version 2.1.0 (2009-05-09)</a><ul><li><a id="rev:Thank-you" href="#Thank-you">Thank you</a></li><li><a id="rev:New-features-612007698" href="#New-features-612007698">New features</a></li><li><a id="rev:Bug-fixes-612014748" href="#Bug-fixes-612014748">Bug fixes</a></li><li><a id="rev:Housekeeping-612018528" href="#Housekeeping-612018528">Housekeeping</a></li></ul></li><li>4.3&nbsp;&nbsp;<a id="rev:Version-2.0.2-2009-02-26" href="#Version-2.0.2-2009-02-26">Version 2.0.2 (2009-02-26)</a><ul><li><a id="rev:Thank-you-611677758" href="#Thank-you-611677758">Thank you</a></li><li><a id="rev:Bug-fixes-611682128" href="#Bug-fixes-611682128">Bug fixes</a></li></ul></li><li>4.4&nbsp;&nbsp;<a id="rev:Version-2.0.1-2009-01-25" href="#Version-2.0.1-2009-01-25">Version 2.0.1 (2009-01-25)</a><ul><li><a id="rev:Bug-fixes-611692458" href="#Bug-fixes-611692458">Bug fixes</a></li><li><a id="rev:Housekeeping-611696068" href="#Housekeeping-611696068">Housekeeping</a></li></ul></li><li>4.5&nbsp;&nbsp;<a id="rev:Version-2.0.0-2008-02-04" href="#Version-2.0.0-2008-02-04">Version 2.0.0 (2008-02-04)</a><ul><li><a id="rev:Thank-you-611714488" href="#Thank-you-611714488">Thank you</a></li><li><a id="rev:Incompatible-changes-611720848" href="#Incompatible-changes-611720848">Incompatible changes</a></li><li><a id="rev:New-features-611728378" href="#New-features-611728378">New features</a></li><li><a id="rev:Bug-fixes-611732428" href="#Bug-fixes-611732428">Bug fixes</a></li></ul></li><li>4.6&nbsp;&nbsp;<a id="rev:Version-1.0.0-2008-01-26" href="#Version-1.0.0-2008-01-26">Version 1.0.0 (2008-01-26)</a></li></ul></li></ul>
160
- </div>
161
-
162
-
163
- <br style="display: none"/>
164
- <hr style="display: none"/>
165
- <br style="display: none"/>
166
-
167
-
168
- <div id="content">
169
-
170
-
171
-
172
-
173
- <div class="chapter">
174
- <a name="Introduction"/><div class="nav" id="Introduction"><a title="Focus this segment" href="#Introduction"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus next segment" href="#Etymology"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Introduction"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
175
- <h1 class="title">
176
- Chapter&nbsp;1
177
- <br/>
178
- <big>Introduction</big>
179
- </h1>
180
- <div class="content"><p>Rumai is a <a href='http://ruby-lang.org'>Ruby</a> interface to the <a href='http://wmii.suckless.org'>wmii</a> window manager.</p>
181
-
182
- <ul>
183
- <li>
184
- <p>It excels at dynamic arrangement of clients, columns, views, and tags.</p>
185
- </li>
186
-
187
- <li>
188
- <p>It provides an <a class="xref" href="#shell" title="Paragraph. &quot;Interactive shell&quot;">interactive shell</a> for live entertainment and experimentation.</p>
189
- </li>
190
-
191
- <li>
192
- <p>It contains a pure Ruby client for the <a href='http://cm.bell-labs.com/magic/man2html/5/intro'>9P2000 protocol</a> on which wmii&#8217;s <a href='http://libs.suckless.org/libixp'>IXP file-system interface</a> is built.</p>
193
- </li>
194
- </ul><p> These features distinguish Rumai from the competition:</p>
195
-
196
- <ul>
197
- <li><a href='http://libs.suckless.org/r9p'>r9p</a></li>
198
-
199
- <li><a href='http://rubyforge.org/projects/rii/'>Rii</a></li>
200
-
201
- <li><a href='http://home.gna.org/rubyixp/'>Ruby-IXP</a></li>
202
-
203
- <li><a href='http://eigenclass.org/hiki.rb?wmii+ruby'>ruby-wmii</a></li>
204
- </ul>
205
-
206
- <div class="paragraph">
207
- <a name="Etymology"/><div class="nav" id="Etymology"><a title="Focus this segment" href="#Etymology"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Introduction"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Logistics"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Etymology"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
208
- <p class="title">Etymology</p>
209
- <div class="content"><p>The word &#8220;wmii&#8221; is incredibly difficult to pronounce because it is an abbreviation, not an acronym. If we were to treat it as an acronym, the closest pronounciation would be, in my mind, something like &#8220;vim-eye&#8221;.</p>
210
-
211
- <p>Since this is a Ruby library, I added a &#8220;roo&#8221; and worked it through:</p>
212
-
213
- <ul>
214
- <li>vim-eye</li>
215
-
216
- <li>roo-vim-eye</li>
217
-
218
- <li>roovm-eye</li>
219
- </ul>
220
-
221
- <p>And thus we get &#8220;Rumai&#8221;.</p></div>
222
- </div><div class="section">
223
- <a name="Logistics"/><div class="nav" id="Logistics"><a title="Focus this segment" href="#Logistics"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Etymology"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-numbers"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Logistics"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
224
- <h2 class="title">
225
- 1.1&nbsp;&nbsp;Logistics
226
- </h2>
227
- <div class="content"><ul>
228
- <li><a class="xref" href="#History" title="Chapter 4. &quot;History&quot;">Release notes</a> &#8212; history of project releases.</li>
229
-
230
- <li><a href='http://github.com/sunaku/rumai'>Source code</a> &#8212; obtain via <a href='http://git-scm.com'>Git</a> or browse online.</li>
231
-
232
- <li><a href='./api/index.html'>API reference</a> &#8212; documentation for source code.</li>
233
-
234
- <li><a href='http://snk.tuxfamily.org/lib/rumai/'>Project home</a> &#8212; the Rumai project home page.</li>
235
- </ul>
236
-
237
- <p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.2. &quot;License&quot;">contact the author(s)</a>.</p>
238
-
239
- <div class="paragraph">
240
- <a name="Version-numbers"/><div class="nav" id="Version-numbers"><a title="Focus this segment" href="#Version-numbers"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Logistics"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#License"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-numbers"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
241
- <p class="title">Version numbers</p>
242
- <div class="content"><p>Rumai releases are numbered in <em>major.minor.patch</em> form according to the <a href='http://www.rubygems.org/read/chapter/7'>RubyGems rational versioning policy</a>, which can be summarized thus:</p>
243
- <table border="1">
244
- <thead>
245
- <tr>
246
- <td rowspan='2'>What increased in the version number?</td>
247
- <td colspan='3'>The increase indicates that the release:</td>
248
- </tr>
249
- <tr>
250
- <th>Is backward compatible?</th>
251
- <th>Has new features?</th>
252
- <th>Has bug fixes?</th>
253
- </tr>
254
- </thead>
255
- <tbody>
256
- <tr>
257
- <th>major</th>
258
- <td style='background-color: #FFE4E1;'>No</td>
259
- <td>Yes</td>
260
- <td>Yes</td>
261
- </tr>
262
- <tr>
263
- <th>minor</th>
264
- <td>Yes</td>
265
- <td>Yes</td>
266
- <td>Yes</td>
267
- </tr>
268
- <tr>
269
- <th>patch</th>
270
- <td>Yes</td>
271
- <td style='background-color: #FFE4E1;'>No</td>
272
- <td>Yes</td>
273
- </tr>
274
- </tbody>
275
- </table></div>
276
- </div><p></p></div>
277
- </div><div class="section">
278
- <a name="License"/><div class="nav" id="License"><a title="Focus this segment" href="#License"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-numbers"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Credits"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:License"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
279
- <h2 class="title">
280
- 1.2&nbsp;&nbsp;License
281
- </h2>
282
- <div class="content"><p>(the ISC license)</p>
283
-
284
- <p>Copyright 2006 Suraj N. Kurapati <a href='mailto:sunaku@gmail.com'>&#115;&#117;&#110;&#097;&#107;&#117;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;</a></p>
285
-
286
- <p>Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</p>
287
-
288
- <p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221; AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p></div>
289
- </div><div class="section">
290
- <a name="Credits"/><div class="nav" id="Credits"><a title="Focus this segment" href="#Credits"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#License"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Setup"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Credits"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
291
- <h2 class="title">
292
- 1.3&nbsp;&nbsp;Credits
293
- </h2>
294
- <div class="content"><p>Rumai is made possible by <a class="xref" href="#History" title="Chapter 4. &quot;History&quot;">contributions</a> from users like you:</p>
295
-
296
- <ul>
297
- <li><a href='http://textmode.at'>Christoph Blank</a></li>
298
-
299
- <li>Michael Andrus</li>
300
-
301
- <li><a href='http://github.com/Tass'>Simon Hafner</a></li>
302
- </ul></div>
303
- </div><p> </p></div>
304
- </div>
305
-
306
- <div class="chapter">
307
- <a name="Setup"/><div class="nav" id="Setup"><a title="Focus this segment" href="#Setup"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Credits"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Requirements"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Setup"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
308
- <h1 class="title">
309
- Chapter&nbsp;2
310
- <br/>
311
- <big>Setup</big>
312
- </h1>
313
- <div class="content"><div class="section">
314
- <a name="Requirements"/><div class="nav" id="Requirements"><a title="Focus this segment" href="#Requirements"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Setup"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Installation"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Requirements"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
315
- <h2 class="title">
316
- 2.1&nbsp;&nbsp;Requirements
317
- </h2>
318
- <div class="content"><p>Your system needs the following software to run Rumai.</p>
319
- <table border="1"><thead><tr><th>Software</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td style='text-align: left;'><a href='http://ruby-lang.org'>Ruby</a></td><td style='text-align: left;'>Ruby language interpreter</td><td style='text-align: left;'>Version 1.8.6 or newer is required.</td>
320
- </tr><tr><td style='text-align: left;'><a href='http://rubygems.org'>RubyGems</a></td><td style='text-align: left;'>Ruby packaging system</td><td style='text-align: left;'>Version 1.3.1 or newer is required.</td>
321
- </tr><tr><td style='text-align: left;'><a href='http://wmii.suckless.org'>wmii</a></td><td style='text-align: left;'>Window manager</td><td style='text-align: left;'>Version 3.6 or newer is required.</td>
322
- </tr></tbody></table></div>
323
- </div><div class="section">
324
- <a name="Installation"/><div class="nav" id="Installation"><a title="Focus this segment" href="#Installation"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Requirements"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Manifest"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Installation"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
325
- <h2 class="title">
326
- 2.2&nbsp;&nbsp;Installation
327
- </h2>
328
- <div class="content"><p>You can install Rumai by running this command:</p>
329
-
330
- <pre>gem install rumai</pre>
331
-
332
- <p>To check whether the installation was sucessful, run this command:</p>
333
-
334
- <pre>rumai --version</pre>
335
-
336
- <p>If the installation was successful, you will see output like this:</p>
337
-
338
- <pre>project: Rumai
339
- version: 3.0.0
340
- release: 2009-05-11
341
- website: http://snk.tuxfamily.org/lib/rumai/
342
- install: /home/sun/src/rumai</pre><p></p>
343
-
344
- <p>If you do not see such output, you may <a class="xref" href="#License" title="Section 1.2. &quot;License&quot;">ask the author(s)</a> for help.</p></div>
345
- </div><div class="section">
346
- <a name="Manifest"/><div class="nav" id="Manifest"><a title="Focus this segment" href="#Manifest"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Installation"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Usage"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Manifest"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
347
- <h2 class="title">
348
- 2.3&nbsp;&nbsp;Manifest
349
- </h2>
350
- <div class="content"><p>You will see the following items inside Rumai&#8217;s installation directory, whose path you can determine by running this command:</p>
351
-
352
- <pre>rumai --version</pre>
353
-
354
- <ul>
355
- <li>
356
- <p><tt>bin/</tt></p>
357
-
358
- <ul>
359
- <li><tt>rumai</tt> &#8212; the main Rumai executable.</li>
360
- </ul>
361
- </li>
362
-
363
- <li>
364
- <p><tt>lib/</tt></p>
365
-
366
- <ul>
367
- <li>
368
- <p><tt>rumai.rb</tt> &#8212; the main Rumai library.</p>
369
- </li>
370
-
371
- <li>
372
- <p><tt>rumai/</tt></p>
373
-
374
- <ul>
375
- <li><tt>ixp.rb</tt> - pure Ruby client for the <a href='http://cm.bell-labs.com/magic/man2html/5/intro'>9P2000 protocol</a></li>
376
- </ul>
377
- </li>
378
- </ul>
379
- </li>
380
-
381
- <li>
382
- <p><tt>doc/</tt></p>
383
-
384
- <ul>
385
- <li>
386
- <p><tt>api/</tt> &#8212; API reference documentation.</p>
387
- </li>
388
-
389
- <li>
390
- <p><tt>index.erb</tt> &#8212; source of this user manual.</p>
391
- </li>
392
- </ul>
393
- </li>
394
-
395
- <li>
396
- <p><tt>LICENSE</tt> &#8212; copyright notice and legal conditions.</p>
397
- </li>
398
- </ul></div>
399
- </div><p> </p></div>
400
- </div>
401
-
402
- <div class="chapter">
403
- <a name="Usage"/><div class="nav" id="Usage"><a title="Focus this segment" href="#Usage"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Manifest"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Concepts"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Usage"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
404
- <h1 class="title">
405
- Chapter&nbsp;3
406
- <br/>
407
- <big>Usage</big>
408
- </h1>
409
- <div class="content"><div class="section">
410
- <a name="Concepts"/><div class="nav" id="Concepts"><a title="Focus this segment" href="#Concepts"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Usage"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Command-line-interface"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Concepts"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
411
- <h2 class="title">
412
- 3.1&nbsp;&nbsp;Concepts
413
- </h2>
414
- <div class="content"><dl>
415
- <dt>Client</dt>
416
-
417
- <dd>
418
- <p>Any graphical program (a &#8220;window&#8221;) that is running in your X session.</p>
419
- </dd>
420
-
421
- <dt>Tag</dt>
422
-
423
- <dd>
424
- <p>An arbitrary label that can be associated with one or more clients.</p>
425
- </dd>
426
-
427
- <dt>View</dt>
428
-
429
- <dd>
430
- <p>A visualization of a particular tag. A &#8220;workspace&#8221;.</p>
431
- </dd>
432
-
433
- <dt>Area</dt>
434
-
435
- <dd>
436
- <p>A region inside a view. It can contain clients.</p>
437
- </dd>
438
-
439
- <dt>Managed area, column</dt>
440
-
441
- <dd>
442
- <p>An area whose clients cannot overlap each other.</p>
443
- </dd>
444
-
445
- <dt>Floating area</dt>
446
-
447
- <dd>
448
- <p>An area whose clients:</p>
449
-
450
- <ul>
451
- <li>can overlap each other</li>
452
-
453
- <li>float above clients in the managed areas</li>
454
- </ul>
455
- </dd>
456
- </dl></div>
457
- </div><div class="section">
458
- <a name="Command-line-interface"/><div class="nav" id="Command-line-interface"><a title="Focus this segment" href="#Command-line-interface"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Concepts"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#shell"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Command-line-interface"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
459
- <h2 class="title">
460
- 3.2&nbsp;&nbsp;Command-line interface
461
- </h2>
462
- <div class="content"><p>When you run this command:</p>
463
-
464
- <pre>rumai --help</pre>
465
-
466
- <p>You will see this output:</p>
467
-
468
- <pre>Rumai - Ruby interface to the wmii window manager
469
-
470
- This program is an interactive shell for Rumai.
471
-
472
- Usage:
473
-
474
- rumai [Options]
475
- rumai [Options] -- Arguments
476
-
477
- Arguments: Command-line options and arguments that should
478
- be passed to `irb`, the interactive Ruby shell.
479
-
480
- Options:
481
-
482
- --manual, -m: Show the user manual
483
- --locale, -l &lt;s&gt;: Set preferred language
484
- --version, -v: Print version and exit
485
- --help, -h: Show this message</pre><p></p>
486
-
487
- <div class="paragraph">
488
- <a name="shell"/><div class="nav" id="shell"><a title="Focus this segment" href="#shell"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Command-line-interface"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Tutorial"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:shell"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
489
- <p class="title">Interactive shell</p>
490
- <div class="content"><p>When you run this command:</p>
491
-
492
- <pre>rumai</pre>
493
-
494
- <p>An IRB session will begin, showing you a command prompt like this:</p>
495
-
496
- <pre>irb(Rumai):001:0&gt;</pre>
497
-
498
- <p>The <tt>irb(Rumai)</tt> token in the command prompt indicates that commands will be evaluated <em>inside</em> the <code class="line"><span style="color:#036;font-weight:bold">Rumai</span></code> module. As a result, you can omit the &#8220;Rumai&#8221; prefix from your commands if you wish.</p>
499
-
500
- <p>For example, to get the current client object, you can type <code class="line">curr_client</code> instead of having to type <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>.curr_client</code> at the prompt. Both commands achieve the same effect.</p>
501
-
502
- <p>The next thing to note is that <strong>tab completion</strong> is enabled by default. So you can type part of a command and press the TAB key to see a list of possible completions.</p></div>
503
- </div><p></p></div>
504
- </div><div class="section">
505
- <a name="Tutorial"/><div class="nav" id="Tutorial"><a title="Focus this segment" href="#Tutorial"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#shell"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Automated-client-arrangement"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Tutorial"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
506
- <h2 class="title">
507
- 3.3&nbsp;&nbsp;Tutorial
508
- </h2>
509
- <div class="content"><p>Now that you know <a class="xref" href="#shell" title="Paragraph. &quot;Interactive shell&quot;">how to start the interactive shell</a>, let us walk through a quick demonstration that highlights the main features of Rumai. You can follow along by copying &amp; pasting the presented commands into the interactive shell.</p>
510
-
511
- <div class="section">
512
- <a name="Automated-client-arrangement"/><div class="nav" id="Automated-client-arrangement"><a title="Focus this segment" href="#Automated-client-arrangement"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Tutorial"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Multiple-client-grouping"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Automated-client-arrangement"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
513
- <h3 class="title">
514
- 3.3.1&nbsp;&nbsp;Automated client arrangement
515
- </h3>
516
- <div class="content"><p>Launch a few terminals so that we have something to work with: <ins><pre class="para">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
517
- colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -title </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -e sh -c read &amp;</span><span style="color:#710">&quot;</span></span> }
518
- </pre></ins></p>
519
-
520
- <p>Arrange all clients in a grid:</p>
521
-
522
- <p><ins><pre class="para">curr_view.arrange_in_grid
523
- </pre></ins></p>
524
-
525
- <p>Arrange all clients in a diamond shape:</p>
526
-
527
- <p><ins><pre class="para">curr_view.arrange_in_diamond
528
- </pre></ins></p>
529
-
530
- <p>Arrange all clients like LarsWM does:</p>
531
-
532
- <p><ins><pre class="para">curr_view.arrange_as_larswm
533
- </pre></ins></p>
534
-
535
- <p>Close the terminals we launched earlier: <ins><pre class="para">terms = curr_view.clients.select {|c| colors.include? c.label.read }
536
- terms.each {|c| c.kill }
537
- </pre></ins></p></div>
538
- </div><div class="section">
539
- <a name="Multiple-client-grouping"/><div class="nav" id="Multiple-client-grouping"><a title="Focus this segment" href="#Multiple-client-grouping"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Automated-client-arrangement"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Easy-column-manipulation"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Multiple-client-grouping"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
540
- <h3 class="title">
541
- 3.3.2&nbsp;&nbsp;Multiple client grouping
542
- </h3>
543
- <div class="content"><p>Launch a few terminals so that we have something to work with: <ins><pre class="para">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
544
- colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -title </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -e sh -c read &amp;</span><span style="color:#710">&quot;</span></span> }
545
- </pre></ins></p>
546
-
547
- <p>Add the red, green, and blue terminals into the &#8220;grouping&#8221;:</p>
548
-
549
- <p><ins><pre class="para">terms = curr_view.clients.select {|c| <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">red green blue</span><span style="color:#710">]</span></span>.include? c.label.read }
550
- terms.each {|c| c.group }
551
- </pre></ins></p>
552
-
553
- <p>You should now see a new button labelled as &#8221;@&#8221; on the left-hand side of wmii&#8217;s bar, indicating that there is now a new view labelled &#8221;@&#8221; in wmii. Let us inspect what clients this mysterious view contains:</p>
554
-
555
- <p><ins><pre class="para">v = <span style="color:#036;font-weight:bold">View</span>.new <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">@</span><span style="color:#710">&quot;</span></span>
556
- puts v.clients.map {|c| c.label.read }
557
- </pre></ins></p>
558
-
559
- <p>Aha! The mysterious view contains the red, green, and blue clients we recently &#8220;grouped&#8221;. Thus, by adding a client to the &#8220;grouping&#8221;, we are simply tagging the client with the &#8221;@&#8221; token.</p>
560
-
561
- <p>Now that we have put some clients into the &#8220;grouping&#8221;, let us move all clients in the grouping to the floating area in the current view:</p>
562
-
563
- <p><ins><pre class="para">grouping.each {|c| c.send <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">toggle</span><span style="color:#710">&quot;</span></span> }
564
- </pre></ins></p>
565
-
566
- <p>Neat! Let us bring them back into the managed area:</p>
567
-
568
- <p><ins><pre class="para">grouping.each {|c| c.send <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">toggle</span><span style="color:#710">&quot;</span></span> }
569
- </pre></ins></p>
570
-
571
- <p>Close the terminals we launched earlier: <ins><pre class="para">terms = curr_view.clients.select {|c| colors.include? c.label.read }
572
- terms.each {|c| c.kill }
573
- </pre></ins></p>
574
-
575
- <p>In summary, you can select multiple clients (by adding them to the &#8220;grouping&#8221;) and perform operations on them. This is useful when you want to do something with a group of clients but do not want to manually focus one, perform the action, focus the next one, and so on.</p>
576
-
577
- <p>Another important aspect is that selected clients stay selected until they are unselected. This allows you to continue performing tasks on the selection without having to reselect the same clients after every operation.</p></div>
578
- </div><div class="section">
579
- <a name="Easy-column-manipulation"/><div class="nav" id="Easy-column-manipulation"><a title="Focus this segment" href="#Easy-column-manipulation"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Multiple-client-grouping"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Easy-client-manipulation"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Easy-column-manipulation"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
580
- <h3 class="title">
581
- 3.3.3&nbsp;&nbsp;Easy column manipulation
582
- </h3>
583
- <div class="content"><p>Launch a few terminals so that we have something to work with: <ins><pre class="para">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
584
- colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -title </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -e sh -c read &amp;</span><span style="color:#710">&quot;</span></span> }
585
- </pre></ins></p>
586
-
587
- <p>You can insert a group of clients to the top, bottom, or after the currently focused client of <em>any</em> column using Array-like methods.</p>
588
-
589
- <p>Give each client its own column (one client per column):</p>
590
-
591
- <p><ins><pre class="para">curr_view.each_column {|c| c.length = <span style="color:#00D;font-weight:bold">1</span> }
592
- </pre></ins></p>
593
-
594
- <p>Put (at most) three clients in every column:</p>
595
-
596
- <p><ins><pre class="para">curr_view.each_column {|c| c.length = <span style="color:#00D;font-weight:bold">3</span> }
597
- </pre></ins></p>
598
-
599
- <p>Move the red, green, and blue clients into the floating area:</p>
600
-
601
- <p><ins><pre class="para">rgb = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">red green blue</span><span style="color:#710">]</span></span>
602
- terms = curr_view.clients.select {|c| rgb.include? c.label.read }
603
- curr_view.areas[<span style="color:#00D;font-weight:bold">0</span>].push terms
604
- </pre></ins></p>
605
-
606
- <p>Slurp all floating clients into the last column:</p>
607
-
608
- <p><ins><pre class="para">list = curr_view.areas
609
- a, b = list.first, list.last
610
- b.concat a
611
- </pre></ins></p>
612
-
613
- <p>Set the last column&#8217;s layout to stacking mode:</p>
614
-
615
- <p><ins><pre class="para">b.layout = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">stack</span><span style="color:#710">'</span></span>
616
- </pre></ins></p>
617
-
618
- <p>Move the red, green, and blue clients to the top of the second column:</p>
619
-
620
- <p><ins><pre class="para">curr_view.areas[<span style="color:#00D;font-weight:bold">2</span>].unshift terms
621
- </pre></ins></p>
622
-
623
- <p>Move the red, green, and blue clients to the bottom of the third column:</p>
624
-
625
- <p><ins><pre class="para">curr_view.areas[<span style="color:#00D;font-weight:bold">3</span>].push terms
626
- </pre></ins></p>
627
-
628
- <p>Close the terminals we launched earlier: <ins><pre class="para">terms = curr_view.clients.select {|c| colors.include? c.label.read }
629
- terms.each {|c| c.kill }
630
- </pre></ins></p></div>
631
- </div><div class="section">
632
- <a name="Easy-client-manipulation"/><div class="nav" id="Easy-client-manipulation"><a title="Focus this segment" href="#Easy-client-manipulation"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Easy-column-manipulation"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Traversing-the-file-system"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Easy-client-manipulation"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
633
- <h3 class="title">
634
- 3.3.4&nbsp;&nbsp;Easy client manipulation
635
- </h3>
636
- <div class="content"><p>Launch a few terminals so that we have something to work with: <ins><pre class="para">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
637
- colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -title </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>c<span style="font-weight:bold;color:#777">}</span></span><span style=""> -e sh -c read &amp;</span><span style="color:#710">&quot;</span></span> }
638
- </pre></ins></p>
639
-
640
- <p>Obtain a reference to the red client:</p>
641
-
642
- <p><ins><pre class="para">red = curr_view.clients.find {|c| c.label.read == <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">red</span><span style="color:#710">&quot;</span></span> }
643
- </pre></ins></p>
644
-
645
- <p>Show the red client&#8217;s current tags:</p>
646
-
647
- <p><ins><pre class="para">red.tags
648
- </pre></ins></p>
649
-
650
- <p>Add the &#8220;foo&#8221; and &#8220;bar&#8221; tags to the red client:</p>
651
-
652
- <p><ins><pre class="para">red.tag <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">foo</span><span style="color:#710">&quot;</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">bar</span><span style="color:#710">&quot;</span></span>
653
- </pre></ins></p>
654
-
655
- <p>Remove the &#8220;bar&#8221; tag from the red client:</p>
656
-
657
- <p><ins><pre class="para">red.untag <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">bar</span><span style="color:#710">&quot;</span></span>
658
- </pre></ins></p>
659
-
660
- <p>Do complex operations on the red client&#8217;s tags:</p>
661
-
662
- <p><ins><pre class="para">red.with_tags { concat <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">a b c</span><span style="color:#710">]</span></span>; push <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">z</span><span style="color:#710">'</span></span>; delete <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">c</span><span style="color:#710">'</span></span> }
663
- </pre></ins></p>
664
-
665
- <p>Focus the next client after the red client:</p>
666
-
667
- <p><ins><pre class="para">red.next.focus
668
- curr_client == red.next <span style="color:#888">#=&gt; true</span>
669
- </pre></ins></p>
670
-
671
- <p>Notice that by focusing a client, we make it the current client.</p>
672
-
673
- <p>Focus the red client on a different view:</p>
674
-
675
- <p><ins><pre class="para">orig = curr_view
676
- v = red.views.last
677
- red.focus v
678
- </pre></ins></p>
679
-
680
- <p>Return to the original view:</p>
681
-
682
- <p><ins><pre class="para">orig.focus
683
- </pre></ins></p>
684
-
685
- <p>Send the red client to the last column:</p>
686
-
687
- <p><ins><pre class="para">red.send curr_view.areas.last
688
- </pre></ins></p>
689
-
690
- <p>Close the terminals we launched earlier: <ins><pre class="para">terms = curr_view.clients.select {|c| colors.include? c.label.read }
691
- terms.each {|c| c.kill }
692
- </pre></ins></p></div>
693
- </div><div class="section">
694
- <a name="Traversing-the-file-system"/><div class="nav" id="Traversing-the-file-system"><a title="Focus this segment" href="#Traversing-the-file-system"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Easy-client-manipulation"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Available-commands"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Traversing-the-file-system"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
695
- <h3 class="title">
696
- 3.3.5&nbsp;&nbsp;Traversing the file system
697
- </h3>
698
- <div class="content"><p>Show the root node of wmii&#8217;s IXP file system:</p>
699
-
700
- <p><ins><pre class="para">fs
701
- </pre></ins></p>
702
-
703
- <p>Show the names of all files at the root level:</p>
704
-
705
- <p><ins><pre class="para">fs.entries
706
- </pre></ins></p>
707
-
708
- <p>Show the parent of the root node:</p>
709
-
710
- <p><ins><pre class="para">fs.parent
711
- </pre></ins></p>
712
-
713
- <p>Show the children of the root node:</p>
714
-
715
- <p><ins><pre class="para">fs.children
716
- </pre></ins></p>
717
-
718
- <p>Navigate into to the <tt>/lbar/</tt> directory:</p>
719
-
720
- <p><ins><pre class="para">n1 = fs.lbar
721
- n2 = fs[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">lbar</span><span style="color:#710">'</span></span>]
722
- n1 == n2 <span style="color:#888">#=&gt; true</span>
723
- left_bar = n1
724
- </pre></ins></p>
725
-
726
- <p>Notice that you can traverse the file system hierarchy by simply calling methods on node objects. Alternatively, you can traverse by specifying an arbitrary sub-path (relative path) using the <code class="line">[]</code> operator on a node.</p>
727
-
728
- <p>Create a new temporary button:</p>
729
-
730
- <p><ins><pre class="para">b = left_bar.rumai_example <span style="color:#888"># path of new button</span>
731
- b.exist? <span style="color:#888">#=&gt; false</span>
732
- b.create
733
- b.exist? <span style="color:#888">#=&gt; true</span>
734
- </pre></ins></p>
735
-
736
- <p>You should now see an empty button on the left-hand side of the wmii bar.</p>
737
-
738
- <p>Color the button black-on-white and label it as &#8220;hello world&#8221;:</p>
739
-
740
- <p><ins><pre class="para">content = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">#000000 #ffffff #000000 hello world</span><span style="color:#710">&quot;</span></span>
741
- b.write content
742
- b.read == content <span style="color:#888">#=&gt; true</span>
743
- </pre></ins></p>
744
-
745
- <p>Remove the temporary button:</p>
746
-
747
- <p><ins><pre class="para">b.remove
748
- b.exist? <span style="color:#888">#=&gt; false</span>
749
- </pre></ins></p></div>
750
- </div><div class="section">
751
- <a name="Available-commands"/><div class="nav" id="Available-commands"><a title="Focus this segment" href="#Available-commands"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Traversing-the-file-system"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#wmiirc"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Available-commands"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
752
- <h3 class="title">
753
- 3.3.6&nbsp;&nbsp;Available commands
754
- </h3>
755
- <div class="content"><p>Refer to the <code class="line"><span style="color:#036;font-weight:bold">Rumai</span></code> module in the <a href='api/index.html'>API documentation</a> for a complete list of commands (method calls, really) and their documentation.</p></div>
756
- </div><p> </p></div>
757
- </div><div class="section">
758
- <a name="wmiirc"/><div class="nav" id="wmiirc"><a title="Focus this segment" href="#wmiirc"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Available-commands"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#History"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:wmiirc"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
759
- <h2 class="title">
760
- 3.4&nbsp;&nbsp;Scripting your wmiirc
761
- </h2>
762
- <div class="content"><p>One important application of Rumai is the support of Ruby-based <tt>wmiirc</tt> configuration files. For a solid example of such application, take a look at <a href='http://github.com/sunaku/wmiirc/'>my personal <tt>wmiirc</tt></a>.</p></div>
763
- </div><p> </p></div>
764
- </div>
765
-
766
- <div class="chapter">
767
- <a name="History"/><div class="nav" id="History"><a title="Focus this segment" href="#History"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#wmiirc"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-3.0.0-2009-05-11"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:History"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
768
- <h1 class="title">
769
- Chapter&nbsp;4
770
- <br/>
771
- <big>History</big>
772
- </h1>
773
- <div class="content"><div class="section">
774
- <a name="Version-3.0.0-2009-05-11"/><div class="nav" id="Version-3.0.0-2009-05-11"><a title="Focus this segment" href="#Version-3.0.0-2009-05-11"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#History"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Incompatible-changes"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-3.0.0-2009-05-11"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
775
- <h2 class="title">
776
- 4.1&nbsp;&nbsp;Version 3.0.0 (2009-05-11)
777
- </h2>
778
- <div class="content"><p>This release revises method names, adds new methods, and fixes a bug.</p>
779
-
780
- <div class="paragraph">
781
- <a name="Incompatible-changes"/><div class="nav" id="Incompatible-changes"><a title="Focus this segment" href="#Incompatible-changes"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-3.0.0-2009-05-11"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Incompatible-changes"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
782
- <p class="title">Incompatible changes</p>
783
- <div class="content"><ul>
784
- <li>
785
- <p>Rename <code class="line"><span style="color:#888">#toggle_</span></code> methods to use <code class="line">!</code> suffix in their names.</p>
786
- </li>
787
-
788
- <li>
789
- <p>Rename <code class="line"><span style="color:#888">#float</span></code> methods to <code class="line"><span style="color:#888">#floating</span></code>.</p>
790
- </li>
791
-
792
- <li>
793
- <p>Rename <code class="line"><span style="color:#036;font-weight:bold">View</span><span style="color:#888">#floater</span></code> method to <code class="line"><span style="color:#036;font-weight:bold">View</span><span style="color:#888">#floating_area</span></code>.</p>
794
- </li>
795
- </ul></div>
796
- </div><div class="paragraph">
797
- <a name="New-features"/><div class="nav" id="New-features"><a title="Focus this segment" href="#New-features"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Incompatible-changes"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
798
- <p class="title">New features</p>
799
- <div class="content"><ul>
800
- <li>
801
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">Client</span><span style="color:#888">#stick</span></code> methods to manipulate sticky status.</p>
802
- </li>
803
-
804
- <li>
805
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">Client</span><span style="color:#888">#fullscreen</span></code> methods to manipulate fullscreen status.</p>
806
- </li>
807
-
808
- <li>
809
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">Client</span><span style="color:#888">#slay</span></code> method which is a forceful version of <code class="line"><span style="color:#888">#kill</span></code>.</p>
810
- </li>
811
-
812
- <li>
813
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">View</span><span style="color:#888">#select</span></code> method to move focus relatively inside a view.</p>
814
- </li>
815
-
816
- <li>
817
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">Area</span>::floating</code> method for symmetry with <code class="line"><span style="color:#036;font-weight:bold">Area</span>::curr</code>.</p>
818
- </li>
819
-
820
- <li>
821
- <p>Add <code class="line"><span style="color:#036;font-weight:bold">View</span><span style="color:#888">#managed_area</span></code> aliases for <code class="line"><span style="color:#036;font-weight:bold">View</span><span style="color:#888">#column</span></code> methods.</p>
822
- </li>
823
- </ul></div>
824
- </div><div class="paragraph">
825
- <a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="Focus this segment" href="#Bug-fixes"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
826
- <p class="title">Bug fixes</p>
827
- <div class="content"><ul>
828
- <li>
829
- <p>Fix error when unzooming clients from temporary view.</p>
830
- </li>
831
-
832
- <li>
833
- <p>Fix code that launches temporary terminals in <a class="xref" href="#Tutorial" title="Section 3.3">Tutorial</a>.</p>
834
-
835
- <p>Use the <tt>/bin/sh</tt> version of the <strong>read</strong> command for portability.</p>
836
- </li>
837
- </ul></div>
838
- </div><div class="paragraph">
839
- <a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="Focus this segment" href="#Housekeeping"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-2.1.0-2009-05-09"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
840
- <p class="title">Housekeeping</p>
841
- <div class="content"><ul>
842
- <li>
843
- <p>Use <code class="line"><span style="color:#036;font-weight:bold">Client</span><span style="color:#888">#send</span></code> instead of <code class="line"><span style="color:#888">#swap</span></code> in automated arrangements because it causes less traffic on /event/.</p>
844
- </li>
845
-
846
- <li>
847
- <p>Add old release notes from blog to user manual.</p>
848
- </li>
849
- </ul></div>
850
- </div><p> </p></div>
851
- </div><div class="section">
852
- <a name="Version-2.1.0-2009-05-09"/><div class="nav" id="Version-2.1.0-2009-05-09"><a title="Focus this segment" href="#Version-2.1.0-2009-05-09"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Thank-you"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-2.1.0-2009-05-09"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
853
- <h2 class="title">
854
- 4.2&nbsp;&nbsp;Version 2.1.0 (2009-05-09)
855
- </h2>
856
- <div class="content"><p>This release improves client arrangement, fixes several bugs, and cleans up the code.</p>
857
-
858
- <div class="paragraph">
859
- <a name="Thank-you"/><div class="nav" id="Thank-you"><a title="Focus this segment" href="#Thank-you"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-2.1.0-2009-05-09"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features-612007698"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Thank-you"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
860
- <p class="title">Thank you</p>
861
- <div class="content"><ul>
862
- <li>Simon Hafner reported several bugs.</li>
863
-
864
- <li>Michael Andrus verified bug fixes.</li>
865
- </ul></div>
866
- </div><div class="paragraph">
867
- <a name="New-features-612007698"/><div class="nav" id="New-features-612007698"><a title="Focus this segment" href="#New-features-612007698"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Thank-you"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-612014748"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features-612007698"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
868
- <p class="title">New features</p>
869
- <div class="content"><ul>
870
- <li>
871
- <p>Focus is now restored on the initially focused client after applying <a class="xref" href="#Automated-client-arrangement" title="Section 3.3.1">Automated client arrangement</a>s.</p>
872
- </li>
873
-
874
- <li>
875
- <p>The push(), insert(), and unshift() instance methods of the <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">Area</span></code> class now preserve the order of inserted clients.</p>
876
- </li>
877
-
878
- <li>
879
- <p>The <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">View</span><span style="color:#888">#arrange_in_grid()</span></code> method now accepts 1 as a parameter. This invocation causes every column to contain at most 1 client.</p>
880
- </li>
881
- </ul></div>
882
- </div><div class="paragraph">
883
- <a name="Bug-fixes-612014748"/><div class="nav" id="Bug-fixes-612014748"><a title="Focus this segment" href="#Bug-fixes-612014748"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features-612007698"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping-612018528"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-612014748"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
884
- <p class="title">Bug fixes</p>
885
- <div class="content"><ul>
886
- <li>
887
- <p>Fix error caused by focusing the top/bottom client in the destination area before sending new clients into that area.</p>
888
- </li>
889
-
890
- <li>
891
- <p>Fix error when importing clients into an empty area.</p>
892
- </li>
893
- </ul></div>
894
- </div><div class="paragraph">
895
- <a name="Housekeeping-612018528"/><div class="nav" id="Housekeeping-612018528"><a title="Focus this segment" href="#Housekeeping-612018528"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-612014748"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-2.0.2-2009-02-26"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping-612018528"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
896
- <p class="title">Housekeeping</p>
897
- <div class="content"><ul>
898
- <li>
899
- <p>Use snake_case instead of camelCase for variable names.</p>
900
- </li>
901
-
902
- <li>
903
- <p>Add copyright notice at the top of every file.</p>
904
- </li>
905
-
906
- <li>
907
- <p>Plenty of code formatting and beautification.</p>
908
- </li>
909
- </ul></div>
910
- </div><p> </p></div>
911
- </div><div class="section">
912
- <a name="Version-2.0.2-2009-02-26"/><div class="nav" id="Version-2.0.2-2009-02-26"><a title="Focus this segment" href="#Version-2.0.2-2009-02-26"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping-612018528"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Thank-you-611677758"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-2.0.2-2009-02-26"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
913
- <h2 class="title">
914
- 4.3&nbsp;&nbsp;Version 2.0.2 (2009-02-26)
915
- </h2>
916
- <div class="content"><p>This release fixes a connection bug.</p>
917
-
918
- <div class="paragraph">
919
- <a name="Thank-you-611677758"/><div class="nav" id="Thank-you-611677758"><a title="Focus this segment" href="#Thank-you-611677758"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-2.0.2-2009-02-26"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-611682128"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Thank-you-611677758"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
920
- <p class="title">Thank you</p>
921
- <div class="content"><ul>
922
- <li>Simon Hafner reported and helped debug the <code class="line"><span style="color:#d70;font-weight:bold">$DISPLAY</span></code> bug.</li>
923
- </ul></div>
924
- </div><div class="paragraph">
925
- <a name="Bug-fixes-611682128"/><div class="nav" id="Bug-fixes-611682128"><a title="Focus this segment" href="#Bug-fixes-611682128"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Thank-you-611677758"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-2.0.1-2009-01-25"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-611682128"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
926
- <p class="title">Bug fixes</p>
927
- <div class="content"><ul>
928
- <li>wmii omits the fractional portion of <code class="line"><span style="color:#d70;font-weight:bold">$DISPLAY</span></code> in its socket file path. Rumai was trying to connect with the entire <code class="line"><span style="color:#d70;font-weight:bold">$DISPLAY</span></code> value (including the fractional portion) and thus could not find wmii&#8217;s socket file.</li>
929
- </ul></div>
930
- </div><p> </p></div>
931
- </div><div class="section">
932
- <a name="Version-2.0.1-2009-01-25"/><div class="nav" id="Version-2.0.1-2009-01-25"><a title="Focus this segment" href="#Version-2.0.1-2009-01-25"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-611682128"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-611692458"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-2.0.1-2009-01-25"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
933
- <h2 class="title">
934
- 4.4&nbsp;&nbsp;Version 2.0.1 (2009-01-25)
935
- </h2>
936
- <div class="content"><p>This release simplifies project administrivia using <a href='http://snk.tuxfamily.org/lib/inochi'>Inochi</a>, improves the unit tests, and revises the user manual.</p>
937
-
938
- <div class="paragraph">
939
- <a name="Bug-fixes-611692458"/><div class="nav" id="Bug-fixes-611692458"><a title="Focus this segment" href="#Bug-fixes-611692458"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-2.0.1-2009-01-25"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping-611696068"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-611692458"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
940
- <p class="title">Bug fixes</p>
941
- <div class="content"><ul>
942
- <li>The <tt>lib/rumai/ixp/message.rb</tt> library&#8217;s unit test would fail if <tt>/rbar/status</tt> did not already exist in wmii.</li>
943
- </ul></div>
944
- </div><div class="paragraph">
945
- <a name="Housekeeping-611696068"/><div class="nav" id="Housekeeping-611696068"><a title="Focus this segment" href="#Housekeeping-611696068"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-611692458"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-2.0.0-2008-02-04"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping-611696068"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
946
- <p class="title">Housekeeping</p>
947
- <div class="content"><ul>
948
- <li>
949
- <p>Store IXP socket address in <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP_SOCK_ADDR</span></code>.</p>
950
- </li>
951
-
952
- <li>
953
- <p>Added missing test cases for (TR)create and (TR)remove messages in the unit test for the <tt>lib/rumai/ixp/message.rb</tt> library.</p>
954
- </li>
955
- </ul></div>
956
- </div><p> </p></div>
957
- </div><div class="section">
958
- <a name="Version-2.0.0-2008-02-04"/><div class="nav" id="Version-2.0.0-2008-02-04"><a title="Focus this segment" href="#Version-2.0.0-2008-02-04"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping-611696068"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Thank-you-611714488"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-2.0.0-2008-02-04"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
959
- <h2 class="title">
960
- 4.5&nbsp;&nbsp;Version 2.0.0 (2008-02-04)
961
- </h2>
962
- <div class="content"><p>This release adds support for wmii 3.6, improves the performance of the IXP library, and fixes some bugs.</p>
963
-
964
- <div class="paragraph">
965
- <a name="Thank-you-611714488"/><div class="nav" id="Thank-you-611714488"><a title="Focus this segment" href="#Thank-you-611714488"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-2.0.0-2008-02-04"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Incompatible-changes-611720848"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Thank-you-611714488"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
966
- <p class="title">Thank you</p>
967
- <div class="content"><ul>
968
- <li>Christoph Blank tested Rumai 1.0.0 under wmii 3.6 and reported bugs.</li>
969
- </ul></div>
970
- </div><div class="paragraph">
971
- <a name="Incompatible-changes-611720848"/><div class="nav" id="Incompatible-changes-611720848"><a title="Focus this segment" href="#Incompatible-changes-611720848"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Thank-you-611714488"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features-611728378"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Incompatible-changes-611720848"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
972
- <p class="title">Incompatible changes</p>
973
- <div class="content"><ul>
974
- <li>
975
- <p>wmii version 3.6 or newer is now required.</p>
976
- </li>
977
-
978
- <li>
979
- <p>The <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP</span>::<span style="color:#036;font-weight:bold">Agent</span>::<span style="color:#036;font-weight:bold">FidStream</span><span style="color:#888">#read_partial</span></code> method has been replaced by <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP</span>::<span style="color:#036;font-weight:bold">Agent</span>::<span style="color:#036;font-weight:bold">FidStream</span><span style="color:#888">#read(true)</span></code> for efficiency.</p>
980
-
981
- <ul>
982
- <li>
983
- <p>The <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP</span>::<span style="color:#036;font-weight:bold">Agent</span>::<span style="color:#036;font-weight:bold">FidStream</span><span style="color:#888">#write</span></code> method no longer writes to the beginning of the stream. Instead, it writes to the current position in the stream.</p>
984
- </li>
985
-
986
- <li>
987
- <p>The <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">View</span><span style="color:#888">#floating_area</span></code> method has been renamed to <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">View</span><span style="color:#888">#floater</span></code> for brevity.</p>
988
- </li>
989
- </ul>
990
- </li>
991
- </ul></div>
992
- </div><div class="paragraph">
993
- <a name="New-features-611728378"/><div class="nav" id="New-features-611728378"><a title="Focus this segment" href="#New-features-611728378"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Incompatible-changes-611720848"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-611732428"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features-611728378"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
994
- <p class="title">New features</p>
995
- <div class="content"><ul>
996
- <li>
997
- <p>Added several more methods (such as rewind, pos=, eof?, and so on) from Ruby&#8217;s IO class to the <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP</span>::<span style="color:#036;font-weight:bold">Agent</span>::<span style="color:#036;font-weight:bold">FidStream</span></code> class.</p>
998
- </li>
999
-
1000
- <li>
1001
- <p>Added the <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">Client</span><span style="color:#888">#kill</span></code> method to simplify client termination.</p>
1002
- </li>
1003
- </ul></div>
1004
- </div><div class="paragraph">
1005
- <a name="Bug-fixes-611732428"/><div class="nav" id="Bug-fixes-611732428"><a title="Focus this segment" href="#Bug-fixes-611732428"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features-611728378"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-1.0.0-2008-01-26"><img class="icon" alt="&darr;" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-611732428"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
1006
- <p class="title">Bug fixes</p>
1007
- <div class="content"><ul>
1008
- <li>Fixed a race condition in <code class="line"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">Agent</span><span style="color:#888">#talk</span></code> which would cause Rumai to hang when multiple threads used it.</li>
1009
- </ul></div>
1010
- </div><p> </p></div>
1011
- </div><div class="section">
1012
- <a name="Version-1.0.0-2008-01-26"/><div class="nav" id="Version-1.0.0-2008-01-26"><a title="Focus this segment" href="#Version-1.0.0-2008-01-26"><img class="icon" alt="&lowast;" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-611732428"><img class="icon" alt="&uarr;" src="&icon_nav_prev;"/></a> <a title="Return to listing" href="#rev:Version-1.0.0-2008-01-26"><img class="icon" alt="&equiv;" src="&icon_nav_list;"/></a></div>
1013
- <h2 class="title">
1014
- 4.6&nbsp;&nbsp;Version 1.0.0 (2008-01-26)
1015
- </h2>
1016
- <div class="content"><p>This is the first release of Rumai, the evolution of <a href='http://article.gmane.org/gmane.comp.window-managers.wmii/1704'>wmii-irb</a>, which lets you manipulate the <a href='http://wmii.suckless.org'>wmii</a> window manager through <a href='http://ruby-lang.org'>Ruby</a>.</p>
1017
-
1018
- <p>Happy birthday!</p></div>
1019
- </div><p></p><p></p></div>
1020
- </div>
1021
- </div>
1022
-
1023
-
1024
- <br style="display: none"/>
1025
- <hr style="display: none"/>
1026
- <br style="display: none"/>
1027
-
1028
-
1029
-
1030
-
1031
- <div id="footer">
1032
-
1033
- Generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 7.0.0</a> on Mon May 11 21:23:13 -0700 2009.
1034
-
1035
- <div id="footer-credits">
1036
- <p>
1037
- <img class="icon" alt="here_frag" src="&icon_here_frag;"/>
1038
- <img class="icon" alt="caution" src="&icon_caution;"/>
1039
- <img class="icon" alt="nav_here" src="&icon_nav_here;"/>
1040
- <img class="icon" alt="nav_prev" src="&icon_nav_prev;"/>
1041
- <img class="icon" alt="tip" src="&icon_tip;"/>
1042
- <img class="icon" alt="important" src="&icon_important;"/>
1043
- <img class="icon" alt="nav_list" src="&icon_nav_list;"/>
1044
- <img class="icon" alt="note" src="&icon_note;"/>
1045
- <img class="icon" alt="warning" src="&icon_warning;"/>
1046
- <img class="icon" alt="quote" src="&icon_quote;"/>
1047
- <img class="icon" alt="nav_next" src="&icon_nav_next;"/>
1048
-
1049
- <br/>
1050
-
1051
- The icons shown above are part of <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>, which is copyright &copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and is distributed under <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>.
1052
- </p>
1053
-
1054
- <p>
1055
- <img class="icon" alt="hyperlink" src="&icon_hyperlink;"/>
1056
-
1057
- <br/>
1058
-
1059
- The icons shown above are part of <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, which is copyright &copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a> and is distributed under <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>.
1060
- </p>
1061
-
1062
- <p style="margin-top: 3em">
1063
- <a href="http://validator.w3.org/check?uri=referer"><img
1064
- src="http://www.w3.org/Icons/valid-xhtml10-blue"
1065
- alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
1066
-
1067
- <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
1068
- src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
1069
- alt="Valid CSS!" height="31" width="88" /></a>
1070
- </p>
1071
- </div>
1072
-
1073
- </div>
1074
-
1075
-
1076
- </div>
1077
- </body>
1078
- </html>