rabbit 1.0.8 → 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -19
- data/Rakefile +7 -31
- data/doc/_layouts/en.html +1 -1
- data/doc/_layouts/ja.html +1 -1
- data/doc/en/news.rd +31 -0
- data/doc/index.html.en +1 -1
- data/doc/index.html.ja +1 -1
- data/doc/ja/news.rd +31 -0
- data/lib/rabbit/middleware/controller.rb +1 -5
- data/lib/rabbit/parser/rd/ext/character-reference.rb +59 -0
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +2 -2
- data/lib/rabbit/parser/rd.rb +1 -1
- data/lib/rabbit/parser/wiki/output.rb +4 -0
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/twitter.rb +43 -56
- data/misc/emacs/rabbit-mode.el +3 -4
- data/po/en/rabbit.po~ +2567 -0
- data/po/fr/rabbit.po~ +2674 -0
- data/po/ja/rabbit.po~ +2695 -0
- data/test/run-test.rb +2 -1
- metadata +737 -822
- data/TODO +0 -25
- data/doc/_site/css/jquery-ui/themes/ui-lightness.css +0 -573
- data/doc/_site/css/rabbit.css +0 -288
- data/doc/_site/en/development.html +0 -140
- data/doc/_site/en/faq.html +0 -117
- data/doc/_site/en/hiki.html +0 -420
- data/doc/_site/en/how-to-make/hiki.html +0 -113
- data/doc/_site/en/how-to-make/index.html +0 -136
- data/doc/_site/en/how-to-make/markdown.html +0 -156
- data/doc/_site/en/how-to-make/pdf.html +0 -111
- data/doc/_site/en/how-to-make/rd.html +0 -151
- data/doc/_site/en/how-to-make/theme.html +0 -249
- data/doc/_site/en/index.html +0 -357
- data/doc/_site/en/install/homebrew.html +0 -273
- data/doc/_site/en/install/index.html +0 -146
- data/doc/_site/en/install/macports.html +0 -158
- data/doc/_site/en/install/windows.html +0 -200
- data/doc/_site/en/news.html +0 -1253
- data/doc/_site/en/rd.html +0 -555
- data/doc/_site/en/sample/hiki/rabbit.html +0 -556
- data/doc/_site/en/sample/index.html +0 -121
- data/doc/_site/en/sample/markdown/rabbit.html +0 -490
- data/doc/_site/en/sample/rd/rabbit.html +0 -572
- data/doc/_site/en/slides.html +0 -113
- data/doc/_site/en/usage.html +0 -445
- data/doc/_site/en/users.html +0 -129
- data/doc/_site/favicon.ico +0 -0
- data/doc/_site/favicon.png +0 -0
- data/doc/_site/images/background-sample.svg +0 -290
- data/doc/_site/images/background.png +0 -0
- data/doc/_site/images/background.svg +0 -131
- data/doc/_site/images/hare-and-tortoise.png +0 -0
- data/doc/_site/images/hare-and-tortoise.svg +0 -541
- data/doc/_site/images/jp.png +0 -0
- data/doc/_site/images/lavie-icon.png +0 -0
- data/doc/_site/images/lavie.png +0 -0
- data/doc/_site/images/screenshots/en/blue-circle-raw.png +0 -0
- data/doc/_site/images/screenshots/en/blue-circle.png +0 -0
- data/doc/_site/images/screenshots/en/clear-blue-raw.png +0 -0
- data/doc/_site/images/screenshots/en/clear-blue.png +0 -0
- data/doc/_site/images/screenshots/en/cozmixng-raw.png +0 -0
- data/doc/_site/images/screenshots/en/cozmixng.png +0 -0
- data/doc/_site/images/screenshots/en/dark-gradation-raw.png +0 -0
- data/doc/_site/images/screenshots/en/dark-gradation.png +0 -0
- data/doc/_site/images/screenshots/en/day-white-raw.png +0 -0
- data/doc/_site/images/screenshots/en/day-white.png +0 -0
- data/doc/_site/images/screenshots/en/debian-raw.png +0 -0
- data/doc/_site/images/screenshots/en/debian.png +0 -0
- data/doc/_site/images/screenshots/en/green-circle-raw.png +0 -0
- data/doc/_site/images/screenshots/en/green-circle.png +0 -0
- data/doc/_site/images/screenshots/en/night-black-raw.png +0 -0
- data/doc/_site/images/screenshots/en/night-black.png +0 -0
- data/doc/_site/images/screenshots/en/rabbit-raw.png +0 -0
- data/doc/_site/images/screenshots/en/rabbit.png +0 -0
- data/doc/_site/images/screenshots/en/ranguba-raw.png +0 -0
- data/doc/_site/images/screenshots/en/ranguba.png +0 -0
- data/doc/_site/images/screenshots/en/red-frame-raw.png +0 -0
- data/doc/_site/images/screenshots/en/red-frame.png +0 -0
- data/doc/_site/images/screenshots/en/ruby-gnome2-raw.png +0 -0
- data/doc/_site/images/screenshots/en/ruby-gnome2.png +0 -0
- data/doc/_site/images/screenshots/en/rubykaigi2011-raw.png +0 -0
- data/doc/_site/images/screenshots/en/rubykaigi2011.png +0 -0
- data/doc/_site/images/screenshots/ja/blue-circle-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/blue-circle.png +0 -0
- data/doc/_site/images/screenshots/ja/clear-blue-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/clear-blue.png +0 -0
- data/doc/_site/images/screenshots/ja/cozmixng-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/cozmixng.png +0 -0
- data/doc/_site/images/screenshots/ja/dark-gradation-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/dark-gradation.png +0 -0
- data/doc/_site/images/screenshots/ja/day-white-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/day-white.png +0 -0
- data/doc/_site/images/screenshots/ja/debian-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/debian.png +0 -0
- data/doc/_site/images/screenshots/ja/green-circle-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/green-circle.png +0 -0
- data/doc/_site/images/screenshots/ja/night-black-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/night-black.png +0 -0
- data/doc/_site/images/screenshots/ja/rabbit-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/rabbit.png +0 -0
- data/doc/_site/images/screenshots/ja/ranguba-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/ranguba.png +0 -0
- data/doc/_site/images/screenshots/ja/red-frame-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/red-frame.png +0 -0
- data/doc/_site/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/ruby-gnome2.png +0 -0
- data/doc/_site/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
- data/doc/_site/images/screenshots/ja/rubykaigi2011.png +0 -0
- data/doc/_site/images/us.png +0 -0
- data/doc/_site/index.html.en +0 -132
- data/doc/_site/index.html.ja +0 -132
- data/doc/_site/ja/about.html +0 -120
- data/doc/_site/ja/development.html +0 -141
- data/doc/_site/ja/faq.html +0 -243
- data/doc/_site/ja/hiki.html +0 -416
- data/doc/_site/ja/how-to-make/hiki.html +0 -113
- data/doc/_site/ja/how-to-make/index.html +0 -136
- data/doc/_site/ja/how-to-make/markdown.html +0 -161
- data/doc/_site/ja/how-to-make/pdf.html +0 -112
- data/doc/_site/ja/how-to-make/rd.html +0 -161
- data/doc/_site/ja/how-to-make/theme.html +0 -254
- data/doc/_site/ja/index.html +0 -364
- data/doc/_site/ja/install/homebrew.html +0 -273
- data/doc/_site/ja/install/index.html +0 -148
- data/doc/_site/ja/install/macports.html +0 -174
- data/doc/_site/ja/install/windows.html +0 -200
- data/doc/_site/ja/news.html +0 -1243
- data/doc/_site/ja/rd.html +0 -565
- data/doc/_site/ja/sample/hiki/rabbit.html +0 -566
- data/doc/_site/ja/sample/index.html +0 -121
- data/doc/_site/ja/sample/markdown/rabbit.html +0 -485
- data/doc/_site/ja/sample/rd/rabbit.html +0 -580
- data/doc/_site/ja/slides.html +0 -142
- data/doc/_site/ja/usage.html +0 -449
- data/doc/_site/ja/users.html +0 -332
- data/doc/_site/javascripts/jquery-ui.js +0 -11544
- data/doc/_site/javascripts/jquery.js +0 -7179
- data/doc/_site/screenshot.en.rab +0 -10
- data/doc/_site/screenshot.ja.rab +0 -10
- data/lib/rabbit/parser/rd/ext/entity.rb +0 -38
data/Gemfile
CHANGED
@@ -2,22 +2,4 @@
|
|
2
2
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
|
-
|
6
|
-
gem 'rsvg2'
|
7
|
-
gem 'poppler'
|
8
|
-
gem 'hikidoc'
|
9
|
-
gem 'nokogiri'
|
10
|
-
gem "sinatra"
|
11
|
-
gem "haml"
|
12
|
-
gem "rdtool"
|
13
|
-
gem "coderay", ">= 1.0.0"
|
14
|
-
gem "kramdown"
|
15
|
-
|
16
|
-
group :development, :test do
|
17
|
-
gem 'twitter-stream'
|
18
|
-
gem 'twitter_oauth'
|
19
|
-
gem 'rake'
|
20
|
-
gem 'jeweler'
|
21
|
-
gem 'jekyll'
|
22
|
-
gem 'gettext'
|
23
|
-
end
|
5
|
+
gemspec
|
data/Rakefile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "find"
|
4
|
+
require "rubygems"
|
5
|
+
require "rubygems/package_task"
|
6
|
+
require "bundler/gem_helper"
|
7
7
|
|
8
8
|
base_dir = File.expand_path(File.dirname(__FILE__))
|
9
9
|
$LOAD_PATH.unshift(File.join(base_dir, 'lib'))
|
@@ -11,33 +11,9 @@ require 'rabbit/rabbit'
|
|
11
11
|
|
12
12
|
rsync_base_path = "rabbit@rabbit-shockers.org:public_html/"
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
spec =
|
17
|
-
Jeweler::Tasks.new do |_spec|
|
18
|
-
spec = _spec
|
19
|
-
spec.name = "rabbit"
|
20
|
-
spec.version = version.dup
|
21
|
-
spec.rubyforge_project = "rabbit"
|
22
|
-
spec.homepage = "http://rabbit-shockers.org/"
|
23
|
-
spec.authors = ["Kouhei Sutou"]
|
24
|
-
spec.email = ["kou@cozmixng.org"]
|
25
|
-
spec.summary = 'Rabbit is an RD-document-based presentation application.'
|
26
|
-
spec.description = spec.summary # FIXME
|
27
|
-
spec.license = "GPLv2+"
|
28
|
-
|
29
|
-
spec.files = FileList["{lib,data,entities,bin,sample,misc,doc,po}/**/*",
|
30
|
-
"*.rb",
|
31
|
-
"Rakefile",
|
32
|
-
"COPYING",
|
33
|
-
"GPL",
|
34
|
-
"README",
|
35
|
-
"Gemfile"]
|
36
|
-
spec.test_files = FileList["test/**/*.rb"]
|
37
|
-
end
|
38
|
-
|
39
|
-
Rake::Task["release"].prerequisites.clear
|
40
|
-
Jeweler::RubygemsDotOrgTasks.new
|
14
|
+
helper = Bundler::GemHelper.new(base_dir)
|
15
|
+
helper.install
|
16
|
+
spec = helper.gemspec
|
41
17
|
|
42
18
|
def force_array(enumerable)
|
43
19
|
array = []
|
data/doc/_layouts/en.html
CHANGED
@@ -22,7 +22,7 @@ country: US
|
|
22
22
|
{{ content }}
|
23
23
|
<nav id="sidebar">
|
24
24
|
<h3>The Latest Release</h3>
|
25
|
-
<p><a href="en/news.html">1.0.
|
25
|
+
<p><a href="en/news.html">1.0.8</a> is the latest release. It had been released at 2012-06-17.</p>
|
26
26
|
<h3>Links</h3>
|
27
27
|
<ul>
|
28
28
|
<li><a href="/en/">README</a></li>
|
data/doc/_layouts/ja.html
CHANGED
@@ -22,7 +22,7 @@ country: JP
|
|
22
22
|
{{ content }}
|
23
23
|
<nav id="sidebar">
|
24
24
|
<h3>最新リリース</h3>
|
25
|
-
<p>2012-
|
25
|
+
<p>2012-06-17にリリースされた<a href="/ja/news.html">1.0.8</a>が最新リリースです。</p>
|
26
26
|
<h3>リンク</h3>
|
27
27
|
<ul>
|
28
28
|
<li><a href="/ja/">はじめに</a></li>
|
data/doc/en/news.rd
CHANGED
@@ -3,6 +3,37 @@ layout: en
|
|
3
3
|
title: News
|
4
4
|
apply_data: false
|
5
5
|
---
|
6
|
+
== 1.0.9: 2012-07-21
|
7
|
+
|
8
|
+
A bug fix release of 1.0.8.
|
9
|
+
|
10
|
+
=== Improvements
|
11
|
+
|
12
|
+
==== rabbit-mode.el
|
13
|
+
|
14
|
+
* Changed prefix for insert commands to ((%C-cC-i%)).
|
15
|
+
|
16
|
+
==== rabbit
|
17
|
+
|
18
|
+
* Supported numeric character reference in RD and Hiki:
|
19
|
+
|
20
|
+
RD:
|
21
|
+
(('𝄞')) in hex
|
22
|
+
(('𝄞')) in decimal
|
23
|
+
|
24
|
+
Hiki:
|
25
|
+
{{code_point(0x1d11e)}} in hex
|
26
|
+
{{code_point(119070)}} in decimal
|
27
|
+
|
28
|
+
==== rabbirack
|
29
|
+
|
30
|
+
* Removed needless encoding change.
|
31
|
+
|
32
|
+
==== rabbiter
|
33
|
+
|
34
|
+
* Supported twitter-stream 0.1.16. Earlier versions aren't supported.
|
35
|
+
* Re-implemented connection related codes by Ruby/GIO2.
|
36
|
+
|
6
37
|
== 1.0.8: 2012-06-17
|
7
38
|
|
8
39
|
A bug fix release of 1.0.7.
|
data/doc/index.html.en
CHANGED
@@ -5,7 +5,7 @@ lang_suffix: true
|
|
5
5
|
no_sidebar: true
|
6
6
|
---
|
7
7
|
<div class="latest-release">
|
8
|
-
<p><a href="/en/news.html">1.0.
|
8
|
+
<p><a href="/en/news.html">1.0.8</a> is the latest release. It had been released at 2012-06-17.</p>
|
9
9
|
</div>
|
10
10
|
|
11
11
|
<section class="screenshots">
|
data/doc/index.html.ja
CHANGED
data/doc/ja/news.rd
CHANGED
@@ -3,6 +3,37 @@ layout: ja
|
|
3
3
|
title: お知らせ
|
4
4
|
apply_data: false
|
5
5
|
---
|
6
|
+
== 1.0.9: 2012-07-21
|
7
|
+
|
8
|
+
1.0.8のバグフィックスリリース
|
9
|
+
|
10
|
+
=== 改良
|
11
|
+
|
12
|
+
==== rabbit-mode.el
|
13
|
+
|
14
|
+
* 挿入系のコマンドはprefixとして((%C-cC-i%))を使うように変更。
|
15
|
+
|
16
|
+
==== rabbit
|
17
|
+
|
18
|
+
* RDとHikiで数値文字参照をサポート:
|
19
|
+
|
20
|
+
RD:
|
21
|
+
(('𝄞')) (8進数)
|
22
|
+
(('𝄞')) (16進数)
|
23
|
+
|
24
|
+
Hiki:
|
25
|
+
{{code_point(0x1d11e)}} (8進数)
|
26
|
+
{{code_point(119070)}} (16進数)
|
27
|
+
|
28
|
+
==== rabbirack
|
29
|
+
|
30
|
+
* 不必要なエンコーディングの変更をやめた。
|
31
|
+
|
32
|
+
==== rabbiter
|
33
|
+
|
34
|
+
* twitter-stream 0.1.16対応。それ以前のバージョンはサポート対象外。
|
35
|
+
* Ruby/GIO2を使って通信するようにした。
|
36
|
+
|
6
37
|
== 1.0.8: 2012-06-17
|
7
38
|
|
8
39
|
1.0.7のバグフィックスリリース
|
@@ -56,11 +56,7 @@ module Rabbit
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def slide_title
|
59
|
-
|
60
|
-
if current_slide_title.respond_to?(:force_encoding)
|
61
|
-
current_slide_title.force_encoding("ASCII-8BIT")
|
62
|
-
end
|
63
|
-
current_slide_title
|
59
|
+
@rabbit.slide_title
|
64
60
|
end
|
65
61
|
end
|
66
62
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'rabbit/element'
|
2
|
+
require 'rabbit/parser/ext/entity'
|
3
|
+
|
4
|
+
module Rabbit
|
5
|
+
module Parser
|
6
|
+
class RD
|
7
|
+
module Ext
|
8
|
+
module CharacterReference
|
9
|
+
include Element
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def included(mod)
|
13
|
+
self.instance_methods.each do |meth|
|
14
|
+
mod.method_added(meth)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
TABLE = Parser::Ext::Entity::TABLE
|
20
|
+
def ext_inline_verb_character_entity_reference(label, source, content, visitor)
|
21
|
+
label = label.to_s
|
22
|
+
return nil unless /^&([^;]+);(.*)$/ =~ label
|
23
|
+
return nil unless TABLE.include?($1)
|
24
|
+
|
25
|
+
key = $1
|
26
|
+
rest = $2
|
27
|
+
if rest.empty?
|
28
|
+
Text.new(TABLE[key])
|
29
|
+
else
|
30
|
+
rest = visitor.apply_to_Verb(::RD::Verb.new(rest))
|
31
|
+
TextContainer.new([Text.new(TABLE[key]), rest])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def ext_inline_verb_numeric_character_reference(label, source, content, visitor)
|
36
|
+
label = label.to_s
|
37
|
+
return nil unless /^&#(x?)([a-zA-Z\d]+);(.*)$/ =~ label
|
38
|
+
|
39
|
+
base = $1
|
40
|
+
unicode_code_point_string = $2
|
41
|
+
rest = $3
|
42
|
+
if base == "x"
|
43
|
+
unicode_code_point = unicode_code_point_string.to_i(16)
|
44
|
+
else
|
45
|
+
unicode_code_point = unicode_code_point_string.to_i(10)
|
46
|
+
end
|
47
|
+
character = [unicode_code_point].pack("U")
|
48
|
+
if rest.empty?
|
49
|
+
Text.new(character)
|
50
|
+
else
|
51
|
+
rest = visitor.apply_to_Verb(::RD::Verb.new(rest))
|
52
|
+
TextContainer.new([Text.new(character), rest])
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -2,7 +2,7 @@ require 'rabbit/utils'
|
|
2
2
|
require 'rabbit/parser/ext/inline'
|
3
3
|
require 'rabbit/parser/rd/ext/base'
|
4
4
|
require 'rabbit/parser/rd/ext/image'
|
5
|
-
require 'rabbit/parser/rd/ext/
|
5
|
+
require 'rabbit/parser/rd/ext/character-reference'
|
6
6
|
|
7
7
|
module Rabbit
|
8
8
|
module Parser
|
@@ -11,7 +11,7 @@ module Rabbit
|
|
11
11
|
class InlineVerbatim < Base
|
12
12
|
extend Utils
|
13
13
|
include Image
|
14
|
-
include
|
14
|
+
include CharacterReference
|
15
15
|
|
16
16
|
Inline = Parser::Ext::Inline
|
17
17
|
|
data/lib/rabbit/parser/rd.rb
CHANGED
data/lib/rabbit/rabbit.rb
CHANGED
data/lib/rabbit/twitter.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "shellwords"
|
2
|
+
require "pathname"
|
3
|
+
require "gio2"
|
3
4
|
|
4
5
|
module Rabbit
|
5
6
|
class Twitter
|
@@ -49,8 +50,6 @@ module Rabbit
|
|
49
50
|
register_listener(&block) if block_given?
|
50
51
|
setup if @oauth_parameters.nil?
|
51
52
|
return if @oauth_parameters.nil?
|
52
|
-
require 'socket'
|
53
|
-
require 'openssl'
|
54
53
|
begin
|
55
54
|
require 'twitter/json_stream'
|
56
55
|
rescue LoadError
|
@@ -62,15 +61,13 @@ module Rabbit
|
|
62
61
|
stream_options = {
|
63
62
|
:oauth => @oauth_parameters,
|
64
63
|
:user_agent => "Rabitter #{Rabbit::VERSION}",
|
65
|
-
:host => "stream.twitter.com",
|
66
|
-
:port => 443,
|
67
|
-
:path => "/1/statuses/filter.json",
|
68
64
|
:method => "POST",
|
69
|
-
:ssl => true,
|
70
65
|
:filters => filters,
|
71
66
|
}
|
72
|
-
@stream = ::Twitter::JSONStream.
|
73
|
-
@
|
67
|
+
@stream = ::Twitter::JSONStream.allocate
|
68
|
+
@stream.send(:initialize, stream_options)
|
69
|
+
@stream.send(:reset_state)
|
70
|
+
@connection = GLibConnection.new(@logger, @stream)
|
74
71
|
|
75
72
|
@stream.each_item do |item|
|
76
73
|
status = JSON.parse(item)
|
@@ -120,40 +117,32 @@ module Rabbit
|
|
120
117
|
end
|
121
118
|
|
122
119
|
class GLibConnection
|
123
|
-
def initialize(logger, handler
|
120
|
+
def initialize(logger, handler)
|
124
121
|
@logger = logger
|
125
|
-
@options = options
|
126
122
|
@handler = handler
|
127
|
-
@
|
128
|
-
@
|
129
|
-
@
|
123
|
+
@options = @handler.instance_variable_get("@options")
|
124
|
+
@client = nil
|
125
|
+
@connection = nil
|
126
|
+
@socket = nil
|
130
127
|
@source_ids = []
|
131
128
|
end
|
132
129
|
|
133
130
|
def connect
|
134
131
|
close
|
135
|
-
@
|
136
|
-
@
|
137
|
-
@
|
138
|
-
@
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
begin
|
145
|
-
@channel.flags = GLib::IOChannel::FLAG_NONBLOCK
|
146
|
-
rescue GLib::IOChannelError
|
147
|
-
@logger.warn("[twitter][read][error] " +
|
148
|
-
"failed to set non-blocking mode: " +
|
149
|
-
"#{$!.message}(#{$!.class})")
|
150
|
-
end
|
151
|
-
reader_id = @channel.add_watch(GLib::IOChannel::IN) do |io, condition|
|
132
|
+
@client = Gio::SocketClient.new
|
133
|
+
@client.tls = @options[:ssl]
|
134
|
+
@connection = @client.connect_to_host(@options[:host], @options[:port])
|
135
|
+
@socket = @connection.socket
|
136
|
+
@socket.blocking = false
|
137
|
+
@input = @connection.input_stream
|
138
|
+
@output = @connection.output_stream
|
139
|
+
|
140
|
+
reader_source = @socket.create_source(:in) do |socket, condition|
|
152
141
|
@logger.debug("[twitter][read][start]")
|
153
|
-
data = @
|
142
|
+
data = @input.read(8192) || ""
|
154
143
|
@logger.debug("[twitter][read][done] #{data.bytesize}")
|
155
144
|
if data.empty?
|
156
|
-
@source_ids.reject! {|id| id ==
|
145
|
+
@source_ids.reject! {|id| id == reader_source.id}
|
157
146
|
@logger.debug("[twitter][read][eof]")
|
158
147
|
false
|
159
148
|
else
|
@@ -161,12 +150,14 @@ module Rabbit
|
|
161
150
|
true
|
162
151
|
end
|
163
152
|
end
|
164
|
-
@source_ids <<
|
165
|
-
|
153
|
+
@source_ids << reader_source.attach
|
154
|
+
|
155
|
+
error_source = @socket.create_source(:err) do |socket, condition|
|
166
156
|
@handler.receive_error(condition)
|
167
157
|
true
|
168
158
|
end
|
169
|
-
@source_ids <<
|
159
|
+
@source_ids << error_source.attach
|
160
|
+
|
170
161
|
@handler.extend(GLibAdapter)
|
171
162
|
@handler.connection = self
|
172
163
|
@handler.connection_completed
|
@@ -174,41 +165,37 @@ module Rabbit
|
|
174
165
|
|
175
166
|
def send_data(data)
|
176
167
|
rest = data.bytesize
|
177
|
-
|
168
|
+
writer_source = @socket.create_source(:out) do |socket, condition|
|
178
169
|
if rest.zero?
|
179
170
|
@logger.debug("[twitter][flush][start]")
|
180
|
-
@
|
171
|
+
@output.flush
|
181
172
|
@logger.debug("[twitter][flush][done]")
|
182
|
-
@source_ids.reject! {|id| id ==
|
173
|
+
@source_ids.reject! {|id| id == writer_source.id}
|
183
174
|
false
|
184
175
|
else
|
185
176
|
@logger.debug("[twitter][write][start]")
|
186
|
-
written_size = @
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
data[0, written_size] = ""
|
191
|
-
else
|
192
|
-
# for Ruby/GLib2 < 0.90.9
|
193
|
-
rest = 0
|
194
|
-
data.replace("")
|
195
|
-
end
|
177
|
+
written_size = @output.write(data)
|
178
|
+
@logger.debug("[twitter][write][done] #{written_size}")
|
179
|
+
rest -= written_size
|
180
|
+
data[0, written_size] = ""
|
196
181
|
true
|
197
182
|
end
|
198
183
|
end
|
199
|
-
@source_ids <<
|
184
|
+
@source_ids << writer_source.attach
|
200
185
|
end
|
201
186
|
|
202
187
|
def close
|
203
|
-
return if @
|
188
|
+
return if @client.nil?
|
204
189
|
@source_ids.reject! do |id|
|
205
190
|
GLib::Source.remove(id)
|
206
191
|
true
|
207
192
|
end
|
208
|
-
@
|
209
|
-
@
|
210
|
-
@
|
211
|
-
@
|
193
|
+
@socket.close
|
194
|
+
@socket = nil
|
195
|
+
@input = nil
|
196
|
+
@output = nil
|
197
|
+
@connection = nil
|
198
|
+
@client = nil
|
212
199
|
end
|
213
200
|
|
214
201
|
def reconnect(options={})
|
data/misc/emacs/rabbit-mode.el
CHANGED
@@ -237,10 +237,9 @@
|
|
237
237
|
(defun rabbit-setup-keys ()
|
238
238
|
"define default key bindings."
|
239
239
|
(define-key rabbit-mode-map "\C-c\C-r" 'rabbit-run-rabbit)
|
240
|
-
(define-key rabbit-mode-map "\C-c\C-
|
241
|
-
(define-key rabbit-mode-map "\C-c\C-
|
242
|
-
(define-key rabbit-mode-map "\C-
|
243
|
-
(define-key rabbit-mode-map "\C-c\C-s" 'rabbit-insert-slide)
|
240
|
+
(define-key rabbit-mode-map "\C-c\C-it" 'rabbit-insert-title-template)
|
241
|
+
(define-key rabbit-mode-map "\C-c\C-ii" 'rabbit-insert-image-template)
|
242
|
+
(define-key rabbit-mode-map "\C-c\C-is" 'rabbit-insert-slide)
|
244
243
|
(define-key rabbit-mode-map "\C-c\C-d" 'rabbit-delete-slide)
|
245
244
|
(define-key rabbit-mode-map "\M-n" 'rabbit-next-slide)
|
246
245
|
(define-key rabbit-mode-map "\M-p" 'rabbit-previous-slide))
|