rabbit 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -1
  3. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  4. data/doc/_config.yml +2 -2
  5. data/doc/_layouts/skeleton.html +0 -7
  6. data/doc/en/install/homebrew.rd +8 -13
  7. data/doc/en/news.rd +67 -0
  8. data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
  9. data/doc/images/screenshots/en/blue-circle.png +0 -0
  10. data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
  11. data/doc/images/screenshots/en/clear-blue.png +0 -0
  12. data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
  13. data/doc/images/screenshots/en/cozmixng.png +0 -0
  14. data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
  15. data/doc/images/screenshots/en/dark-gradation.png +0 -0
  16. data/doc/images/screenshots/en/day-white-raw.png +0 -0
  17. data/doc/images/screenshots/en/day-white.png +0 -0
  18. data/doc/images/screenshots/en/debian-raw.png +0 -0
  19. data/doc/images/screenshots/en/debian.png +0 -0
  20. data/doc/images/screenshots/en/green-circle-raw.png +0 -0
  21. data/doc/images/screenshots/en/green-circle.png +0 -0
  22. data/doc/images/screenshots/en/night-black-raw.png +0 -0
  23. data/doc/images/screenshots/en/night-black.png +0 -0
  24. data/doc/images/screenshots/en/rabbit-raw.png +0 -0
  25. data/doc/images/screenshots/en/rabbit.png +0 -0
  26. data/doc/images/screenshots/en/ranguba-raw.png +0 -0
  27. data/doc/images/screenshots/en/ranguba.png +0 -0
  28. data/doc/images/screenshots/en/red-frame-raw.png +0 -0
  29. data/doc/images/screenshots/en/red-frame.png +0 -0
  30. data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
  31. data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
  32. data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
  33. data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
  34. data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
  35. data/doc/images/screenshots/ja/blue-circle.png +0 -0
  36. data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
  37. data/doc/images/screenshots/ja/clear-blue.png +0 -0
  38. data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
  39. data/doc/images/screenshots/ja/cozmixng.png +0 -0
  40. data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
  41. data/doc/images/screenshots/ja/dark-gradation.png +0 -0
  42. data/doc/images/screenshots/ja/day-white-raw.png +0 -0
  43. data/doc/images/screenshots/ja/day-white.png +0 -0
  44. data/doc/images/screenshots/ja/debian-raw.png +0 -0
  45. data/doc/images/screenshots/ja/debian.png +0 -0
  46. data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
  47. data/doc/images/screenshots/ja/green-circle.png +0 -0
  48. data/doc/images/screenshots/ja/night-black-raw.png +0 -0
  49. data/doc/images/screenshots/ja/night-black.png +0 -0
  50. data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
  51. data/doc/images/screenshots/ja/rabbit.png +0 -0
  52. data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
  53. data/doc/images/screenshots/ja/ranguba.png +0 -0
  54. data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
  55. data/doc/images/screenshots/ja/red-frame.png +0 -0
  56. data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
  57. data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
  58. data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
  59. data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
  60. data/doc/ja/install/homebrew.rd +8 -12
  61. data/doc/ja/news.rd +67 -0
  62. data/lib/rabbit/canvas.rb +7 -5
  63. data/lib/rabbit/element/base.rb +1 -5
  64. data/lib/rabbit/element/image.rb +70 -4
  65. data/lib/rabbit/error.rb +7 -1
  66. data/lib/rabbit/formatter.rb +1 -1
  67. data/lib/rabbit/gem-pusher.rb +2 -1
  68. data/lib/rabbit/image/base.rb +67 -3
  69. data/lib/rabbit/image/dia.rb +7 -15
  70. data/lib/rabbit/image/mermaid.rb +73 -0
  71. data/lib/rabbit/image/pdf.rb +21 -5
  72. data/lib/rabbit/image.rb +3 -2
  73. data/lib/rabbit/parser/base.rb +2 -1
  74. data/lib/rabbit/parser/ext/blockdiag.rb +16 -14
  75. data/lib/rabbit/parser/ext/image.rb +36 -9
  76. data/lib/rabbit/parser/markdown/converter.rb +36 -30
  77. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +23 -33
  78. data/lib/rabbit/parser/rd/ext/image.rb +23 -4
  79. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +3 -1
  80. data/lib/rabbit/parser/rd.rb +1 -1
  81. data/lib/rabbit/parser/wiki/output.rb +9 -9
  82. data/lib/rabbit/parser.rb +2 -2
  83. data/lib/rabbit/properties.rb +14 -1
  84. data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -1
  85. data/lib/rabbit/slide-configuration.rb +4 -0
  86. data/lib/rabbit/task/slide.rb +4 -31
  87. data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +38 -0
  88. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  89. data/lib/rabbit/theme/image/image.rb +3 -0
  90. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +7 -2
  91. data/lib/rabbit/theme/image-timer/image-timer.rb +8 -3
  92. data/lib/rabbit/theme/pdf/pdf.rb +1 -1
  93. data/lib/rabbit/utils.rb +25 -2
  94. data/lib/rabbit/version.rb +2 -2
  95. data/po/en/rabbit.edit.po +50 -66
  96. data/po/en/rabbit.po +12 -24
  97. data/po/fr/rabbit.edit.po +50 -66
  98. data/po/fr/rabbit.po +12 -24
  99. data/po/ja/rabbit.edit.po +82 -94
  100. data/po/ja/rabbit.po +18 -30
  101. data/rabbit.gemspec +0 -1
  102. data/sample/rabbit-en.md +13 -0
  103. data/sample/rabbit-en.rd +10 -0
  104. data/sample/rabbit.md +21 -0
  105. data/sample/rabbit.rd +20 -0
  106. data/test/command/test-rabbit.rb +1 -0
  107. data/test/parser/test-markdown.rb +2 -2
  108. data/test/test-slide-configuration.rb +2 -1
  109. metadata +7 -26
  110. data/doc/css/jquery-ui/themes/ui-lightness.css +0 -573
  111. data/doc/javascripts/jquery-ui.js +0 -11544
  112. data/doc/javascripts/jquery.js +0 -7179
  113. data/lib/rabbit/slideshare.rb +0 -192
  114. data/test/test-slideshare.rb +0 -34
@@ -1,192 +0,0 @@
1
- # Copyright (C) 2012-2016 Kouhei Sutou <kou@cozmixng.org>
2
- #
3
- # This program is free software; you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation; either version 2 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
-
17
- require "uri"
18
- require "digest/sha1"
19
-
20
- require "nokogiri"
21
- require "faraday"
22
-
23
- require "rabbit/gettext"
24
- require "rabbit/command/rabbit"
25
- require "rabbit/password-reader"
26
-
27
- module Rabbit
28
- module Task
29
- class SlideShare
30
- class Error < StandardError
31
- end
32
-
33
- include GetText
34
-
35
- BASE_URL = "https://www.slideshare.net"
36
- API_PATH_PREFIX = "/api/2"
37
- API_KEY = "NB1B0IzS"
38
- SHARED_SECRET = "iuTFlPzU"
39
-
40
- attr_accessor :user, :pdf_path, :id, :title, :description, :tags
41
- def initialize(logger)
42
- @logger = logger
43
- @user = nil
44
- @pdf_path = nil
45
- @id = nil
46
- @title = nil
47
- @description = nil
48
- @tags = []
49
- @connection = Faraday.new(:url => BASE_URL) do |builder|
50
- builder.request :multipart
51
- builder.request :url_encoded
52
- builder.response :logger, @logger
53
- builder.adapter :net_http
54
- end
55
- end
56
-
57
- def upload
58
- slideshow_id = nil
59
- begin
60
- slideshow_id = upload_slide
61
- rescue Error
62
- @logger.error(_("Feailed to upload: %s") % $!.message)
63
- return nil
64
- end
65
-
66
- begin
67
- edit_title(slideshow_id)
68
- rescue Error
69
- @logger.error(_("Feailed to edit title: %s") % $!.message)
70
- return nil
71
- end
72
-
73
- url = nil
74
- begin
75
- url = slide_url(slideshow_id)
76
- rescue Error
77
- @logger.error(_("Feailed to get slide URL: %s") % $!.message)
78
- return nil
79
- end
80
- url
81
- end
82
-
83
- private
84
- def upload_slide
85
- payload = {
86
- :username => @user,
87
- :password => password,
88
- :slideshow_title => upload_title,
89
- :slideshow_srcfile => Faraday::UploadIO.new(@pdf_path,
90
- "application/pdf"),
91
- :slideshow_description => @description,
92
- :slideshow_tags => @tags.join(","),
93
- }
94
- response = post("upload_slideshow", payload)
95
- parse_upload_slideshow_response(response)
96
- end
97
-
98
- def edit_title(slideshow_id)
99
- payload = {
100
- :username => @user,
101
- :password => password,
102
- :slideshow_id => slideshow_id,
103
- :slideshow_title => @title,
104
- }
105
- response = get("edit_slideshow", payload)
106
- parse_edit_slideshow_response(response)
107
- end
108
-
109
- def slide_url(slideshow_id)
110
- payload = {
111
- :slideshow_id => slideshow_id,
112
- }
113
- response = get("get_slideshow", payload)
114
- parse_get_slideshow_response(response)
115
- end
116
-
117
- def prepare_payload(payload)
118
- payload = common_payload.merge(payload)
119
- payload.keys.each do |key|
120
- payload.delete(key) if payload[key].nil?
121
- end
122
- payload
123
- end
124
-
125
- def get(command, payload)
126
- @connection.get(api_url(command), prepare_payload(payload))
127
- end
128
-
129
- def post(command, payload)
130
- @connection.post(api_url(command), prepare_payload(payload))
131
- end
132
-
133
- def api_url(command)
134
- "#{API_PATH_PREFIX}/#{command}"
135
- end
136
-
137
- def upload_title
138
- @id.gsub(/-/, " ")
139
- end
140
-
141
- def password
142
- @password ||= read_password
143
- end
144
-
145
- def read_password
146
- prompt = _("Enter password on SlideShare [%{user}]: ") % {:user => @user}
147
- reader = PasswordReader.new(prompt)
148
- reader.read
149
- end
150
-
151
- def common_payload
152
- timestamp = Time.now.to_i.to_s
153
- {
154
- :api_key => API_KEY,
155
- :ts => timestamp,
156
- :hash => Digest::SHA1.hexdigest("#{SHARED_SECRET}#{timestamp}"),
157
- }
158
- end
159
-
160
- def parse_response(http_response)
161
- @logger.debug(http_response.body)
162
-
163
- unless http_response.success?
164
- raise Error, "#{http_response.status}\n#{http_response.body}"
165
- end
166
-
167
- response = Nokogiri::XML(http_response.body)
168
- if response.root.name == "SlideShareServiceError"
169
- message = response.root.elements[0]
170
- raise Error, message
171
- end
172
-
173
- response
174
- end
175
-
176
- def parse_upload_slideshow_response(http_response)
177
- response = parse_response(http_response)
178
- response.xpath("/SlideShowUploaded/SlideShowID").text.to_i
179
- end
180
-
181
- def parse_edit_slideshow_response(http_response)
182
- response = parse_response(http_response)
183
- response.xpath("/SlideShowEdited/SlideShowID").text.to_i
184
- end
185
-
186
- def parse_get_slideshow_response(http_response)
187
- response = parse_response(http_response)
188
- response.xpath("/Slideshow/URL").text
189
- end
190
- end
191
- end
192
- end
@@ -1,34 +0,0 @@
1
- # Copyright (C) 2013 Kouhei Sutou <kou@cozmixng.org>
2
- #
3
- # This program is free software; you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation; either version 2 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
-
17
- require "rabbit/slideshare"
18
- require "rabbit/logger"
19
-
20
- class TestSlideShare < Test::Unit::TestCase
21
- def setup
22
- logger = Rabbit::Logger::STDERR.new
23
- @slideshare = Rabbit::Task::SlideShare.new(logger)
24
- end
25
-
26
- def test_upload
27
- slideshow_id = 12345678
28
- url = "rabbit_id-#{slideshow_id}"
29
- mock(@slideshare).upload_slide {slideshow_id}
30
- mock(@slideshare).edit_title(slideshow_id)
31
- mock(@slideshare).slide_url(slideshow_id) {url}
32
- assert_equal(url, @slideshare.upload)
33
- end
34
- end