bel-search-sqlite 0.4.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 845c3dc297bd36958a2ee6032d780e67c50c5f52
4
+ data.tar.gz: f2537f99a8af03dd19a2450b1462afff08540963
5
+ SHA512:
6
+ metadata.gz: ca6ac55e19a601e015f5dbcca3da5407482cf77918d6a2afd49ff6aedff0e067c3ff5d87dcc52f16992c60300dff3e7da98ed3303dc5abe03799dcaf7c547ceb
7
+ data.tar.gz: 674a67780673e8eb46d8ac360a3906de7742ec5155aef597383fc5cd417cbb7421f4ae57671e32f662ba94f6f296d267f2e692a7dd4b24a0550e772b6799d74e
@@ -0,0 +1,69 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'bel-search-sqlite'
3
+ spec.version = '0.4.0.beta1'
4
+ spec.summary = '''
5
+ Resource search plugin for bel.rb using Sqlite FTS.
6
+ '''.gsub(%r{^\s+}, ' ').gsub(%r{\n}, '')
7
+ spec.description = '''
8
+ A resource search plugin for bel.rb that uses FTS tables in
9
+ Sqlite to search annotation and namespace values. Built to
10
+ run on MRI to take advantage of C extensions.
11
+ '''.gsub(%r{^\s+}, ' ').gsub(%r{\n}, '')
12
+ spec.license = 'Apache-2.0'
13
+ spec.authors = [
14
+ 'Anthony Bargnesi',
15
+ ]
16
+ spec.email = [
17
+ 'abargnesi@selventa.com',
18
+ ]
19
+ spec.files = [
20
+ Dir.glob('lib/**/*.{rb,erb}'),
21
+ __FILE__,
22
+ 'CHANGELOG.md',
23
+ 'LICENSE',
24
+ 'INSTALL.md',
25
+ 'README.md',
26
+ ].flatten!
27
+ spec.executables = Dir.glob('bin/*').map(&File.method(:basename))
28
+ spec.homepage = 'https://github.com/OpenBEL/bel.rb-search-plugin'
29
+ spec.rdoc_options = [
30
+ '--title', 'BEL Resource Search - Sqlite',
31
+ '--main', 'README.md',
32
+ '--line-numbers',
33
+ 'CHANGELOG.md',
34
+ 'LICENSE',
35
+ 'INSTALL.md',
36
+ 'README.md',
37
+ ]
38
+
39
+ spec.platform = 'ruby'
40
+ spec.required_ruby_version = '>= 2.0.0'
41
+ spec.add_runtime_dependency 'sequel', '4.28.0'
42
+ spec.add_runtime_dependency 'sqlite3', '1.3.11'
43
+ spec.post_install_message = %Q{
44
+ ******************************
45
+ * bel-search-sqlite plugin *
46
+ ******************************
47
+ Thank you for installing the bel-search-sqlite plugin to bel.rb.
48
+
49
+ This plugin is built to run on Ruby and uses sqlite3 + C
50
+ extensions to access a SQLite database for full-text search of
51
+ annotation and namespace values.
52
+
53
+ To verify the bel-search-sqlite plugin can be used by bel.rb
54
+ execute the bel.rb command:
55
+
56
+ bel plugins --list
57
+
58
+ To access this within bel.rb execute the following ruby code:
59
+
60
+ require 'bel'
61
+ search_plugin = BEL::Resource::Search.plugins[:sqlite]
62
+ search_plugin.create_search(
63
+ :database => 'resources.db'
64
+ )
65
+
66
+ }
67
+ end
68
+ # vim: ft=ruby ts=2 sw=2:
69
+ # encoding: utf-8
@@ -0,0 +1,9 @@
1
+ # Change Log
2
+ All notable changes to bel-search-sqlite will be documented in this file. The curated log begins at changes to version 0.1.0.
3
+
4
+ This project adheres to [Semantic Versioning](http://semver.org/).
5
+
6
+ ## [0.1.0][0.1.0] - 2015-11-19
7
+ ### Fixed
8
+ ### Changed
9
+ ### Added
@@ -0,0 +1,19 @@
1
+ Install
2
+ =======
3
+
4
+ This library requires [Ruby](https://www.ruby-lang.org) (**>= 2.0.0**). See [how to install ruby](https://github.com/OpenBEL/bel.rb-search-sqlite/blob/master/INSTALL_RUBY.md).
5
+
6
+ Install from [RubyGems.org](http://rubygems.org/gems/bel-search-sqlite)
7
+
8
+ ```bash
9
+ gem install bel-search-sqlite
10
+ ```
11
+
12
+ Build from master branch
13
+
14
+ 1. Obtain source for master branch.
15
+ - `git clone git@github.com:OpenBEL/bel.rb-search-sqlite.git`
16
+
17
+ 2. Build
18
+ - `gem build bel-search-sqlite.gemspec`
19
+ - `gem install bel-search-sqlite-[VERSION].gem`
data/LICENSE ADDED
@@ -0,0 +1,191 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction, and
10
+ distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
13
+ owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all other entities
16
+ that control, are controlled by, or are under common control with that entity.
17
+ For the purposes of this definition, "control" means (i) the power, direct or
18
+ indirect, to cause the direction or management of such entity, whether by
19
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
20
+ outstanding shares, or (iii) beneficial ownership of such entity.
21
+
22
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
23
+ permissions granted by this License.
24
+
25
+ "Source" form shall mean the preferred form for making modifications, including
26
+ but not limited to software source code, documentation source, and configuration
27
+ files.
28
+
29
+ "Object" form shall mean any form resulting from mechanical transformation or
30
+ translation of a Source form, including but not limited to compiled object code,
31
+ generated documentation, and conversions to other media types.
32
+
33
+ "Work" shall mean the work of authorship, whether in Source or Object form, made
34
+ available under the License, as indicated by a copyright notice that is included
35
+ in or attached to the work (an example is provided in the Appendix below).
36
+
37
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
38
+ is based on (or derived from) the Work and for which the editorial revisions,
39
+ annotations, elaborations, or other modifications represent, as a whole, an
40
+ original work of authorship. For the purposes of this License, Derivative Works
41
+ shall not include works that remain separable from, or merely link (or bind by
42
+ name) to the interfaces of, the Work and Derivative Works thereof.
43
+
44
+ "Contribution" shall mean any work of authorship, including the original version
45
+ of the Work and any modifications or additions to that Work or Derivative Works
46
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work
47
+ by the copyright owner or by an individual or Legal Entity authorized to submit
48
+ on behalf of the copyright owner. For the purposes of this definition,
49
+ "submitted" means any form of electronic, verbal, or written communication sent
50
+ to the Licensor or its representatives, including but not limited to
51
+ communication on electronic mailing lists, source code control systems, and
52
+ issue tracking systems that are managed by, or on behalf of, the Licensor for
53
+ the purpose of discussing and improving the Work, but excluding communication
54
+ that is conspicuously marked or otherwise designated in writing by the copyright
55
+ owner as "Not a Contribution."
56
+
57
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
58
+ of whom a Contribution has been received by Licensor and subsequently
59
+ incorporated within the Work.
60
+
61
+ 2. Grant of Copyright License.
62
+
63
+ Subject to the terms and conditions of this License, each Contributor hereby
64
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
65
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
66
+ publicly display, publicly perform, sublicense, and distribute the Work and such
67
+ Derivative Works in Source or Object form.
68
+
69
+ 3. Grant of Patent License.
70
+
71
+ Subject to the terms and conditions of this License, each Contributor hereby
72
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
73
+ irrevocable (except as stated in this section) patent license to make, have
74
+ made, use, offer to sell, sell, import, and otherwise transfer the Work, where
75
+ such license applies only to those patent claims licensable by such Contributor
76
+ that are necessarily infringed by their Contribution(s) alone or by combination
77
+ of their Contribution(s) with the Work to which such Contribution(s) was
78
+ submitted. If You institute patent litigation against any entity (including a
79
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
80
+ Contribution incorporated within the Work constitutes direct or contributory
81
+ patent infringement, then any patent licenses granted to You under this License
82
+ for that Work shall terminate as of the date such litigation is filed.
83
+
84
+ 4. Redistribution.
85
+
86
+ You may reproduce and distribute copies of the Work or Derivative Works thereof
87
+ in any medium, with or without modifications, and in Source or Object form,
88
+ provided that You meet the following conditions:
89
+
90
+ You must give any other recipients of the Work or Derivative Works a copy of
91
+ this License; and
92
+ You must cause any modified files to carry prominent notices stating that You
93
+ changed the files; and
94
+ You must retain, in the Source form of any Derivative Works that You distribute,
95
+ all copyright, patent, trademark, and attribution notices from the Source form
96
+ of the Work, excluding those notices that do not pertain to any part of the
97
+ Derivative Works; and
98
+ If the Work includes a "NOTICE" text file as part of its distribution, then any
99
+ Derivative Works that You distribute must include a readable copy of the
100
+ attribution notices contained within such NOTICE file, excluding those notices
101
+ that do not pertain to any part of the Derivative Works, in at least one of the
102
+ following places: within a NOTICE text file distributed as part of the
103
+ Derivative Works; within the Source form or documentation, if provided along
104
+ with the Derivative Works; or, within a display generated by the Derivative
105
+ Works, if and wherever such third-party notices normally appear. The contents of
106
+ the NOTICE file are for informational purposes only and do not modify the
107
+ License. You may add Your own attribution notices within Derivative Works that
108
+ You distribute, alongside or as an addendum to the NOTICE text from the Work,
109
+ provided that such additional attribution notices cannot be construed as
110
+ modifying the License.
111
+ You may add Your own copyright statement to Your modifications and may provide
112
+ additional or different license terms and conditions for use, reproduction, or
113
+ distribution of Your modifications, or for any such Derivative Works as a whole,
114
+ provided Your use, reproduction, and distribution of the Work otherwise complies
115
+ with the conditions stated in this License.
116
+
117
+ 5. Submission of Contributions.
118
+
119
+ Unless You explicitly state otherwise, any Contribution intentionally submitted
120
+ for inclusion in the Work by You to the Licensor shall be under the terms and
121
+ conditions of this License, without any additional terms or conditions.
122
+ Notwithstanding the above, nothing herein shall supersede or modify the terms of
123
+ any separate license agreement you may have executed with Licensor regarding
124
+ such Contributions.
125
+
126
+ 6. Trademarks.
127
+
128
+ This License does not grant permission to use the trade names, trademarks,
129
+ service marks, or product names of the Licensor, except as required for
130
+ reasonable and customary use in describing the origin of the Work and
131
+ reproducing the content of the NOTICE file.
132
+
133
+ 7. Disclaimer of Warranty.
134
+
135
+ Unless required by applicable law or agreed to in writing, Licensor provides the
136
+ Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
137
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
138
+ including, without limitation, any warranties or conditions of TITLE,
139
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
140
+ solely responsible for determining the appropriateness of using or
141
+ redistributing the Work and assume any risks associated with Your exercise of
142
+ permissions under this License.
143
+
144
+ 8. Limitation of Liability.
145
+
146
+ In no event and under no legal theory, whether in tort (including negligence),
147
+ contract, or otherwise, unless required by applicable law (such as deliberate
148
+ and grossly negligent acts) or agreed to in writing, shall any Contributor be
149
+ liable to You for damages, including any direct, indirect, special, incidental,
150
+ or consequential damages of any character arising as a result of this License or
151
+ out of the use or inability to use the Work (including but not limited to
152
+ damages for loss of goodwill, work stoppage, computer failure or malfunction, or
153
+ any and all other commercial damages or losses), even if such Contributor has
154
+ been advised of the possibility of such damages.
155
+
156
+ 9. Accepting Warranty or Additional Liability.
157
+
158
+ While redistributing the Work or Derivative Works thereof, You may choose to
159
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
160
+ other liability obligations and/or rights consistent with this License. However,
161
+ in accepting such obligations, You may act only on Your own behalf and on Your
162
+ sole responsibility, not on behalf of any other Contributor, and only if You
163
+ agree to indemnify, defend, and hold each Contributor harmless for any liability
164
+ incurred by, or claims asserted against, such Contributor by reason of your
165
+ accepting any such warranty or additional liability.
166
+
167
+ END OF TERMS AND CONDITIONS
168
+
169
+ APPENDIX: How to apply the Apache License to your work
170
+
171
+ To apply the Apache License to your work, attach the following boilerplate
172
+ notice, with the fields enclosed by brackets "[]" replaced with your own
173
+ identifying information. (Don't include the brackets!) The text should be
174
+ enclosed in the appropriate comment syntax for the file format. We also
175
+ recommend that a file or class name and description of purpose be included on
176
+ the same "printed page" as the copyright notice for easier identification within
177
+ third-party archives.
178
+
179
+ Copyright 2013 OpenBEL Consortium
180
+
181
+ Licensed under the Apache License, Version 2.0 (the "License");
182
+ you may not use this file except in compliance with the License.
183
+ You may obtain a copy of the License at
184
+
185
+ http://www.apache.org/licenses/LICENSE-2.0
186
+
187
+ Unless required by applicable law or agreed to in writing, software
188
+ distributed under the License is distributed on an "AS IS" BASIS,
189
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
190
+ See the License for the specific language governing permissions and
191
+ limitations under the License.
@@ -0,0 +1,44 @@
1
+ sqlite3 resource search
2
+ =======================
3
+
4
+ This implements a Resource Search plugin for [bel.rb](http://github.com/OpenBEL/bel.rb) backed by a [Sqlite3](http://sqlite.org/) database. The database utilizes Sqlite's FTS tables to provide full-text query over BEL Resource concepts.
5
+
6
+ Features
7
+ --------
8
+
9
+ - Plugs in to bel.rb as a Resource Search API implementation.
10
+ - Efficient full-text searching.
11
+
12
+ Todo
13
+ ----
14
+
15
+ - Implement sqlite3 database creation as an executable. Currently code to build the sqlite3 FTS database exists at [rdf-misc](https://github.com/OpenBEL/rdf-misc).
16
+
17
+ How can I use this?
18
+ ------------------
19
+
20
+ bel.rb provides an [approach to plugins](https://github.com/OpenBEL/bel.rb/wiki/Plugins-in-bel.rb) that is meant to be uncomplicated. The following steps will get you started:
21
+
22
+ - Build gem with `gem build .gemspec` and install with `gem install bel-search-sqlite-1.0.0.gem`.
23
+ - on JRuby, build gem with `gem build .gemspec-java` and install with `gem install bel-search-sqlite-1.0.0-java.gem`.
24
+ - Now you have this plugin installed and ready for use in bel.rb!
25
+ - With bel.rb installed run the command `bel plugins` to list available plugins.
26
+
27
+ ```bash
28
+ $ bin/bel plugins
29
+ Resource Search plugins
30
+ -----------------------
31
+
32
+ Name: Resource search on sqlite FTS
33
+ Description: A resource search implementation using sqlite FTS capabilities.
34
+ ```
35
+
36
+ - To create the search implementation in Ruby try:
37
+
38
+ ```ruby
39
+ search_plugin = BEL::Resource::Search.plugins[:sqlite]
40
+
41
+ search_plugin.create_search(:database_file => 'resources.db')
42
+ ```
43
+
44
+ - Enjoy FTS goodness with Sqlite!
@@ -0,0 +1,44 @@
1
+ require 'bel'
2
+
3
+ module BEL::Resource::Search::Plugins
4
+
5
+ module Sqlite
6
+
7
+ extend BEL::Resource::Search::ClassMethods
8
+
9
+ NAME = 'Resource search on sqlite FTS'
10
+ DESCRIPTION = 'A resource search implementation using sqlite FTS capabilities.'
11
+
12
+ # @see BEL::Resource::Search::ClassMethods#create_search
13
+ def self.create_search(options = {})
14
+ database_file = options[:database_file]
15
+ unless database_file
16
+ raise ArgumentError.new(':database_file option must be provided')
17
+ end
18
+
19
+ # database abstraction
20
+ require 'sequel'
21
+ # Resource search implementation
22
+ require_relative 'sqlite/sqlite3'
23
+
24
+ case RUBY_ENGINE
25
+ when "jruby"
26
+ require 'jdbc/sqlite3'
27
+ Sqlite3FTS.new(Sequel.connect("jdbc:sqlite:#{database_file}"))
28
+ when "ruby", "rbx"
29
+ require 'sqlite3'
30
+ Sqlite3FTS.new(Sequel.connect("sqlite://#{database_file}"))
31
+ else
32
+ raise RuntimeError.new("Unsupported ruby engine: #{RUBY_ENGINE}")
33
+ end
34
+ end
35
+
36
+ def self.name
37
+ NAME
38
+ end
39
+
40
+ def self.description
41
+ DESCRIPTION
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,57 @@
1
+ require 'bel'
2
+ require 'erb'
3
+ require 'pathname'
4
+ require 'sequel'
5
+
6
+ module BEL::Resource::Search::Plugins
7
+ module Sqlite
8
+
9
+ class Sqlite3FTS
10
+ include BEL::Resource::Search
11
+ include BEL::Resource::Search::API
12
+
13
+ QUERY_TEMPLATE = ERB.new(
14
+ File.read(Pathname(File.dirname(__FILE__)) + 'sqlite3_template.erb'),
15
+ nil,
16
+ '>'
17
+ )
18
+ PREPARED_STATEMENTS = {}
19
+
20
+ def initialize(db)
21
+ @db = db
22
+ end
23
+
24
+ # @see BEL::Resource::Search::API#search
25
+ def search(query_expression, concept_type = nil, scheme_uri = nil, species = nil, options = {})
26
+ # required SQL parameters
27
+ match = query_expression.encode('UTF-8')
28
+ start = (options.delete(:start) || 0).to_i
29
+ size = options.delete(:size) || -1
30
+ if size.to_i.zero?
31
+ fail ArgumentError.new(":size is zero")
32
+ end
33
+
34
+ # optional SQL parameters
35
+ options = {
36
+ :concept_type => (concept_type ? concept_type.to_s.encode('UTF-8') : nil),
37
+ :scheme_uri => (scheme_uri ? scheme_uri.to_s.encode('UTF-8') : nil),
38
+ :species => (species ? species.to_s.encode('UTF-8') : nil),
39
+ }
40
+ options.keep_if { |key, value| value != nil }
41
+
42
+ query = QUERY_TEMPLATE.result(binding)
43
+ enum = @db.fetch(query, :match => match, :start => start, :size => size)
44
+
45
+ if enum.respond_to? :lazy
46
+ enum = enum.lazy
47
+ end
48
+
49
+ enum.map { |row|
50
+ row_hash = row.to_hash
51
+ row_hash[:alt_labels] = (row_hash[:alt_labels] || '').split('|')
52
+ SearchResult.new(row_hash)
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,18 @@
1
+ SELECT
2
+ distinct uri, scheme_uri, species, identifier, pref_label, title, alt_labels,
3
+ snippet(concepts_fts, '<<', '>>', '...', -1) AS snippet
4
+ FROM
5
+ concepts_fts
6
+ WHERE
7
+ concepts_fts MATCH :match
8
+ <% [:concept_type, :scheme_type, :scheme_uri, :species].each do |column| %>
9
+ <% if options[column] %>
10
+
11
+ AND <%= column %> = <%= ":#{column}" %>
12
+
13
+ <% end %>
14
+ <% end %>
15
+ ORDER BY
16
+ length(pref_label) ASC
17
+ LIMIT :size
18
+ OFFSET :start
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bel-search-sqlite
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0.beta1
5
+ platform: ruby
6
+ authors:
7
+ - Anthony Bargnesi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sequel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 4.28.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 4.28.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.11
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.11
41
+ description: " A resource search plugin for bel.rb that uses FTS tables in Sqlite
42
+ to search annotation and namespace values. Built to run on MRI to take advantage
43
+ of C extensions. "
44
+ email:
45
+ - abargnesi@selventa.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gemspec"
51
+ - CHANGELOG.md
52
+ - INSTALL.md
53
+ - LICENSE
54
+ - README.md
55
+ - lib/bel/resource/search/plugins/sqlite.rb
56
+ - lib/bel/resource/search/plugins/sqlite/sqlite3.rb
57
+ - lib/bel/resource/search/plugins/sqlite/sqlite3_template.erb
58
+ homepage: https://github.com/OpenBEL/bel.rb-search-plugin
59
+ licenses:
60
+ - Apache-2.0
61
+ metadata: {}
62
+ post_install_message: |2+
63
+
64
+ ******************************
65
+ * bel-search-sqlite plugin *
66
+ ******************************
67
+ Thank you for installing the bel-search-sqlite plugin to bel.rb.
68
+
69
+ This plugin is built to run on Ruby and uses sqlite3 + C
70
+ extensions to access a SQLite database for full-text search of
71
+ annotation and namespace values.
72
+
73
+ To verify the bel-search-sqlite plugin can be used by bel.rb
74
+ execute the bel.rb command:
75
+
76
+ bel plugins --list
77
+
78
+ To access this within bel.rb execute the following ruby code:
79
+
80
+ require 'bel'
81
+ search_plugin = BEL::Resource::Search.plugins[:sqlite]
82
+ search_plugin.create_search(
83
+ :database => 'resources.db'
84
+ )
85
+
86
+ rdoc_options:
87
+ - "--title"
88
+ - BEL Resource Search - Sqlite
89
+ - "--main"
90
+ - README.md
91
+ - "--line-numbers"
92
+ - CHANGELOG.md
93
+ - LICENSE
94
+ - INSTALL.md
95
+ - README.md
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.0
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">"
106
+ - !ruby/object:Gem::Version
107
+ version: 1.3.1
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.4.5.1
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Resource search plugin for bel.rb using Sqlite FTS.
114
+ test_files: []
115
+ has_rdoc: