rabbit 2.1.9 → 2.2.0
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.
- checksums.yaml +4 -4
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +4 -4
- data/doc/en/faq.rd +8 -8
- data/doc/en/news.rd +105 -1
- data/doc/ja/news.rd +104 -1
- data/lib/rabbit/canvas.rb +2 -1
- data/lib/rabbit/command/rabbit.rb +6 -3
- data/lib/rabbit/element/index-slide.rb +2 -2
- data/lib/rabbit/element/text-container-element.rb +30 -1
- data/lib/rabbit/element/text-renderer.rb +12 -1
- data/lib/rabbit/element/text.rb +7 -0
- data/lib/rabbit/error.rb +4 -3
- data/lib/rabbit/frame.rb +8 -22
- data/lib/rabbit/front.rb +8 -8
- data/lib/rabbit/gem-pusher.rb +66 -0
- data/lib/rabbit/gtk.rb +4 -0
- data/lib/rabbit/image-data-loader.rb +3 -3
- data/lib/rabbit/image/dia.rb +11 -6
- data/lib/rabbit/image/eps.rb +13 -11
- data/lib/rabbit/image/gimp.rb +1 -1
- data/lib/rabbit/image/pdf.rb +6 -10
- data/lib/rabbit/image/svg.rb +5 -1
- data/lib/rabbit/parser/markdown.rb +1 -0
- data/lib/rabbit/parser/markdown/converter.rb +43 -2
- data/lib/rabbit/password-reader.rb +34 -0
- data/lib/rabbit/progress.rb +22 -10
- data/lib/rabbit/renderer.rb +1 -1
- data/lib/rabbit/renderer/base.rb +7 -7
- data/lib/rabbit/renderer/color.rb +8 -0
- data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -0
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +14 -2
- data/lib/rabbit/renderer/display/magnifier.rb +6 -4
- data/lib/rabbit/renderer/display/scroll-handler.rb +2 -2
- data/lib/rabbit/renderer/display/spotlight.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +16 -1
- data/lib/rabbit/renderer/offscreen.rb +120 -0
- data/lib/rabbit/search-window.rb +6 -6
- data/lib/rabbit/searcher.rb +4 -84
- data/lib/rabbit/slideshare.rb +7 -11
- data/lib/rabbit/source-generator/markdown.rb +4 -4
- data/lib/rabbit/task/slide.rb +4 -2
- data/lib/rabbit/task/theme.rb +6 -3
- data/lib/rabbit/theme/slide-logo/slide-logo.rb +37 -27
- data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +1 -7
- data/lib/rabbit/theme/title-on-image-toolkit/title-on-image-toolkit.rb +6 -0
- data/lib/rabbit/utils.rb +0 -5
- data/lib/rabbit/version.rb +2 -2
- data/po/en/rabbit.edit.po +151 -143
- data/po/en/rabbit.po +7 -1
- data/po/fr/rabbit.edit.po +151 -143
- data/po/fr/rabbit.po +7 -1
- data/po/ja/rabbit.edit.po +155 -147
- data/po/ja/rabbit.po +11 -5
- data/rabbit.gemspec +2 -1
- data/sample/rabbit.md +10 -0
- data/test/parser/test-markdown.rb +47 -1
- data/test/source-generator/test-markdown.rb +2 -2
- metadata +21 -9
- data/lib/rabbit/renderer/pixmap.rb +0 -1
- data/lib/rabbit/renderer/pixmap/base.rb +0 -127
- data/lib/rabbit/renderer/pixmap/cairo.rb +0 -15
- data/lib/rabbit/renderer/pixmap/gl.rb +0 -46
@@ -0,0 +1,34 @@
|
|
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
|
+
module Rabbit
|
18
|
+
class PasswordReader
|
19
|
+
def initialize(prompt)
|
20
|
+
@prompt = prompt
|
21
|
+
end
|
22
|
+
|
23
|
+
def read
|
24
|
+
print(@prompt)
|
25
|
+
system("/bin/stty -echo") if $stdin.tty?
|
26
|
+
$stdin.gets.chomp
|
27
|
+
ensure
|
28
|
+
if $stdin.tty?
|
29
|
+
system("/bin/stty echo")
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/rabbit/progress.rb
CHANGED
@@ -9,7 +9,6 @@ module Rabbit
|
|
9
9
|
@bar = Gtk::ProgressBar.new
|
10
10
|
@bar.show_text = true
|
11
11
|
@window.add(@bar)
|
12
|
-
@original_style = @bar.style
|
13
12
|
@foreground = nil
|
14
13
|
@background = nil
|
15
14
|
end
|
@@ -52,16 +51,29 @@ module Rabbit
|
|
52
51
|
|
53
52
|
private
|
54
53
|
def setup_progress_color
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
if Gtk.const_defined?(:CssProvider)
|
55
|
+
css = "progressbar {\n"
|
56
|
+
if @foreground
|
57
|
+
css << " color: #{@foreground.to_css_rgba};\n"
|
58
|
+
end
|
59
|
+
if @background
|
60
|
+
css << " background-color: #{@background.to_css_rgba};\n"
|
61
|
+
end
|
62
|
+
css << "}\n"
|
63
|
+
provider = Gtk::CssProvider.default
|
64
|
+
provider.load(:data => css)
|
65
|
+
else
|
66
|
+
style = @bar.style.copy
|
67
|
+
if @foreground
|
68
|
+
rgb = @foreground.to_gdk_rgb
|
69
|
+
style.set_bg(Gtk::STATE_PRELIGHT, *rgb)
|
70
|
+
end
|
71
|
+
if @background
|
72
|
+
rgb = @background.to_gdk_rgb
|
73
|
+
style.set_bg(Gtk::STATE_NORMAL, *rgb)
|
74
|
+
end
|
75
|
+
@bar.style = style
|
59
76
|
end
|
60
|
-
if @background
|
61
|
-
rgb = @background.to_gdk_rgb
|
62
|
-
style.set_bg(Gtk::STATE_NORMAL, *rgb)
|
63
|
-
end
|
64
|
-
@bar.style = style
|
65
77
|
end
|
66
78
|
end
|
67
79
|
end
|
data/lib/rabbit/renderer.rb
CHANGED
data/lib/rabbit/renderer/base.rb
CHANGED
@@ -114,7 +114,7 @@ module Rabbit
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def each_slide_pixbuf
|
117
|
-
canvas =
|
117
|
+
canvas = offscreen_canvas
|
118
118
|
previous_index = canvas.current_index
|
119
119
|
pre_to_pixbuf(canvas.slide_size)
|
120
120
|
canceled = false
|
@@ -129,11 +129,11 @@ module Rabbit
|
|
129
129
|
canvas.activate("Quit") if canvas != @canvas
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
133
|
-
if
|
132
|
+
def offscreen_canvas
|
133
|
+
if offscreen_renderer?
|
134
134
|
@canvas
|
135
135
|
else
|
136
|
-
|
136
|
+
make_canvas_with_offscreen_renderer
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -258,7 +258,7 @@ module Rabbit
|
|
258
258
|
end
|
259
259
|
|
260
260
|
private
|
261
|
-
def
|
261
|
+
def offscreen_renderer?
|
262
262
|
false
|
263
263
|
end
|
264
264
|
|
@@ -301,8 +301,8 @@ module Rabbit
|
|
301
301
|
end
|
302
302
|
end
|
303
303
|
|
304
|
-
def
|
305
|
-
make_canvas_with_renderer(
|
304
|
+
def make_canvas_with_offscreen_renderer
|
305
|
+
make_canvas_with_renderer(Offscreen) do |canvas|
|
306
306
|
canvas.width = @canvas.width
|
307
307
|
canvas.height = @canvas.height
|
308
308
|
setup_3d(canvas)
|
@@ -74,6 +74,14 @@ module Rabbit
|
|
74
74
|
def to_gdk_color
|
75
75
|
Gdk::Color.new(*to_gdk_rgb)
|
76
76
|
end
|
77
|
+
|
78
|
+
def to_css_rgba
|
79
|
+
red_percent = (red * 100).ceil
|
80
|
+
green_percent = (green * 100).ceil
|
81
|
+
blue_percent = (blue * 100).ceil
|
82
|
+
a = alpha || 1.0
|
83
|
+
"rgba(#{red_percent}%, #{green_percent}%, #{blue_percent}%, #{a})"
|
84
|
+
end
|
77
85
|
end
|
78
86
|
end
|
79
87
|
end
|
@@ -268,6 +268,7 @@ module Rabbit
|
|
268
268
|
event_mask |= Gdk::EventMask::BUTTON1_MOTION_MASK
|
269
269
|
event_mask |= Gdk::EventMask::BUTTON2_MOTION_MASK
|
270
270
|
event_mask |= Gdk::EventMask::BUTTON3_MOTION_MASK
|
271
|
+
event_mask |= Gdk::EventMask::SCROLL_MASK
|
271
272
|
@area.add_events(event_mask)
|
272
273
|
set_key_press_event(@area)
|
273
274
|
set_button_event(@area)
|
@@ -171,14 +171,26 @@ module Rabbit
|
|
171
171
|
end
|
172
172
|
|
173
173
|
def set_configure_event_after
|
174
|
+
prev_x = prev_y = prev_width = prev_height = nil
|
174
175
|
@area.signal_connect_after("configure_event") do |widget, event|
|
175
|
-
|
176
|
+
prev_x ||= event.x
|
177
|
+
prev_y ||= event.y
|
178
|
+
prev_width ||= event.width
|
179
|
+
prev_height ||= event.height
|
180
|
+
if [prev_x, prev_y, prev_width, prev_height] !=
|
181
|
+
[event.x, event.y, event.width, event.height]
|
182
|
+
configured_after(widget, event)
|
183
|
+
end
|
184
|
+
prev_x = event.x
|
185
|
+
prev_y = event.y
|
186
|
+
prev_width = event.width
|
187
|
+
prev_height = event.height
|
188
|
+
false
|
176
189
|
end
|
177
190
|
end
|
178
191
|
|
179
192
|
def configured_after(widget, event)
|
180
193
|
reload_theme if @drawable
|
181
|
-
false
|
182
194
|
end
|
183
195
|
|
184
196
|
def reload_theme(&callback)
|
@@ -93,15 +93,17 @@ module Rabbit
|
|
93
93
|
|
94
94
|
w = width / 1.5
|
95
95
|
h = height / 1.5
|
96
|
-
|
97
|
-
|
96
|
+
center_x = @magnifier_center_x - size.logical_margin_left
|
97
|
+
center_y = @magnifier_center_y - size.logical_margin_top
|
98
|
+
x = center_x - w / 2
|
99
|
+
y = center_y - h / 2
|
98
100
|
r = w * 0.1
|
99
101
|
save_context do
|
100
102
|
clip_block = Proc.new do
|
101
103
|
draw_rectangle(true, 0, 0, width, height, @background)
|
102
|
-
translate_context(
|
104
|
+
translate_context(center_x, center_y)
|
103
105
|
scale_context(@magnifier_ratio, @magnifier_ratio)
|
104
|
-
translate_context(
|
106
|
+
translate_context(-center_x, -center_y)
|
105
107
|
block.call
|
106
108
|
end
|
107
109
|
draw_rounded_rectangle(false, x, y, w, h, r, nil,
|
@@ -19,9 +19,9 @@ module Rabbit
|
|
19
19
|
unless handled
|
20
20
|
handled = true
|
21
21
|
case event.direction
|
22
|
-
when Gdk::
|
22
|
+
when Gdk::ScrollDirection::UP
|
23
23
|
@canvas.activate("PreviousSlide")
|
24
|
-
when Gdk::
|
24
|
+
when Gdk::ScrollDirection::DOWN
|
25
25
|
@canvas.activate("NextSlide")
|
26
26
|
else
|
27
27
|
handled = false
|
@@ -186,7 +186,12 @@ module Rabbit
|
|
186
186
|
set_source(color, params)
|
187
187
|
set_line_options(params)
|
188
188
|
@context.move_to(x, y)
|
189
|
-
|
189
|
+
if params[:stroke]
|
190
|
+
@context.pango_layout_path(layout)
|
191
|
+
apply_cairo_action(false, params)
|
192
|
+
else
|
193
|
+
@context.show_pango_layout(layout)
|
194
|
+
end
|
190
195
|
end
|
191
196
|
end
|
192
197
|
|
@@ -266,6 +271,16 @@ module Rabbit
|
|
266
271
|
end
|
267
272
|
end
|
268
273
|
|
274
|
+
def draw_link(uri)
|
275
|
+
if @context.respond_to?(:tag)
|
276
|
+
@context.tag(::Cairo::Tag::LINK, "uri='#{uri}'") do
|
277
|
+
yield
|
278
|
+
end
|
279
|
+
else
|
280
|
+
yield
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
269
284
|
def make_layout(text)
|
270
285
|
attributes, text = Pango.parse_markup(text)
|
271
286
|
layout = @context.create_pango_layout
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# Copyright (C) 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 "rabbit/image-data-loader"
|
18
|
+
require "rabbit/renderer/base"
|
19
|
+
require "rabbit/renderer/engine/cairo"
|
20
|
+
require "rabbit/utils"
|
21
|
+
|
22
|
+
module Rabbit
|
23
|
+
module Renderer
|
24
|
+
class Offscreen
|
25
|
+
include Renderer::Base
|
26
|
+
include Engine::Cairo
|
27
|
+
|
28
|
+
attr_accessor :width, :height, :pango_context
|
29
|
+
|
30
|
+
def initialize(canvas, width=nil, height=nil)
|
31
|
+
super(canvas)
|
32
|
+
@width = width
|
33
|
+
@height = height
|
34
|
+
@pango_context = nil
|
35
|
+
end
|
36
|
+
|
37
|
+
def post_apply_theme
|
38
|
+
end
|
39
|
+
|
40
|
+
def post_move(old_index, index)
|
41
|
+
end
|
42
|
+
|
43
|
+
def post_move_in_slide(old_index, index)
|
44
|
+
end
|
45
|
+
|
46
|
+
def pre_parse
|
47
|
+
end
|
48
|
+
|
49
|
+
def post_parse
|
50
|
+
end
|
51
|
+
|
52
|
+
def index_mode_on
|
53
|
+
end
|
54
|
+
|
55
|
+
def index_mode_off
|
56
|
+
end
|
57
|
+
|
58
|
+
def pre_toggle_index_mode
|
59
|
+
end
|
60
|
+
|
61
|
+
def post_toggle_index_mode
|
62
|
+
end
|
63
|
+
|
64
|
+
def make_layout(text)
|
65
|
+
attrs, text = Pango.parse_markup(text)
|
66
|
+
layout = Pango::Layout.new(create_pango_context)
|
67
|
+
layout.text = text
|
68
|
+
layout.set_attributes(attrs)
|
69
|
+
layout
|
70
|
+
end
|
71
|
+
|
72
|
+
def to_pixbuf(slide)
|
73
|
+
pixbuf = nil
|
74
|
+
::Cairo::ImageSurface.new(@width, @height) do |surface|
|
75
|
+
context = ::Cairo::Context.new(surface)
|
76
|
+
init_context(context)
|
77
|
+
slide.draw(@canvas)
|
78
|
+
png = StringIO.new
|
79
|
+
surface.write_to_png(png)
|
80
|
+
loader = ImageDataLoader.new(png.string)
|
81
|
+
pixbuf = loader.load
|
82
|
+
finish_context
|
83
|
+
end
|
84
|
+
pixbuf
|
85
|
+
end
|
86
|
+
|
87
|
+
def create_pango_context
|
88
|
+
context = Gtk::Invisible.new.create_pango_context
|
89
|
+
set_font_resolution(context)
|
90
|
+
context
|
91
|
+
end
|
92
|
+
|
93
|
+
def pre_to_pixbuf(slide_size)
|
94
|
+
end
|
95
|
+
|
96
|
+
def to_pixbufing(i)
|
97
|
+
Utils.process_pending_events
|
98
|
+
true
|
99
|
+
end
|
100
|
+
|
101
|
+
def post_to_pixbuf(canceled)
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
def init_color
|
106
|
+
super
|
107
|
+
init_engine_color
|
108
|
+
end
|
109
|
+
|
110
|
+
def offscreen_renderer?
|
111
|
+
true
|
112
|
+
end
|
113
|
+
|
114
|
+
def init_dpi
|
115
|
+
@x_dpi = ScreenInfo.screen_x_resolution
|
116
|
+
@y_dpi = ScreenInfo.screen_y_resolution
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
data/lib/rabbit/search-window.rb
CHANGED
@@ -50,7 +50,7 @@ module Rabbit
|
|
50
50
|
|
51
51
|
def init_frame
|
52
52
|
@frame = Gtk::Frame.new
|
53
|
-
@frame.shadow_type =
|
53
|
+
@frame.shadow_type = :etched_in
|
54
54
|
@frame.show
|
55
55
|
@window.add(@frame)
|
56
56
|
end
|
@@ -70,7 +70,7 @@ module Rabbit
|
|
70
70
|
|
71
71
|
def init_direction
|
72
72
|
@direction = Gtk::ToggleButton.new
|
73
|
-
@arrow = Gtk::Arrow.new(
|
73
|
+
@arrow = Gtk::Arrow.new(:left, :none)
|
74
74
|
@arrow.show
|
75
75
|
@direction.add(@arrow)
|
76
76
|
@direction.can_focus = false
|
@@ -78,18 +78,18 @@ module Rabbit
|
|
78
78
|
@box.add(@direction)
|
79
79
|
@direction.signal_connect("toggled") do |button|
|
80
80
|
if forward?
|
81
|
-
type =
|
81
|
+
type = :right
|
82
82
|
else
|
83
|
-
type =
|
83
|
+
type = :left
|
84
84
|
end
|
85
|
-
@arrow.set(type,
|
85
|
+
@arrow.set(type, :none)
|
86
86
|
end
|
87
87
|
@direction.active = true
|
88
88
|
end
|
89
89
|
|
90
90
|
def send_focus_change(focus_in)
|
91
91
|
@entry.has_focus = focus_in
|
92
|
-
event = Gdk::EventFocus.new(
|
92
|
+
event = Gdk::EventFocus.new(:focus_change)
|
93
93
|
event.window = @entry.window
|
94
94
|
event.in = focus_in
|
95
95
|
@entry.event(event)
|
data/lib/rabbit/searcher.rb
CHANGED
@@ -1,17 +1,7 @@
|
|
1
1
|
require 'rabbit/utils'
|
2
2
|
|
3
|
-
Rabbit::Converter.keep_kcode("EUC-JP") do
|
4
|
-
begin
|
5
|
-
require 'migemo'
|
6
|
-
rescue LoadError
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
3
|
module Rabbit
|
11
4
|
class Searcher
|
12
|
-
@@migemo_static_dict = nil
|
13
|
-
@@migemo_static_dict_cache = nil
|
14
|
-
|
15
5
|
def initialize(canvas)
|
16
6
|
@canvas = canvas
|
17
7
|
end
|
@@ -26,81 +16,11 @@ module Rabbit
|
|
26
16
|
|
27
17
|
private
|
28
18
|
def internal_regexp
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
/#{@text}/iu
|
34
|
-
rescue RegexpError
|
35
|
-
/#{Regexp.escape(@text)}/iu
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def migemo_regexp
|
41
|
-
text = Converter.to_eucjp_from_utf8(@text)
|
42
|
-
segments = migemo_split_text(text)
|
43
|
-
if segments.size <= 1
|
44
|
-
regexp_str = migemo_generate_regexp_str(text, false)
|
45
|
-
else
|
46
|
-
regexp_str1 = migemo_generate_regexp_str(text, true)
|
47
|
-
regexp_str2 = segments.collect do |pattern|
|
48
|
-
migemo_generate_regexp_str(pattern, true)
|
49
|
-
end.join
|
50
|
-
regexp_str = [regexp_str1, regexp_str2].join("|")
|
51
|
-
end
|
52
|
-
/#{Converter.to_utf8_from_eucjp(regexp_str)}/iu
|
53
|
-
end
|
54
|
-
|
55
|
-
def migemo_generate_regexp_str(pattern, with_paren)
|
56
|
-
Converter.keep_kcode("EUC-JP") do
|
57
|
-
migemo = Migemo.new(@@migemo_static_dict, pattern)
|
58
|
-
migemo.dict_cache = @@migemo_static_dict_cache
|
59
|
-
migemo.with_paren = with_paren
|
60
|
-
migemo.regex
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def migemo_split_text(text)
|
65
|
-
text.scan(/[A-Z]?[^A-Z]+|[A-Z]+/e)
|
66
|
-
end
|
67
|
-
|
68
|
-
def migemo_available?
|
69
|
-
defined?(::Migemo) and have_migemo_static_dict?
|
70
|
-
end
|
71
|
-
|
72
|
-
def have_migemo_static_dict?
|
73
|
-
if @@migemo_static_dict.nil?
|
74
|
-
dict, dict_cache = search_migemo_static_dict
|
75
|
-
@@migemo_static_dict, @@migemo_static_dict_cache = dict, dict_cache
|
76
|
-
end
|
77
|
-
not @@migemo_static_dict.nil?
|
78
|
-
end
|
79
|
-
|
80
|
-
def search_migemo_static_dict
|
81
|
-
@canvas.migemo_dictionary_search_path.each do |target|
|
82
|
-
if File.directory?(target)
|
83
|
-
[
|
84
|
-
File.join(target, @canvas.migemo_dictionary_name),
|
85
|
-
File.join(target, "migemo", @canvas.migemo_dictionary_name),
|
86
|
-
].each do |guess|
|
87
|
-
return make_migemo_dict(guess) if File.readable?(guess)
|
88
|
-
end
|
89
|
-
elsif File.readable?(target)
|
90
|
-
return make_migemo_dict(target)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
nil
|
94
|
-
end
|
95
|
-
|
96
|
-
def make_migemo_dict(path)
|
97
|
-
dict = MigemoStaticDict.new(path)
|
98
|
-
dict_cache = nil
|
99
|
-
dict_cache_path = "#{path}.cache"
|
100
|
-
if File.readable?(dict_cache_path)
|
101
|
-
dict_cache = MigemoDictCache.new(dict_cache_path)
|
19
|
+
begin
|
20
|
+
/#{@text}/iu
|
21
|
+
rescue RegexpError
|
22
|
+
/#{Regexp.escape(@text)}/iu
|
102
23
|
end
|
103
|
-
[dict, dict_cache]
|
104
24
|
end
|
105
25
|
end
|
106
26
|
end
|