rabbit 2.1.9 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|