rabbit 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +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))
|