picky-client 4.6.3 → 4.6.4
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/lib/picky-client/aux/cursed.rb +1 -1
- data/lib/picky-client/aux/terminal.rb +1 -1
- data/lib/picky-client/client/active_record.rb +28 -23
- data/lib/picky-client/client.rb +14 -1
- data/lib/picky-client/constants.rb +3 -0
- data/lib/picky-client/helper.rb +25 -37
- data/lib/picky-client.rb +1 -0
- data/spec/picky-client/helper_spec.rb +6 -6
- metadata +4 -2
@@ -36,7 +36,7 @@ module Picky
|
|
36
36
|
|
37
37
|
@current_text = ''
|
38
38
|
@id_amount = id_amount && Integer(id_amount) || 20
|
39
|
-
@client = Picky::Client.new
|
39
|
+
@client = Picky::Client.new uri
|
40
40
|
|
41
41
|
install_trap
|
42
42
|
end
|
@@ -31,7 +31,7 @@ module Picky
|
|
31
31
|
@cursor_offset = 0
|
32
32
|
@last_ids = ''
|
33
33
|
@id_amount = id_amount && Integer(id_amount) || 20
|
34
|
-
@client = Picky::Client.new
|
34
|
+
@client = Picky::Client.new uri
|
35
35
|
|
36
36
|
install_trap
|
37
37
|
end
|
@@ -52,36 +52,41 @@ module Picky
|
|
52
52
|
#
|
53
53
|
client = options[:client] ||
|
54
54
|
(options[:path] ||= '/') && Picky::Client.new(options)
|
55
|
-
|
56
|
-
self.class.class_eval do
|
57
|
-
index_name = options[:index]
|
55
|
+
index_name = options[:index]
|
58
56
|
|
59
|
-
|
60
|
-
|
61
|
-
|
57
|
+
# Install.
|
58
|
+
#
|
59
|
+
install_extended_on client, index_name, attributes
|
60
|
+
end
|
61
|
+
|
62
|
+
# Installs an extended method on client which
|
63
|
+
# handles the model passed to it.
|
64
|
+
#
|
65
|
+
def install_extended_on client, index_name, attributes
|
66
|
+
self.class.send :define_method, :extended do |model|
|
67
|
+
attributes = nil if attributes.empty?
|
68
|
+
index_name ||= model.table_name
|
62
69
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
70
|
+
# Only after the database has actually
|
71
|
+
# updated the data do we want to index.
|
72
|
+
#
|
73
|
+
model.after_commit do |object|
|
74
|
+
data = { 'id' => object.id }
|
68
75
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
client.replace index_name, data
|
76
|
+
if object.destroyed?
|
77
|
+
client.remove index_name, data
|
78
|
+
else
|
79
|
+
(attributes || object.attributes.keys).each do |attr|
|
80
|
+
data[attr] = object.respond_to?(attr) &&
|
81
|
+
object.send(attr) ||
|
82
|
+
object[attr]
|
79
83
|
end
|
84
|
+
|
85
|
+
client.replace index_name, data
|
80
86
|
end
|
81
|
-
|
82
87
|
end
|
88
|
+
|
83
89
|
end
|
84
|
-
|
85
90
|
end
|
86
91
|
|
87
92
|
end
|
data/lib/picky-client/client.rb
CHANGED
@@ -49,7 +49,20 @@ module Picky
|
|
49
49
|
class Client
|
50
50
|
attr_accessor :host, :port, :path
|
51
51
|
|
52
|
-
def initialize
|
52
|
+
def initialize hash_or_uri = {}
|
53
|
+
if hash_or_uri.respond_to? :to_hash
|
54
|
+
initialize_from_hash hash_or_uri
|
55
|
+
else
|
56
|
+
initialize_from_uri hash_or_uri
|
57
|
+
end
|
58
|
+
end
|
59
|
+
def initialize_from_uri uri
|
60
|
+
initialize_from_hash :host => uri.host,
|
61
|
+
:port => uri.port,
|
62
|
+
:path => uri.path
|
63
|
+
|
64
|
+
end
|
65
|
+
def initialize_from_hash options
|
53
66
|
options = default_configuration.merge options
|
54
67
|
|
55
68
|
@host = options[:host]
|
data/lib/picky-client/helper.rb
CHANGED
@@ -4,21 +4,41 @@ module Picky
|
|
4
4
|
#
|
5
5
|
class Helper
|
6
6
|
|
7
|
-
|
7
|
+
# Returns a standard search interface for easy starting.
|
8
|
+
#
|
9
|
+
# ... aka scaffolding ;)
|
10
|
+
#
|
11
|
+
# Options:
|
12
|
+
# * button: The search button text.
|
13
|
+
# * no_results: The text shown when there are no results.
|
14
|
+
# * more: The text shown when there are more than X results.
|
15
|
+
#
|
16
|
+
# Usage, in Views:
|
17
|
+
#
|
18
|
+
# = Picky::Helper.interface :button => 'Go go go!'
|
19
|
+
#
|
20
|
+
#
|
21
|
+
def self.interface options = {}
|
22
|
+
<<-HTML
|
23
|
+
<section class="picky">
|
24
|
+
#{input(options)}
|
25
|
+
#{results(options)}
|
26
|
+
</section>
|
27
|
+
HTML
|
28
|
+
end
|
29
|
+
def self.input options = {}
|
8
30
|
search_button_text = options[:button] || 'search'
|
9
31
|
placeholder_text = options[:placeholder] || 'Search here...'
|
10
32
|
<<-HTML
|
11
33
|
<form class="empty" onkeypress="return event.keyCode != 13;">
|
12
|
-
<!-- <div class="feedback"> -->
|
13
34
|
<div class="status"></div>
|
14
35
|
<input type="search" placeholder="#{placeholder_text}" autocorrect="off" class="query"/>
|
15
36
|
<a class="reset" title="clear"></a>
|
16
|
-
<!-- </div> -->
|
17
37
|
<input type="button" value="#{search_button_text}"/>
|
18
38
|
</form>
|
19
39
|
HTML
|
20
|
-
|
21
|
-
|
40
|
+
end
|
41
|
+
def self.results options = {}
|
22
42
|
no_results = options[:no_results] || 'Sorry, no results found!'
|
23
43
|
more_allocations = options[:more] || 'more'
|
24
44
|
<<-HTML
|
@@ -30,38 +50,6 @@ HTML
|
|
30
50
|
<ol class="hidden"></ol>
|
31
51
|
</div>
|
32
52
|
HTML
|
33
|
-
}
|
34
|
-
@@localized_interface = lambda { |options|
|
35
|
-
<<-HTML
|
36
|
-
<section class="picky">
|
37
|
-
#{@@localized_input[options]}
|
38
|
-
#{@@localized_results[options]}
|
39
|
-
</section>
|
40
|
-
HTML
|
41
|
-
}
|
42
|
-
|
43
|
-
# Returns a standard search interface for easy starting.
|
44
|
-
#
|
45
|
-
# ... aka scaffolding ;)
|
46
|
-
#
|
47
|
-
# Options:
|
48
|
-
# * button: The search button text.
|
49
|
-
# * no_results: The text shown when there are no results.
|
50
|
-
# * more: The text shown when there are more than X results.
|
51
|
-
#
|
52
|
-
# Usage, in Views:
|
53
|
-
#
|
54
|
-
# = Picky::Helper.interface :button => 'Go go go!'
|
55
|
-
#
|
56
|
-
#
|
57
|
-
def self.interface options = {}
|
58
|
-
@@localized_interface[options]
|
59
|
-
end
|
60
|
-
def self.input options = {}
|
61
|
-
@@localized_input[options]
|
62
|
-
end
|
63
|
-
def self.results options = {}
|
64
|
-
@@localized_results[options]
|
65
53
|
end
|
66
54
|
|
67
55
|
# Returns a cached version if you always use a single language.
|
data/lib/picky-client.rb
CHANGED
@@ -4,6 +4,7 @@ require 'rubygems'
|
|
4
4
|
require 'yajl'
|
5
5
|
|
6
6
|
dir = File.dirname __FILE__
|
7
|
+
require File.expand_path('picky-client/constants', dir)
|
7
8
|
require File.expand_path('picky-client/client', dir)
|
8
9
|
require File.expand_path('picky-client/client_index', dir)
|
9
10
|
require File.expand_path('picky-client/convenience', dir)
|
@@ -19,28 +19,28 @@ describe Picky::Helper do
|
|
19
19
|
|
20
20
|
describe "input" do
|
21
21
|
it "should return good html" do
|
22
|
-
Picky::Helper.input.should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
22
|
+
Picky::Helper.input.should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"search\"/>\n</form>\n"
|
23
23
|
end
|
24
24
|
it "should return good html" do
|
25
|
-
Picky::Helper.input(:button => 'find').should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
25
|
+
Picky::Helper.input(:button => 'find').should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"find\"/>\n</form>\n"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "results" do
|
30
30
|
it "should return good html" do
|
31
|
-
Picky::Helper.input.should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
31
|
+
Picky::Helper.input.should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"search\"/>\n</form>\n"
|
32
32
|
end
|
33
33
|
it "should return good html" do
|
34
|
-
Picky::Helper.input(:no_results => 'SORRY!', :more => 'Click for more!').should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
34
|
+
Picky::Helper.input(:no_results => 'SORRY!', :more => 'Click for more!').should == "<form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"search\"/>\n</form>\n"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "interface" do
|
39
39
|
it "should return good html" do
|
40
|
-
Picky::Helper.interface.should == "<section class=\"picky\">\n <form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
40
|
+
Picky::Helper.interface.should == "<section class=\"picky\">\n <form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"search\"/>\n</form>\n\n <div class=\"results\"></div>\n<div class=\"no_results\">Sorry, no results found!</div>\n<div class=\"allocations\">\n <ol class=\"shown\"></ol>\n <ol class=\"more\">more</ol>\n <ol class=\"hidden\"></ol>\n</div>\n\n</section>\n"
|
41
41
|
end
|
42
42
|
it "should return good html" do
|
43
|
-
Picky::Helper.interface(:button => 'find', :no_results => 'SORRY!', :more => 'Click for more!').should == "<section class=\"picky\">\n <form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n
|
43
|
+
Picky::Helper.interface(:button => 'find', :no_results => 'SORRY!', :more => 'Click for more!').should == "<section class=\"picky\">\n <form class=\"empty\" onkeypress=\"return event.keyCode != 13;\">\n <div class=\"status\"></div>\n <input type=\"search\" placeholder=\"Search here...\" autocorrect=\"off\" class=\"query\"/>\n <a class=\"reset\" title=\"clear\"></a>\n <input type=\"button\" value=\"find\"/>\n</form>\n\n <div class=\"results\"></div>\n<div class=\"no_results\">SORRY!</div>\n<div class=\"allocations\">\n <ol class=\"shown\"></ol>\n <ol class=\"more\">Click for more!</ol>\n <ol class=\"hidden\"></ol>\n</div>\n\n</section>\n"
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picky-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.6.
|
4
|
+
version: 4.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yajl-ruby
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/picky-client/client/active_record.rb
|
56
56
|
- lib/picky-client/client.rb
|
57
57
|
- lib/picky-client/client_index.rb
|
58
|
+
- lib/picky-client/constants.rb
|
58
59
|
- lib/picky-client/convenience.rb
|
59
60
|
- lib/picky-client/extensions/object.rb
|
60
61
|
- lib/picky-client/helper.rb
|
@@ -114,3 +115,4 @@ test_files:
|
|
114
115
|
- spec/picky-client/helper_spec.rb
|
115
116
|
- spec/picky-client/spec/test_client_integration_spec.rb
|
116
117
|
- spec/picky-client/spec/test_client_spec.rb
|
118
|
+
has_rdoc: false
|