card-mod-search 0.17.0 → 0.18.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4e0888157c8ae7db22a9ac094ed705e61cb6df0cc971aac5910304d1feba587
4
- data.tar.gz: f442615afe24128dcd1506df6d8d99989ebfa915f3be4785e5a456a0de05bcbd
3
+ metadata.gz: ec2f9101c3845cebdaca92c643e6d1cff9e771e0356b609e234365d376603eb8
4
+ data.tar.gz: b69bbb886214f57a2440649d2e1e1911fcc19e39be5ce9919208e10a05935d5b
5
5
  SHA512:
6
- metadata.gz: a4712a996ebe145ac011e05f3528b015de3f45d2575d443c14716df8f2a09623534b057336be5122b45188d05b3fce01b4065364348371023e8a86a6a4c78a45
7
- data.tar.gz: bdaf29e1e625c1132c3bd2d02a0e58af2d447ee709b3483c802f9ae92c4362193c9533c894d8ca298d49524f384d065d4d55e13e53fbb27afb10c77dd58d4418
6
+ metadata.gz: 5c5683da6ad3c457348e8e65ff0b652016aaec95a68cde196f13a973a82e87aaba76679b783a04a101ae38917ab38f88bedaef4a1b03b0095f1442e1a635b431
7
+ data.tar.gz: 0446e312b97342f4712b56ff5d3994587fe56e6271d80e7ea615aea785ddaeaa61b6b60bc42645205f255d8b5a534d0ccd81633526bc5ed438e021c445306b88
@@ -20,6 +20,24 @@ format do
20
20
  (vars = params[:query]) ? Env.hash(vars) : {}
21
21
  end
22
22
 
23
+ def type_param
24
+ type = query_params[:type]
25
+ type.present? && type
26
+ end
27
+
28
+ def term_param
29
+ params[:term]
30
+ end
31
+
32
+ def search_keyword
33
+ @search_keyword ||= term_param || search_vars&.dig(:keyword)
34
+ end
35
+
36
+ def search_vars
37
+ # root.respond_to?(:search_params) ? root.search_params[:vars] :
38
+ search_params[:vars]
39
+ end
40
+
23
41
  def default_limit
24
42
  100
25
43
  end
@@ -8,9 +8,7 @@ format do
8
8
  end
9
9
 
10
10
  view :card_list, cache: :never do
11
- if search_with_params.empty?
12
- "no results"
13
- else
11
+ with_results do
14
12
  search_with_params.map do |item_card|
15
13
  nest_item item_card
16
14
  end.join "\n"
@@ -28,15 +26,9 @@ format do
28
26
  def item_cards
29
27
  search_with_params
30
28
  end
31
-
32
- def term_param
33
- params[:term]
34
- end
35
29
  end
36
30
 
37
31
  format :json do
38
- AUTOCOMPLETE_LIMIT = 8 # number of name suggestions for autocomplete text fields
39
-
40
32
  # NOCACHE because paging_urls is uncacheable hash and thus not safe to merge
41
33
  view :molecule, cache: :never do
42
34
  molecule.merge render_paging_urls
@@ -80,7 +72,7 @@ format :json do
80
72
  end
81
73
 
82
74
  def complete_cql
83
- term_param.present? ? { complete: term_param } : {}
75
+ { complete: term_param.to_s }
84
76
  end
85
77
 
86
78
  def match_cql not_names
@@ -112,15 +104,17 @@ end
112
104
 
113
105
  format :html do
114
106
  view :card_list, cache: :never do
115
- with_results do
116
- klasses = "card-list card-list-#{item_view_options[:view]} search-result-list"
117
- search_result_list(klasses) { |item_card| card_list_item item_card }
107
+ klasses = "card-list card-list-#{item_view_options[:view]} search-result-list"
108
+ search_result_list(klasses) do
109
+ search_with_params.map do |item_card|
110
+ card_list_item item_card
111
+ end
118
112
  end
119
113
  end
120
114
 
121
115
  view :checkbox_list, cache: :never do
122
- with_results do
123
- search_result_list "_search-checkbox-list pe-2" do |item_card|
116
+ search_result_list "_search-checkbox-list pe-2" do
117
+ search_with_params.map do |item_card|
124
118
  checkbox_item item_card
125
119
  end
126
120
  end
@@ -139,11 +133,7 @@ format :html do
139
133
  end
140
134
 
141
135
  def search_result_list klass, &block
142
- with_paging do
143
- wrap_with :div, class: klass do
144
- search_with_params.map(&block)
145
- end
146
- end
136
+ with_results { with_paging { wrap_with :div, class: klass, &block } }
147
137
  end
148
138
 
149
139
  def checkbox_item item_card
@@ -1,5 +1,7 @@
1
1
  include_set Abstract::Paging
2
2
 
3
+ AUTOCOMPLETE_LIMIT = 8 # number of name suggestions for autocomplete text fields
4
+
3
5
  def search _args={}
4
6
  raise Error, "search not overridden"
5
7
  end
@@ -13,7 +13,7 @@ end
13
13
 
14
14
  def item_type_id
15
15
  type = cql_hash[:type]
16
- type = type&.card_id unless type.is_a? Hash
16
+ type = type&.card_id if plausible_type? type
17
17
  type if type.is_a? Integer
18
18
  end
19
19
 
@@ -65,12 +65,18 @@ def query args={}
65
65
  Query.new standardized_query_args(args), name
66
66
  end
67
67
 
68
+ private
69
+
68
70
  def standardized_query_args args
69
71
  args = cql_hash.merge args.symbolize_keys
70
72
  args[:context] ||= name
71
73
  args
72
74
  end
73
75
 
76
+ def plausible_type? type
77
+ type.class.in?([String, Symbol, Integer]) && type != "_left"
78
+ end
79
+
74
80
  format do
75
81
  def default_limit
76
82
  card_content_limit || super
@@ -48,3 +48,9 @@ format :html do
48
48
  card.name
49
49
  end
50
50
  end
51
+
52
+ format :json do
53
+ view :select2_option do
54
+ { id: "~#{card.id}", text: card.name }
55
+ end
56
+ end
data/set/right/mates.rb CHANGED
@@ -1,5 +1,8 @@
1
- include_set Abstract::VirtualSearch,
2
- cql_content: { plus: "_left", sort_by: "name" },
3
- raw_help_text:
4
- 'If there is a card named "X+{{_left|name}}", ' \
5
- "then X is a mate of {{_left|name}}."
1
+ # too slow on large databases.
2
+ # requires joining cards to cards to cards.
3
+
4
+ # include_set Abstract::VirtualSearch,
5
+ # cql_content: { plus: "_left", sort_by: "name" },
6
+ # raw_help_text:
7
+ # 'If there is a card named "X+{{_left|name}}", ' \
8
+ # "then X is a mate of {{_left|name}}."
data/set/self/search.rb CHANGED
@@ -19,14 +19,6 @@ format do
19
19
  rescuing_bad_query(query) { Card.search query }
20
20
  end
21
21
 
22
- def search_keyword
23
- @search_keyword ||= term_param || search_vars&.dig(:keyword)
24
- end
25
-
26
- def search_vars
27
- root.respond_to?(:search_params) ? root.search_params[:vars] : search_params[:vars]
28
- end
29
-
30
22
  def cql_keyword?
31
23
  search_keyword&.match?(/^\{.+\}$/)
32
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-06-12 00:00:00.000000000 Z
13
+ date: 2024-11-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,56 +18,56 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.107.0
21
+ version: 1.108.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.107.0
28
+ version: 1.108.1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-collection
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.17.0
35
+ version: 0.18.1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.17.0
42
+ version: 0.18.1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: card-mod-format
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.17.0
49
+ version: 0.18.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 0.17.0
56
+ version: 0.18.1
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: card-mod-help
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.17.0
63
+ version: 0.18.1
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.17.0
70
+ version: 0.18.1
71
71
  description: ''
72
72
  email:
73
73
  - info@decko.org
@@ -122,7 +122,7 @@ files:
122
122
  - set/type/search_type.rb
123
123
  homepage: https://decko.org
124
124
  licenses:
125
- - GPL-3.0
125
+ - GPL-3.0-or-later
126
126
  metadata:
127
127
  source_code_uri: https://github.com/decko-commons/decko
128
128
  homepage_uri: https://decko.org