picky-generators 4.2.4 → 4.3.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.
@@ -1,60 +1,232 @@
1
1
  !!!
2
2
  %html{ :lang => 'en' }
3
3
  %head
4
- %link{:href => "stylesheets/picky.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
5
4
  %link{:href => "stylesheets/application.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
6
-
5
+ %link{:href => "stylesheets/picky.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
7
6
  = js 'jquery-1.5.0.min'
8
7
  = js 'history.min'
9
8
  = js 'history.adapter.jquery.min'
10
9
  = js 'picky.min'
11
10
 
12
11
  %body
13
- %img{:src => "images/picky.png"}/
14
- %p
15
- %a{:href => "http://floere.github.com/picky"} To the Picky Homepage
16
- \/
17
- %a{:href => '/configure' } Configuring this app server
18
- %p
19
- Try a few examples
20
- = succeed ":" do
21
- %span.explanation (on a simple database with 540 books - note that the server is on Heroku and needs a little time to ramp up)
22
- %p
23
- A simple word,
24
- = succeed "." do
25
- %a{:href => "#", :onclick => "pickyClient.insert('alan');"} alan
26
- %span.explanation
27
- (Finds Alan in the title, and Alans who wrote books. The title is ranked higher due to weighing.)
28
- %span
29
- %p
30
- With qualifier,
31
- = succeed "." do
32
- %a{:href => "#", :onclick => "pickyClient.insert('title:women');"} title:women
33
- %span.explanation
34
- (Finds "women*" just in titles.)
35
- %span
36
- %p
37
- With similarity,
38
- = succeed "." do
39
- %a{:href => "#", :onclick => "pickyClient.insert('pinchn~');"} pinchn~
40
- %span.explanation (Finds "pynchon", note: Only title in example with similarity. Uses a combination of double metaphone and Levenshtein.)
41
- %p
42
- More complex,
43
- = succeed "." do
44
- %a{:href => "#", :onclick => "pickyClient.insert('title:lyterature~');"} title:lyterature~
45
- %span.explanation (Finds similar titles)
46
- %p
47
- With choice,
48
- = succeed "." do
49
- %a{:href => "#", :onclick => "pickyClient.insert('sp');"} sp
50
- %span.explanation (Finds "sp*" in multiple categories. Choose the one you're looking for.)
51
- %p
52
- More complex,
53
- = succeed "." do
54
- %a{:href => "#", :onclick => "pickyClient.insert('soc* p');"} soc* p
55
- %span.explanation (This is where Picky really shines, "the title started with soc, and the author starts with p")
12
+ %hgroup
13
+ / Replace these headers with your code
14
+ %img{ :class => 'picky', :src => "images/picky.png"}/
15
+ %h1 Picky
16
+ %h2
17
+ Scaffold: A great start into your
18
+ %em fantastic
19
+ search engine!
20
+
21
+ %a{ :href => "http://florianhanke.com/picky" } Picky Homepage
56
22
  .content
57
23
  = Picky::Helper.cached_interface
24
+ %section
25
+ %h1 Examples:
26
+ %p
27
+ %a{:href => "", :onclick => "pickyClient.insert('alan');"} alan
28
+ finds Alan in the title, and Alans who wrote books. The title is ranked higher due to weighing.
29
+ %p
30
+ %a{:href => "", :onclick => "pickyClient.insert('title:women');"} title:women
31
+ finds "women*" just in titles.
32
+ %p
33
+ %a{:href => "", :onclick => "pickyClient.insert('pinchn~');"} pinchn~
34
+ finds the similar "pynchon".
35
+ %p
36
+ %a{:href => "", :onclick => "pickyClient.insert('title:lyterature~');"} title:lyterature~
37
+ finds similar titles.
38
+ %p
39
+ %a{:href => "", :onclick => "pickyClient.insert('sp');"} sp
40
+ finds "sp*" in multiple categories. Choose the one you're looking for.
41
+ %p
42
+ %a{:href => "", :onclick => "pickyClient.insert('soc* p');"} soc* p
43
+ means "find something that starts with soc, and another thing starting with p".
44
+ %section
45
+ %h1 Already made it this far? You're good!
46
+ %p I think you're ready for configuring me for your own purposes.
47
+ %h2 Configuring the Picky client.
48
+ %p
49
+ There are two places where you configure the Picky client:
50
+ %ol
51
+ %li
52
+ %a{ :href => '#controller' } In the controller.
53
+ (client to Picky server)
54
+ %li
55
+ %a{ :href => '#view' } In the view.
56
+ (javascript client interface)
57
+ %h2#controller Controller
58
+ %p
59
+ Open the file
60
+ %strong app.rb
61
+ and take a peek inside.
62
+ %p
63
+ First you need both a client instance for a
64
+ %strong full
65
+ or a
66
+ %strong live search
67
+ depending on what you need (Full gets results with IDs, Live without and is used for updating the counter).
68
+ %p
69
+ In the example, I called it
70
+ %strong BookSearch
71
+ \.
72
+ %code
73
+ %pre
74
+ :preserve
75
+ BookSearch = Picky::Client.new host: 'localhost',
76
+ port: 8080,
77
+ path: '/books'
78
+ %p
79
+ Both clients offer the options:
80
+ %dl
81
+ %dt
82
+ %strong host
83
+ %dd The Picky search server host.
84
+ %dt
85
+ %strong port
86
+ %dd The Picky search server port (see unicorn.rb in the server).
87
+ %dt
88
+ %strong path
89
+ %dd The Picky search path (see app.rb in the server).
90
+ %p
91
+ Then, use these Client instances in your actions. For example like this:
92
+ %code
93
+ %pre
94
+ :preserve
95
+ get '/search/full' do
96
+ results = BookSearch.search params[:query],
97
+ :ids => params[:ids],
98
+ :offset => params[:offset]
99
+ results.extend Picky::Convenience
100
+ results.populate_with Book do |book|
101
+ book.to_s
102
+ end
103
+ ActiveSupport::JSON.encode results
104
+ end
105
+ %p
106
+ This part gets a
107
+ %strong hash
108
+ with the results:
109
+ %code
110
+ %pre
111
+ :preserve
112
+ results = BookSearch.search params[:query],
113
+ :ids => params[:ids],
114
+ :offset => params[:offset]
115
+ %p
116
+ This part takes the
117
+ %strong hash
118
+ and extends it with a few useful and convenient methods:
119
+ %code
120
+ %pre results.extend Picky::Convenience
121
+ %p
122
+ One of these methods is the
123
+ %strong populate_with
124
+ method which takes a
125
+ %strong model
126
+ as parameter, and then gets the corresponding
127
+ %strong model instances
128
+ for each id in the result.
129
+ %code
130
+ %pre
131
+ :preserve
132
+ results.populate_with Book do |book|
133
+ book.to_s
134
+ end
135
+ The
136
+ %strong book.to_s
137
+ simulates rendering a book.
138
+ You can do whatever with the book instance if you just return a rendered thing that's supposed to be shown in the front end.
139
+ %p
140
+ If you don't want to render in the controller, you can do so in a view. In the controller just call
141
+ %code
142
+ %pre
143
+ results.populate_with Book
144
+ and then render the books in a view using:
145
+ %code
146
+ %pre
147
+ :preserve
148
+ results.entries do |book|
149
+ render book # or book.to_s, or however you like to render the book.
150
+ end
151
+ %p
152
+ At the end, encode the hash in JSON:
153
+ %code
154
+ %pre
155
+ ActiveSupport::JSON.encode results
156
+ That's it for the controller.
157
+ %p
158
+ All the steps in one:
159
+ %code
160
+ %pre
161
+ :preserve
162
+ BookSearch = Picky::Client.new host: 'localhost',
163
+ port: 8080,
164
+ path: '/books'
165
+
166
+ get '/search/full' do
167
+ results = BookSearch.search params[:query],
168
+ ids: params[:ids],
169
+ offset: params[:offset]
170
+
171
+ results.extend Picky::Convenience
172
+ results.populate_with Book do |book|
173
+ book.to_s
174
+ end
175
+
176
+ ActiveSupport::JSON.encode results
177
+ end
178
+ %h2#view View
179
+ %p
180
+ The view is even easier. Just add the line
181
+ %code
182
+ %pre
183
+ :preserve
184
+ = Picky::Helper.cached_interface
185
+ if you use just one language, or
186
+ %code
187
+ %pre
188
+ :preserve
189
+ = Picky::Helper.interface button: 'search',
190
+ no_results: 'No results!',
191
+ more: 'more'
192
+ if you use multiple languages.
193
+ (You'd use the options
194
+ %code
195
+ %pre
196
+ :preserve
197
+ button: t(:'search.button'),
198
+ no_results: t(:'search.no_results'),
199
+ more: t(:'search.more')
200
+ of course, with proper i18n)
201
+ The same options can be used for
202
+ %strong #cached_interface
203
+ but they will be cached, so you can only set them once and then reused.
204
+ %p
205
+ You're almost finished. Take a look at the file
206
+ %strong views/search.haml
207
+ where you'll find javascript at the end. It looks something like this:
208
+ %code
209
+ %pre
210
+ :preserve
211
+ :javascript
212
+ pickyClient = new PickyClient({
213
+ // A full query displays the rendered results.
214
+ //
215
+ full: '/search/full',
216
+
217
+ // etc.
218
+ Just take a look at the possible javascript client options in that file.
219
+ %p
220
+ %strong Good luck my friend!
221
+ %em *waves several stubby pink tentacles*
222
+ %footer
223
+ Website design by
224
+ %a{ :href => 'http://twitter.com/thijs' } Thijs van der Vossen
225
+ of
226
+ %a{ :href => 'http://fngtps.com' } Fingertips
227
+ with modifications by
228
+ = succeed('.') do
229
+ %a{ :href => 'http://twitter.com/hanke' } Florian Hanke
58
230
  :javascript
59
231
  $(window).load(function() {
60
232
  pickyClient = new PickyClient({
@@ -63,13 +235,12 @@
63
235
  full: '/search/full',
64
236
  // fullResults: 100, // Optional. Amount of ids to search for, default 20.
65
237
 
66
- // A live query just updates the count and does not need
67
- // to render (could go straight to the search server).
238
+ // A live query just updates the count.
68
239
  //
69
240
  live: '/search/live',
70
241
  // liveResults: 0, // Optional. Amount of ids to search for, default 0.
71
242
 
72
- // showResultsLimit: 10, // Optional. Default is 10.
243
+ // showResultsLimit: 100, // Optional. Default is 10.
73
244
 
74
245
  // Wrap each li group (like author-title, or title-isbn etc.) of results
75
246
  // in this element.
@@ -77,7 +248,7 @@
77
248
  //
78
249
  // wrapResults: '<div class="hello"><ol class="world"></ol></div>',
79
250
 
80
- // before: function(query, params) { }, // Optional. Before Picky sends any data. Return modified query to change query.
251
+ // before: function(query, params) { }, // Optional. Before Picky sends any data. Return modified query.
81
252
  // success: function(data, query) { }, // Optional. Just after Picky receives data. (Get a PickyData object)
82
253
  // after: function(data, query) { }, // Optional. After Picky has handled the data and updated the view.
83
254
 
@@ -103,14 +274,17 @@
103
274
  choices: {
104
275
  en:{
105
276
  'title': {
106
- format: "<strong>%1$s</strong>",
277
+ format: "Called <strong>%1$s</strong>",
107
278
  filter: function(text) { return text.toUpperCase(); },
108
- ignoreSingle: false
279
+ ignoreSingle: true
109
280
  },
110
- 'author,title': '%1$s, who wrote %2$s',
111
- 'title,author': '%2$s, written by %2$s',
112
- 'title,subjects': '%1$s, about %2$s',
113
- 'author,subjects': '%1$s, who wrote about %2$s'
281
+ 'author': 'Written by %1$s',
282
+ 'subjects': 'Being about %1$s',
283
+ 'publisher': 'Published by %1$s',
284
+ 'author,title': 'Called %1$s, written by %2$s',
285
+ 'title,author': 'Called %2$s, written by %1$s',
286
+ 'title,subjects': 'Called %1$s, about %2$s',
287
+ 'author,subjects': '%1$s who wrote about %2$s'
114
288
  }
115
289
  },
116
290
 
@@ -122,9 +296,9 @@
122
296
  en:{
123
297
  title: 'titled',
124
298
  author: 'written by',
125
- year: 'published in'
126
- // publisher: 'published by',
127
- // subjects: 'topics'
299
+ year: 'published in',
300
+ publisher: 'published by',
301
+ subjects: 'with subjects'
128
302
  }
129
303
  }
130
304
  });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picky-generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.4
4
+ version: 4.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-02 00:00:00.000000000 Z
12
+ date: 2012-03-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70255746082160 !ruby/object:Gem::Requirement
16
+ requirement: &70259370500900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,29 +21,29 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70255746082160
24
+ version_requirements: *70259370500900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: picky
27
- requirement: &70255746081260 !ruby/object:Gem::Requirement
27
+ requirement: &70259370500400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 4.2.4
32
+ version: 4.3.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70255746081260
35
+ version_requirements: *70259370500400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: picky-client
38
- requirement: &70255746079840 !ruby/object:Gem::Requirement
38
+ requirement: &70259370499900 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 4.2.4
43
+ version: 4.3.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70255746079840
46
+ version_requirements: *70259370499900
47
47
  description: Generators for Picky.
48
48
  email: florian.hanke+picky-generators@gmail.com
49
49
  executables:
@@ -70,8 +70,9 @@ files:
70
70
  - prototypes/all_in_one/sinatra/Rakefile
71
71
  - prototypes/all_in_one/sinatra/spec/integration_spec.rb
72
72
  - prototypes/all_in_one/sinatra/stylesheets/application.css
73
+ - prototypes/all_in_one/sinatra/stylesheets/images/background.png
74
+ - prototypes/all_in_one/sinatra/stylesheets/images/cancel.svg
73
75
  - prototypes/all_in_one/sinatra/stylesheets/picky.css
74
- - prototypes/all_in_one/sinatra/views/configure.haml
75
76
  - prototypes/all_in_one/sinatra/views/search.haml
76
77
  - prototypes/client/sinatra/app.rb
77
78
  - prototypes/client/sinatra/book.rb
@@ -85,8 +86,9 @@ files:
85
86
  - prototypes/client/sinatra/library.csv
86
87
  - prototypes/client/sinatra/Rakefile
87
88
  - prototypes/client/sinatra/stylesheets/application.css
89
+ - prototypes/client/sinatra/stylesheets/images/background.png
90
+ - prototypes/client/sinatra/stylesheets/images/cancel.svg
88
91
  - prototypes/client/sinatra/stylesheets/picky.css
89
- - prototypes/client/sinatra/views/configure.haml
90
92
  - prototypes/client/sinatra/views/search.haml
91
93
  - prototypes/server/sinatra/app.rb
92
94
  - prototypes/server/sinatra/log/README
@@ -1,188 +0,0 @@
1
- !!!
2
- %html{ :lang => 'en' }
3
- %head
4
- %link{:href => "stylesheets/application.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
5
- %body
6
- %img{:src => "images/picky.png"}/
7
- %p
8
- %a{:href => "http://floere.github.com/picky"} To the Picky Homepage
9
- \/
10
- %a{:href => '/' } Back to the example
11
- .content
12
- %h1 Already made it this far? You're good!
13
- %p I think you're ready for configuring me for your own purposes.
14
- %h2 Configuring the Picky client.
15
- %p
16
- There are two places where you configure the Picky client:
17
- %ol
18
- %li
19
- %a{ :href => '#controller' } In the controller.
20
- (client to Picky server)
21
- %li
22
- %a{ :href => '#view' } In the view.
23
- (javascript client interface)
24
- %h2#controller Controller
25
- %p
26
- Open the file
27
- %strong app.rb
28
- and take a peek inside.
29
- %p
30
- First you need a client instance.
31
- %p
32
- In the example, I called it
33
- %strong BookSearch
34
- respectively.
35
- %code
36
- %pre
37
- :preserve
38
- BookSearch = Picky::Client.new :host => 'localhost',
39
- :port => 8080,
40
- :path => '/books'
41
- %p
42
- Both clients offer the options:
43
- %dl
44
- %dt
45
- %strong host
46
- %dd The Picky search server host.
47
- %dt
48
- %strong port
49
- %dd The Picky search server port (see unicorn.rb in the server).
50
- %dt
51
- %strong path
52
- %dd The Picky search path (see app/application.rb in the server for the mapping path => query).
53
- %p
54
- Then, use these Client instances in your actions. For example like this:
55
- %code
56
- %pre
57
- :preserve
58
- get '/search/full' do
59
- results = BookSearch.search params[:query],
60
- :ids => params[:ids],
61
- :offset => params[:offset]
62
- results.extend Picky::Convenience
63
- results.populate_with Book do |book|
64
- book.to_s
65
- end
66
- ActiveSupport::JSON.encode results
67
- end
68
- %p
69
- This part gets a
70
- %strong hash
71
- with the results:
72
- %code
73
- %pre
74
- :preserve
75
- results = BookSearch.search params[:query],
76
- :ids => params[:ids],
77
- :offset => params[:offset]
78
- %p
79
- This part takes the
80
- %strong hash
81
- and extends it with a few useful and convenient methods:
82
- %code
83
- %pre
84
- results.extend Picky::Convenience
85
- %p
86
- One of these methods is the
87
- %strong populate_with
88
- method which takes a
89
- %strong model
90
- as parameter, and then gets the corresponding
91
- %strong model instances
92
- for each id in the result.
93
- %code
94
- %pre
95
- :preserve
96
- results.populate_with Book do |book|
97
- book.to_s
98
- end
99
- The
100
- %strong book.to_s
101
- simulates rendering a book.
102
- You can do whatever with the book instance if you just return a rendered thing that's supposed to be shown in the front end.
103
- %p
104
- If you don't want to render in the controller, you can do so in a view. In the controller just call
105
- %code
106
- %pre
107
- results.populate_with Book
108
- and then render the books in a view using:
109
- %code
110
- %pre
111
- :preserve
112
- results.entries do |book|
113
- # Or use book.to_s, or however you like
114
- # to render the book.
115
- #
116
- render book
117
- end
118
- %p
119
- At the end, encode the hash in JSON:
120
- %code
121
- %pre
122
- ActiveSupport::JSON.encode results
123
- That's it for the controller.
124
- %p
125
- All the steps in one:
126
- %code
127
- %pre
128
- :preserve
129
- BookSearch = Picky::Client.new :host => 'localhost',
130
- :port => 8080,
131
- :path => '/books'
132
-
133
- get '/search/full' do
134
- results = BookSearch.search params[:query],
135
- :ids => params[:ids],
136
- :offset => params[:offset]
137
-
138
- results.extend Picky::Convenience
139
- results.populate_with Book do |book|
140
- book.to_s
141
- end
142
-
143
- ActiveSupport::JSON.encode results
144
- end
145
- %h2#view View
146
- %p
147
- The view is even easier. Just add the line
148
- %code
149
- %pre
150
- :preserve
151
- = Picky::Helper.cached_interface
152
- if you use just one language, or
153
- %code
154
- %pre
155
- :preserve
156
- = Picky::Helper.interface :button => 'search',
157
- :no_results => 'No results!',
158
- :more => 'more'
159
- if you use multiple languages.
160
- (You'd use the options
161
- %code
162
- %pre
163
- :preserve
164
- :button => t(:'search.button'),
165
- :no_results => t(:'search.no_results'),
166
- :more => t(:'search.more')
167
- of course, with proper i18n)
168
- The same options can be used for
169
- %strong #cached_interface
170
- but they will be cached, so you can only set them once and then reused.
171
- %p
172
- You're almost finished. Take a look at the file
173
- %strong views/search.haml
174
- where you'll find javascript at the end. It looks something like this:
175
- %code
176
- %pre
177
- :preserve
178
- :javascript
179
- pickyClient = new PickyClient({
180
- // A full query displays the rendered results.
181
- //
182
- full: '/search/full',
183
-
184
- // etc.
185
- //
186
- Just take a look at the possible javascript client options in that file.
187
- %p
188
- %strong Good luck my friend! *waves several stubby pink tentacles*