ruby_do 0.0.2 → 0.0.3
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 -0
- data/Gemfile.lock +3 -0
- data/VERSION +1 -1
- data/bin/ruby_do.rb +9 -1
- data/glade/win_properties.glade +35 -1
- data/gui/win_main.rb +48 -18
- data/gui/win_properties.rb +18 -4
- data/include/database.rb +21 -1
- data/include/models.rb +4 -1
- data/include/plugin.rb +91 -8
- data/lib/ruby_do.rb +14 -1
- data/models/plugin.rb +4 -0
- data/models/static_result.rb +9 -0
- data/ruby_do.gemspec +6 -2
- metadata +25 -13
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -44,6 +44,8 @@ GEM
|
|
44
44
|
diff-lcs (~> 1.1.2)
|
45
45
|
rspec-mocks (2.8.0)
|
46
46
|
sqlite3 (1.3.6)
|
47
|
+
threadded_enumerator (0.0.0)
|
48
|
+
tsafe
|
47
49
|
tsafe (0.0.1)
|
48
50
|
wref (0.0.4)
|
49
51
|
|
@@ -60,3 +62,4 @@ DEPENDENCIES
|
|
60
62
|
rdoc (~> 3.12)
|
61
63
|
rspec (~> 2.8.0)
|
62
64
|
sqlite3
|
65
|
+
threadded_enumerator
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/bin/ruby_do.rb
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "rubygems"
|
4
|
-
|
4
|
+
|
5
|
+
|
6
|
+
#Enable local dev-mode.
|
7
|
+
if File.exists?("/home/kaspernj/Dev/Ruby/knjrbfw")
|
8
|
+
require "/home/kaspernj/Dev/Ruby/knjrbfw/lib/knjrbfw.rb"
|
9
|
+
else
|
10
|
+
require "knjrbfw"
|
11
|
+
end
|
12
|
+
|
5
13
|
|
6
14
|
args = {
|
7
15
|
:path => "#{Knj::Os.homedir}/.ruby_do",
|
data/glade/win_properties.glade
CHANGED
@@ -141,9 +141,10 @@
|
|
141
141
|
<property name="can_focus">False</property>
|
142
142
|
<property name="spacing">4</property>
|
143
143
|
<child>
|
144
|
-
<object class="GtkTable" id="
|
144
|
+
<object class="GtkTable" id="tablePlugin">
|
145
145
|
<property name="visible">True</property>
|
146
146
|
<property name="can_focus">False</property>
|
147
|
+
<property name="n_rows">2</property>
|
147
148
|
<property name="n_columns">2</property>
|
148
149
|
<property name="column_spacing">4</property>
|
149
150
|
<property name="row_spacing">4</property>
|
@@ -163,6 +164,39 @@
|
|
163
164
|
<property name="y_options">GTK_FILL</property>
|
164
165
|
</packing>
|
165
166
|
</child>
|
167
|
+
<child>
|
168
|
+
<object class="GtkLabel" id="label2">
|
169
|
+
<property name="visible">True</property>
|
170
|
+
<property name="can_focus">False</property>
|
171
|
+
<property name="xalign">0</property>
|
172
|
+
<property name="label" translatable="yes">Order no.</property>
|
173
|
+
</object>
|
174
|
+
<packing>
|
175
|
+
<property name="top_attach">1</property>
|
176
|
+
<property name="bottom_attach">2</property>
|
177
|
+
<property name="x_options">GTK_FILL</property>
|
178
|
+
<property name="y_options">GTK_FILL</property>
|
179
|
+
</packing>
|
180
|
+
</child>
|
181
|
+
<child>
|
182
|
+
<object class="GtkEntry" id="txtPluginOrderNo">
|
183
|
+
<property name="visible">True</property>
|
184
|
+
<property name="can_focus">True</property>
|
185
|
+
<property name="invisible_char">•</property>
|
186
|
+
<property name="primary_icon_activatable">False</property>
|
187
|
+
<property name="secondary_icon_activatable">False</property>
|
188
|
+
<property name="primary_icon_sensitive">True</property>
|
189
|
+
<property name="secondary_icon_sensitive">True</property>
|
190
|
+
<signal name="changed" handler="on_txtPluginOrderNo_changed" swapped="no"/>
|
191
|
+
</object>
|
192
|
+
<packing>
|
193
|
+
<property name="left_attach">1</property>
|
194
|
+
<property name="right_attach">2</property>
|
195
|
+
<property name="top_attach">1</property>
|
196
|
+
<property name="bottom_attach">2</property>
|
197
|
+
<property name="y_options">GTK_FILL</property>
|
198
|
+
</packing>
|
199
|
+
</child>
|
166
200
|
</object>
|
167
201
|
<packing>
|
168
202
|
<property name="expand">False</property>
|
data/gui/win_main.rb
CHANGED
@@ -37,10 +37,22 @@ class Ruby_do::Gui::Win_main
|
|
37
37
|
|
38
38
|
#Updates the icon, title and description to match the current result (if any).
|
39
39
|
def update_res
|
40
|
-
if @
|
41
|
-
@
|
42
|
-
|
43
|
-
|
40
|
+
if @results and @enum
|
41
|
+
while @results.length <= @result_i
|
42
|
+
begin
|
43
|
+
@results << @enum.next
|
44
|
+
rescue StopIteration
|
45
|
+
@result_i -= 1
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
cur_res = @results[@result_i]
|
50
|
+
end
|
51
|
+
|
52
|
+
if cur_res
|
53
|
+
@gui["labActionTitle"].markup = "<b>#{@result_i + 1}</b> - " + cur_res.title_html!
|
54
|
+
@gui["labActionDescr"].label = cur_res.descr_html!
|
55
|
+
@gui["imgActionIcon"].pixbuf = cur_res.icon_pixbuf!
|
44
56
|
else
|
45
57
|
@gui["labActionTitle"].markup = "<b>#{Knj::Web.html(_("Nothing found"))}</b>"
|
46
58
|
@gui["labActionDescr"].label = _("Please enter something in the search text-field to do something.")
|
@@ -53,6 +65,7 @@ class Ruby_do::Gui::Win_main
|
|
53
65
|
Gtk.timeout_remove(@timeout) if @timeout
|
54
66
|
@timeout = Gtk.timeout_add(500) do
|
55
67
|
self.on_txtSearch_changed_wait
|
68
|
+
@timeout = nil
|
56
69
|
false
|
57
70
|
end
|
58
71
|
end
|
@@ -61,39 +74,48 @@ class Ruby_do::Gui::Win_main
|
|
61
74
|
def on_txtSearch_changed_wait
|
62
75
|
return nil if @gui["window"].destroyed?
|
63
76
|
|
77
|
+
@enum = nil
|
78
|
+
@result_i = 0
|
79
|
+
@results = []
|
80
|
+
|
64
81
|
text = @gui["txtSearch"].text
|
65
82
|
words = text.split(/\s+/).map{|ele| ele.downcase}
|
66
83
|
|
67
|
-
if words.empty?
|
68
|
-
|
69
|
-
|
70
|
-
@enum = @args[:rdo].plugin.send(:text => text, :words => words)
|
71
|
-
|
72
|
-
begin
|
73
|
-
@cur_res = @enum.next
|
74
|
-
rescue StopIteration
|
75
|
-
@cur_res = nil
|
76
|
-
end
|
84
|
+
if !words.empty?
|
85
|
+
#Need to use threadded enumerator because of fiber failure otherwise.
|
86
|
+
@enum = Threadded_enumerator.new(:enum => @args[:rdo].plugin.send(:text => text, :words => words))
|
77
87
|
end
|
78
88
|
|
79
89
|
self.update_res
|
80
90
|
end
|
81
91
|
|
92
|
+
def prev_result
|
93
|
+
@result_i -= 1 if @result_i > 0
|
94
|
+
self.update_res
|
95
|
+
end
|
96
|
+
|
97
|
+
def next_result
|
98
|
+
@result_i += 1
|
99
|
+
self.update_res
|
100
|
+
end
|
101
|
+
|
82
102
|
#This happens when <ENTER> is pressed while the search-textfield has focus.
|
83
103
|
def on_txtSearch_activate
|
84
104
|
#If enter was pressed before search was executed, then be sure to execute a search first and disable the timeout, so search wont be done two times.
|
85
|
-
if @timeout
|
105
|
+
if @timeout and !@enum and @result_i == 0
|
86
106
|
Gtk.timeout_remove(@timeout)
|
87
107
|
self.on_txtSearch_changed_wait
|
88
108
|
end
|
89
109
|
|
90
|
-
|
110
|
+
cur_res = @results[@result_i]
|
111
|
+
|
112
|
+
if !cur_res
|
91
113
|
Knj::Gtk2.msgbox(_("Please search for something in order to activate."))
|
92
114
|
return nil
|
93
115
|
end
|
94
116
|
|
95
117
|
begin
|
96
|
-
res =
|
118
|
+
res = cur_res.execute
|
97
119
|
|
98
120
|
if res == :close_win_main
|
99
121
|
@gui["window"].destroy
|
@@ -105,8 +127,16 @@ class Ruby_do::Gui::Win_main
|
|
105
127
|
|
106
128
|
#In order the register <ESCAPE>-presses.
|
107
129
|
def on_txtSearch_key_press_event(entry, eventkey)
|
108
|
-
|
130
|
+
name = Gdk::Keyval.to_name(eventkey.keyval).to_s.downcase
|
131
|
+
|
132
|
+
if name == "escape"
|
109
133
|
@gui["window"].destroy
|
134
|
+
elsif name == "down"
|
135
|
+
self.next_result
|
136
|
+
return true
|
137
|
+
elsif name == "up"
|
138
|
+
self.prev_result
|
139
|
+
return true
|
110
140
|
end
|
111
141
|
end
|
112
142
|
|
data/gui/win_properties.rb
CHANGED
@@ -52,17 +52,31 @@ class Ruby_do::Gui::Win_properties
|
|
52
52
|
sel = Knj::Gtk2::Tv.sel(@gui["tvPlugins"])
|
53
53
|
model = @args[:rdo].ob.get_by(:Plugin, {"classname" => sel[0]}) if sel
|
54
54
|
|
55
|
-
if model
|
56
|
-
@gui["
|
55
|
+
if model
|
56
|
+
@gui["tablePlugin"].show
|
57
|
+
|
58
|
+
if model[:active].to_i == 1
|
59
|
+
@gui["cbPluginActivate"].active = true
|
60
|
+
else
|
61
|
+
@gui["cbPluginActivate"].active = false
|
62
|
+
end
|
63
|
+
|
64
|
+
@gui["txtPluginOrderNo"].text = model[:order_no].to_s
|
57
65
|
else
|
58
|
-
@gui["
|
66
|
+
@gui["tablePlugin"].hide
|
59
67
|
end
|
60
68
|
|
61
69
|
self.load_widget
|
62
|
-
|
63
70
|
@gui["boxPluginOptions"].show_all
|
64
71
|
end
|
65
72
|
|
73
|
+
def on_txtPluginOrderNo_changed
|
74
|
+
sel = Knj::Gtk2::Tv.sel(@gui["tvPlugins"])
|
75
|
+
model = @args[:rdo].ob.get_by(:Plugin, {"classname" => sel[0]}) if sel
|
76
|
+
return nil if !model
|
77
|
+
model[:order_no] = @gui["txtPluginOrderNo"].text
|
78
|
+
end
|
79
|
+
|
66
80
|
def load_widget
|
67
81
|
#Remove plugin-widgets.
|
68
82
|
@gui["boxPluginOptions"].children.each do |child|
|
data/include/database.rb
CHANGED
@@ -16,11 +16,31 @@ class Ruby_do::Database
|
|
16
16
|
{"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
|
17
17
|
{"name" => "name", "type" => "varchar"},
|
18
18
|
{"name" => "classname", "type" => "varchar"},
|
19
|
+
{"name" => "order_no", "type" => "int"},
|
19
20
|
{"name" => "active", "type" => "enum", "maxlength" => "'0','1'", "default" => 0}
|
20
21
|
],
|
21
22
|
"indexes" => [
|
22
23
|
"name",
|
23
|
-
"classname"
|
24
|
+
"classname",
|
25
|
+
"order_no"
|
26
|
+
]
|
27
|
+
},
|
28
|
+
"Static_result" => {
|
29
|
+
"columns" => [
|
30
|
+
{"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
|
31
|
+
{"name" => "plugin_id", "type" => "int"},
|
32
|
+
{"name" => "id_str", "type" => "varchar"},
|
33
|
+
{"name" => "title", "type" => "varchar"},
|
34
|
+
{"name" => "title_lower", "type" => "varchar"},
|
35
|
+
{"name" => "descr", "type" => "text"},
|
36
|
+
{"name" => "data", "type" => "text"},
|
37
|
+
{"name" => "icon_path", "type" => "text"}
|
38
|
+
],
|
39
|
+
"indexes" => [
|
40
|
+
"plugin_id",
|
41
|
+
"id_str",
|
42
|
+
"title",
|
43
|
+
"title_lower"
|
24
44
|
]
|
25
45
|
}
|
26
46
|
}
|
data/include/models.rb
CHANGED
data/include/plugin.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
class Ruby_do::Plugin
|
2
|
-
def self.const_missing(name)
|
3
|
-
|
4
|
-
end
|
5
|
-
|
6
2
|
attr_reader :plugins
|
7
3
|
|
8
4
|
def register_plugins
|
@@ -41,6 +37,8 @@ class Ruby_do::Plugin
|
|
41
37
|
|
42
38
|
plugin.model = model
|
43
39
|
model.plugin = plugin
|
40
|
+
|
41
|
+
plugin.start if plugin.respond_to?(:start)
|
44
42
|
rescue NameError => e
|
45
43
|
$stderr.puts "Cant loading plugin '#{match[1]}' because of the following."
|
46
44
|
$stderr.puts e.inspect
|
@@ -57,9 +55,44 @@ class Ruby_do::Plugin
|
|
57
55
|
|
58
56
|
def send(args)
|
59
57
|
return Enumerator.new do |yielder|
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
plugins_active = []
|
59
|
+
@args[:rdo].ob.list(:Plugin, "active" => 1, "orderby" => "order_no") do |plugin|
|
60
|
+
plugins_active << plugin
|
61
|
+
end
|
62
|
+
|
63
|
+
plugins_active_ids = plugins_active.clone.map{|d| d.id.to_i}
|
64
|
+
found = []
|
65
|
+
|
66
|
+
#Search for exact static results.
|
67
|
+
@args[:rdo].ob.list(:Static_result, "plugin_id" => plugins_active_ids, "title_lower" => args[:text].to_s.strip.downcase) do |sres|
|
68
|
+
yielder << Ruby_do::Plugin::Result.new(
|
69
|
+
:title => sres[:title],
|
70
|
+
:descr => sres[:descr],
|
71
|
+
:icon => sres[:icon_path],
|
72
|
+
:static_result => true,
|
73
|
+
:sres => sres
|
74
|
+
)
|
75
|
+
|
76
|
+
found << sres.id
|
77
|
+
end
|
78
|
+
|
79
|
+
#Search for close static results.
|
80
|
+
@args[:rdo].ob.list(:Static_result, "plugin_id" => plugins_active_ids, "title_lower_search" => args[:text].to_s.strip.downcase, "id_not" => found) do |sres|
|
81
|
+
yielder << Ruby_do::Plugin::Result.new(
|
82
|
+
:title => sres[:title],
|
83
|
+
:descr => sres[:descr],
|
84
|
+
:icon => sres[:icon_path],
|
85
|
+
:static_result => true,
|
86
|
+
:sres => sres
|
87
|
+
)
|
88
|
+
|
89
|
+
found << sres.id
|
90
|
+
end
|
91
|
+
|
92
|
+
#Call plugins to get further results.
|
93
|
+
plugins_active.each do |plugin_model|
|
94
|
+
plugin_instance = plugin_model.plugin
|
95
|
+
next if !plugin_instance.respond_to?(:on_search)
|
63
96
|
|
64
97
|
begin
|
65
98
|
enum = plugin_instance.on_search(args)
|
@@ -76,7 +109,6 @@ class Ruby_do::Plugin
|
|
76
109
|
|
77
110
|
class Base
|
78
111
|
attr_accessor :model
|
79
|
-
|
80
112
|
attr_reader :rdo_plugin_args
|
81
113
|
|
82
114
|
def initialize(args)
|
@@ -95,6 +127,48 @@ class Ruby_do::Plugin
|
|
95
127
|
def title
|
96
128
|
name = Knj::Php.ucwords(self.class.name.to_s[15, 999].gsub("_", " "))
|
97
129
|
end
|
130
|
+
|
131
|
+
def static_result_exists?(id_str)
|
132
|
+
sres = self.static_result_get(id_str)
|
133
|
+
|
134
|
+
if sres
|
135
|
+
return true
|
136
|
+
else
|
137
|
+
return false
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def static_result_get(id_str)
|
142
|
+
return @rdo_plugin_args[:rdo].ob.get_by(:Static_result, "plugin_id" => self.model.id, "id_str" => id_str)
|
143
|
+
end
|
144
|
+
|
145
|
+
def register_static_result(args)
|
146
|
+
raise "Argument was not a hash." if !args.is_a?(Hash)
|
147
|
+
raise "':id_str' was empty." if args[:id_str].to_s.strip.empty?
|
148
|
+
raise "':title' was empty." if args[:title].to_s.strip.empty?
|
149
|
+
raise "':descr' was empty." if args[:descr].to_s.strip.empty?
|
150
|
+
|
151
|
+
args[:data] = {} if !args[:data]
|
152
|
+
|
153
|
+
sres_hash = {
|
154
|
+
:title => args[:title],
|
155
|
+
:title_lower => args[:title].to_s.strip.downcase,
|
156
|
+
:id_str => args[:id_str],
|
157
|
+
:descr => args[:descr],
|
158
|
+
:icon_path => args[:icon_path],
|
159
|
+
:data => Marshal.dump(args[:data])
|
160
|
+
}
|
161
|
+
|
162
|
+
if sres = self.static_result_get(args[:id_str])
|
163
|
+
sres.update(sres_hash)
|
164
|
+
else
|
165
|
+
sres = @rdo_plugin_args[:rdo].ob.add(:Static_result, sres_hash.merge(
|
166
|
+
:plugin_id => self.model.id,
|
167
|
+
))
|
168
|
+
end
|
169
|
+
|
170
|
+
return {:sres => sres}
|
171
|
+
end
|
98
172
|
end
|
99
173
|
|
100
174
|
class Result
|
@@ -156,5 +230,14 @@ class Ruby_do::Plugin
|
|
156
230
|
return "[#{_("no description")}]"
|
157
231
|
end
|
158
232
|
end
|
233
|
+
|
234
|
+
def execute
|
235
|
+
if @args[:static_result]
|
236
|
+
plugin = @args[:sres].plugin.plugin
|
237
|
+
return plugin.execute_static_result(:sres => @args[:sres])
|
238
|
+
else
|
239
|
+
return @args[:plugin].execute_result(:res => self)
|
240
|
+
end
|
241
|
+
end
|
159
242
|
end
|
160
243
|
end
|
data/lib/ruby_do.rb
CHANGED
@@ -10,7 +10,20 @@ class Ruby_do
|
|
10
10
|
def initialize(args = {})
|
11
11
|
#Require various used libs.
|
12
12
|
require "rubygems"
|
13
|
-
|
13
|
+
|
14
|
+
|
15
|
+
#Enable local dev-mode.
|
16
|
+
if File.exists?("#{File.dirname(__FILE__)}/../../knjrbfw")
|
17
|
+
require "#{File.dirname(__FILE__)}/../../knjrbfw/lib/knjrbfw.rb"
|
18
|
+
else
|
19
|
+
require "knjrbfw"
|
20
|
+
end
|
21
|
+
|
22
|
+
if File.exists?("#{File.dirname(__FILE__)}/../../threadded_enumerator")
|
23
|
+
require "#{File.dirname(__FILE__)}/../../threadded_enumerator/lib/threadded_enumerator.rb"
|
24
|
+
else
|
25
|
+
require "threadded_enumerator"
|
26
|
+
end
|
14
27
|
|
15
28
|
|
16
29
|
#Set arguments (config).
|
data/models/plugin.rb
CHANGED
data/ruby_do.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruby_do}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = %q{2012-07-
|
12
|
+
s.date = %q{2012-07-11}
|
13
13
|
s.default_executable = %q{ruby_do.rb}
|
14
14
|
s.description = %q{A clone of Gnome-Do and Kupfer written in Ruby.}
|
15
15
|
s.email = %q{k@spernj.org}
|
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
|
|
40
40
|
"include/unix_socket.rb",
|
41
41
|
"lib/ruby_do.rb",
|
42
42
|
"models/plugin.rb",
|
43
|
+
"models/static_result.rb",
|
43
44
|
"ruby_do.gemspec",
|
44
45
|
"spec/ruby_do_spec.rb",
|
45
46
|
"spec/spec_helper.rb"
|
@@ -58,6 +59,7 @@ Gem::Specification.new do |s|
|
|
58
59
|
s.add_runtime_dependency(%q<knjrbfw>, [">= 0"])
|
59
60
|
s.add_runtime_dependency(%q<gettext>, [">= 0"])
|
60
61
|
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
62
|
+
s.add_runtime_dependency(%q<threadded_enumerator>, [">= 0"])
|
61
63
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
62
64
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
63
65
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -68,6 +70,7 @@ Gem::Specification.new do |s|
|
|
68
70
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
69
71
|
s.add_dependency(%q<gettext>, [">= 0"])
|
70
72
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
73
|
+
s.add_dependency(%q<threadded_enumerator>, [">= 0"])
|
71
74
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
72
75
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
73
76
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -79,6 +82,7 @@ Gem::Specification.new do |s|
|
|
79
82
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
80
83
|
s.add_dependency(%q<gettext>, [">= 0"])
|
81
84
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
85
|
+
s.add_dependency(%q<threadded_enumerator>, [">= 0"])
|
82
86
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
83
87
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
84
88
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: ruby_do
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-07-
|
13
|
+
date: 2012-07-11 00:00:00 +02:00
|
14
14
|
default_executable: ruby_do.rb
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -58,8 +58,19 @@ dependencies:
|
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: *id004
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
61
|
+
name: threadded_enumerator
|
62
62
|
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rspec
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
63
74
|
none: false
|
64
75
|
requirements:
|
65
76
|
- - ~>
|
@@ -67,10 +78,10 @@ dependencies:
|
|
67
78
|
version: 2.8.0
|
68
79
|
type: :development
|
69
80
|
prerelease: false
|
70
|
-
version_requirements: *
|
81
|
+
version_requirements: *id006
|
71
82
|
- !ruby/object:Gem::Dependency
|
72
83
|
name: rdoc
|
73
|
-
requirement: &
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
74
85
|
none: false
|
75
86
|
requirements:
|
76
87
|
- - ~>
|
@@ -78,10 +89,10 @@ dependencies:
|
|
78
89
|
version: "3.12"
|
79
90
|
type: :development
|
80
91
|
prerelease: false
|
81
|
-
version_requirements: *
|
92
|
+
version_requirements: *id007
|
82
93
|
- !ruby/object:Gem::Dependency
|
83
94
|
name: bundler
|
84
|
-
requirement: &
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
85
96
|
none: false
|
86
97
|
requirements:
|
87
98
|
- - ">="
|
@@ -89,10 +100,10 @@ dependencies:
|
|
89
100
|
version: 1.0.0
|
90
101
|
type: :development
|
91
102
|
prerelease: false
|
92
|
-
version_requirements: *
|
103
|
+
version_requirements: *id008
|
93
104
|
- !ruby/object:Gem::Dependency
|
94
105
|
name: jeweler
|
95
|
-
requirement: &
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
96
107
|
none: false
|
97
108
|
requirements:
|
98
109
|
- - ~>
|
@@ -100,10 +111,10 @@ dependencies:
|
|
100
111
|
version: 1.8.4
|
101
112
|
type: :development
|
102
113
|
prerelease: false
|
103
|
-
version_requirements: *
|
114
|
+
version_requirements: *id009
|
104
115
|
- !ruby/object:Gem::Dependency
|
105
116
|
name: rcov
|
106
|
-
requirement: &
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
107
118
|
none: false
|
108
119
|
requirements:
|
109
120
|
- - ">="
|
@@ -111,7 +122,7 @@ dependencies:
|
|
111
122
|
version: "0"
|
112
123
|
type: :development
|
113
124
|
prerelease: false
|
114
|
-
version_requirements: *
|
125
|
+
version_requirements: *id010
|
115
126
|
description: A clone of Gnome-Do and Kupfer written in Ruby.
|
116
127
|
email: k@spernj.org
|
117
128
|
executables:
|
@@ -143,6 +154,7 @@ files:
|
|
143
154
|
- include/unix_socket.rb
|
144
155
|
- lib/ruby_do.rb
|
145
156
|
- models/plugin.rb
|
157
|
+
- models/static_result.rb
|
146
158
|
- ruby_do.gemspec
|
147
159
|
- spec/ruby_do_spec.rb
|
148
160
|
- spec/spec_helper.rb
|
@@ -160,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
172
|
requirements:
|
161
173
|
- - ">="
|
162
174
|
- !ruby/object:Gem::Version
|
163
|
-
hash: -
|
175
|
+
hash: -2303673294360816635
|
164
176
|
segments:
|
165
177
|
- 0
|
166
178
|
version: "0"
|