opener-opinion-detector 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e970449786cd7a7d5c31976bb12fbdcb784ee724
4
- data.tar.gz: c4ef6b925a24d5385f5552f0c485998060c7bbcc
3
+ metadata.gz: 31c4caf46aa2fa93dd88d5138cbd495325783565
4
+ data.tar.gz: 4e5d503fcc00e415d5bb0322a0adc0260d5b2cde
5
5
  SHA512:
6
- metadata.gz: 624550431e66fa3eed2286b53371ac883510f7f473aba7671e129f5502303ecf92af6f43fa876d453da621b5eb6dbc6bdb2f309ee0d2542f4918a796989961b6
7
- data.tar.gz: b5c059110b0940e0a917a118f688778d15637c22d5bed944098cfef11ca0da60765781b51e05c084d41ef4b7511bb51099628a88710616bfc75ba8c0754d8ad0
6
+ metadata.gz: d0ebc3136cec62b3178af44eacb6f49d7498a7806fa160fc802b4c496e5695728c1c3b19181e2972a48cf8f66fe5d49957fc1b96a8f9c38524ca22dfa54ffdf9
7
+ data.tar.gz: 7edbf31a74dae022a6ca3e16eb6adb848bb00d5376fa9bf66d22ed8d144d6a19674ebbc00960e6d6144ca9cff7b0fde21b9393efbb80254e19fb84a209dcd02c
data/LICENSE.txt ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2014 OpeNER Project Consortium
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md CHANGED
@@ -1,67 +1,72 @@
1
- Opinion Detector
2
- ----------------
1
+ # Opinion Detector
3
2
 
4
3
  Component that wraps a machine learned Opinion Detector in Python.
5
4
 
6
- ### Confused by some terminology?
5
+ ## Confused by some terminology?
7
6
 
8
- This software is part of a larger collection of natural language processing tools known as "the OpeNER project". You can find more information about the project at [the OpeNER portal](http://opener-project.github.io). There you can also find references to terms like KAF (an XML standard to represent linguistic annotations in texts), component, cores, scenario's and pipelines.
7
+ This software is part of a larger collection of natural language processing
8
+ tools known as "the OpeNER project". You can find more information about the
9
+ project at [the OpeNER portal](http://opener-project.github.io). There you can
10
+ also find references to terms like KAF (an XML standard to represent linguistic
11
+ annotations in texts), component, cores, scenario's and pipelines.
9
12
 
10
- Quick Use Example
11
- -----------------
13
+ ## Quick Use Example
12
14
 
13
15
  Installing the opinion-detector can be done by executing:
14
16
 
15
17
  gem install opener-opinion-detector
16
18
 
17
- Please bare in mind that all components in OpeNER take KAF as an input and output KAF by default.
19
+ Please keep in mind that all components in OpeNER take KAF as an input and
20
+ output KAF by default.
18
21
 
19
22
  ### Command line interface
20
23
 
21
- You should now be able to call the opinion detector as a regular shell command: by its name. Once installed the gem normally sits in your path so you can call it directly from anywhere.
24
+ You should now be able to call the opinion detector as a regular shell command:
25
+ by its name. Once installed the gem normally sits in your path so you can call
26
+ it directly from anywhere.
22
27
 
23
- This application reads a text from standard input in order process it. It needs models to work. There is a free set of models available trained on a news corpus.
28
+ This application reads a text from standard input in order process it. It needs
29
+ models to work. There is a free set of models available trained on a news
30
+ corpus.
24
31
 
25
32
  cat englist.kaf | opinion-detector \
26
33
  --resource-path /path/to/models \
27
34
  --resource-url http://opener.s3.amazonaws.com/Models/final_models_news_20140522.zip
28
35
 
29
- You have to download the models separately. You can download them here:
30
-
31
- This will output:
32
-
33
- ```
34
-
35
- ```
36
-
37
36
  ### Webservices
38
37
 
39
38
  You can launch a webservice by executing:
40
39
 
41
40
  opinion-detector-server
42
41
 
43
- This will launch a mini webserver with the webservice. It defaults to port 9292, so you can access it at <http://localhost:9292>.
42
+ This will launch a mini webserver with the webservice. It defaults to port 9292,
43
+ so you can access it at <http://localhost:9292>.
44
44
 
45
- To launch it on a different port provide the `-p [port-number]` option like this:
45
+ To launch it on a different port provide the `-p [port-number]` option like
46
+ this:
46
47
 
47
48
  opinion-detector-server -p 1234
48
49
 
49
50
  It then launches at <http://localhost:1234>
50
51
 
51
- Documentation on the Webservice is provided by surfing to the urls provided above. For more information on how to launch a webservice run the command with the ```-h``` option.
52
-
52
+ Documentation on the Webservice is provided by surfing to the urls provided
53
+ above. For more information on how to launch a webservice run the command with
54
+ the `--help` option.
53
55
 
54
56
  ### Daemon
55
57
 
56
- Last but not least the opinion detector comes shipped with a daemon that can read jobs (and write) jobs to and from Amazon SQS queues. For more information type:
58
+ Last but not least the opinion detector comes shipped with a daemon that can
59
+ read jobs (and write) jobs to and from Amazon SQS queues. For more information
60
+ type:
57
61
 
58
62
  opinion-detector-daemon -h
59
63
 
64
+ ## Description of dependencies
60
65
 
61
- Description of dependencies
62
- ---------------------------
63
-
64
- This component runs best if you run it in an environment suited for OpeNER components. You can find an installation guide and helper tools in the [OpeNER installer](https://github.com/opener-project/opener-installer) and an [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
66
+ This component runs best if you run it in an environment suited for OpeNER
67
+ components. You can find an installation guide and helper tools in the
68
+ [OpeNER installer](https://github.com/opener-project/opener-installer) and an
69
+ [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
65
70
 
66
71
  At least you need the following system setup:
67
72
 
@@ -71,38 +76,34 @@ At least you need the following system setup:
71
76
  * Python 2.6 or newer
72
77
  * lxml
73
78
 
74
- Domain Adaption
75
- ---------------
79
+ ## Domain Adaption
76
80
 
77
- TODO
81
+ TODO
78
82
 
79
- Language Extension
80
- ------------------
83
+ ## Language Extension
81
84
 
82
- TODO
85
+ TODO
83
86
 
84
- The Core
85
- --------
87
+ ## The Core
86
88
 
87
- The component is a fat wrapper around the actual language technology core. You can find the core technolies in the following repository
89
+ The component is a fat wrapper around the actual language technology core. You
90
+ can find the core technolies in the following repository
88
91
 
89
92
  * [opinion-detector-base](https://github.com/opener-project/opinion-detector-base)
90
93
 
91
- Where to go from here
92
- ---------------------
94
+ ## Where to go from here
93
95
 
94
96
  * [Check the project website](http://opener-project.github.io)
95
97
  * [Checkout the webservice](http://opener.olery.com/opinion-detector)
96
98
 
97
- Report problem/Get help
98
- -----------------------
99
+ ## Report problem/Get help
99
100
 
100
- If you encounter problems, please email <support@opener-project.eu> or leave an issue in the
101
+ If you encounter problems, please email <support@opener-project.eu> or leave an
102
+ issue in the
101
103
  [issue tracker](https://github.com/opener-project/opinion-detector/issues).
102
104
 
103
105
 
104
- Contributing
105
- ------------
106
+ ## Contributing
106
107
 
107
108
  1. Fork it <http://github.com/opener-project/opinion-detector/fork>
108
109
  2. Create your feature branch (`git checkout -b my-new-feature`)
data/bin/opinion-detector CHANGED
@@ -1,6 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
+
3
+ require 'opener/core'
4
+
2
5
  require_relative '../lib/opener/opinion_detector'
3
6
 
4
- cli = Opener::OpinionDetector::CLI.new(:args => ARGV)
7
+ switcher = Opener::Core::ResourceSwitcher.new
8
+ cli = Opener::OpinionDetector::CLI.new
9
+
10
+ switcher.bind(cli.parser)
5
11
 
6
- cli.run(STDIN.tty? ? nil : STDIN.read)
12
+ cli.run
@@ -1,10 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'opener/core'
3
4
  require 'opener/daemons'
4
5
 
5
- exec_path = File.expand_path('../../exec/opinion-detector.rb', __FILE__)
6
+ switcher = Opener::Core::ResourceSwitcher.new
7
+ controller = Opener::Daemons::Controller.new(
8
+ :name => 'opener-opinion-detector',
9
+ :exec_path => File.expand_path('../../exec/opinion-detector.rb', __FILE__)
10
+ )
6
11
 
7
- Opener::Daemons::Controller.new(
8
- :name => 'opinion-detector',
9
- :exec_path => exec_path
10
- )
12
+ switcher.bind(controller.parser.parser)
13
+
14
+ controller.run
@@ -1,54 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'puma/cli'
4
- require 'optparse'
5
3
  require 'opener/core'
4
+ require 'opener/webservice'
6
5
 
7
- rack_config = File.expand_path('../../config.ru', __FILE__)
8
- switcher = Opener::Core::ResourceSwitcher.new
9
- puma_args = [rack_config]
10
- switcher_opts = {}
6
+ switcher = Opener::Core::ResourceSwitcher.new
7
+ parser = Opener::Webservice::OptionParser.new(
8
+ 'opener-opinion-detector',
9
+ File.expand_path('../../config.ru', __FILE__)
10
+ )
11
11
 
12
- option_parser = OptionParser.new do |opts|
13
- opts.banner = "Usage: #{File.basename($0)} [OPTIONS]"
12
+ switcher.bind(parser.parser)
14
13
 
15
- opts.separator "\nOptions:\n\n"
16
-
17
- opts.on('-h', '--help', 'Shows this help message') do
18
- abort option_parser.to_s
19
- end
20
-
21
- opts.on('-S', '--state PATH', 'Where to store the state details') do |val|
22
- puma_args += ['--state', val]
23
- end
24
-
25
- opts.on('-b', '--bind URI', 'URI to bind to (tcp://, unix://, ssl://)') do |val|
26
- puma_args += ['--bind', val]
27
- end
28
-
29
- opts.on('--pidfile PATH', 'Use PATH as a pidfile') do |val|
30
- puma_args += ['--pidfile', val]
31
- end
32
-
33
- opts.on('--daemon', 'Daemonize the server into the background') do |val|
34
- puma_args << '--daemon'
35
- end
36
-
37
- opts.on('-e', '--environment ENVIRONMENT', 'The environment to use') do |val|
38
- puma_args += ['--environment', val]
39
- end
40
-
41
- opts.separator "\nResource Options:\n\n"
42
-
43
- switcher.bind(opts, switcher_opts)
44
- end
45
-
46
- option_parser.parse!(ARGV)
47
-
48
- switcher.install(switcher_opts)
49
-
50
- # Puma on JRuby does some weird stuff with forking/exec. As a result of this we
51
- # *have to* update ARGV as otherwise running Puma as a daemon does not work.
52
- ARGV.replace(puma_args)
53
-
54
- Puma::CLI.new(ARGV).run
14
+ parser.run
@@ -1,19 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'opener/daemons'
4
- require 'opener/core'
5
4
 
6
5
  require_relative '../lib/opener/opinion_detector'
7
6
 
8
- switcher = Opener::Core::ResourceSwitcher.new
9
- switcher_opts = {}
7
+ daemon = Opener::Daemons::Daemon.new(Opener::OpinionDetector)
10
8
 
11
- parser = Opener::Daemons::OptParser.new do |opts|
12
- switcher.bind(opts, switcher_opts)
13
- end
14
-
15
- options = parser.parse!(ARGV)
16
- daemon = Opener::Daemons::Daemon.new(Opener::OpinionDetector, options)
17
-
18
- switcher.install(switcher_opts)
19
9
  daemon.start
@@ -1,8 +1,8 @@
1
- require 'opener/opinion_detectors/base'
2
1
  require 'open3'
2
+
3
3
  require 'nokogiri'
4
- require 'optparse'
5
- require 'opener/core'
4
+ require 'slop'
5
+ require 'opener/opinion_detectors/base'
6
6
 
7
7
  require_relative 'opinion_detector/version'
8
8
  require_relative 'opinion_detector/cli'
@@ -18,50 +18,55 @@ module Opener
18
18
  class OpinionDetector
19
19
  attr_reader :options
20
20
 
21
- ##
22
- # Hash containing the default options to use.
23
- #
24
- # @return [Hash]
25
- #
26
- DEFAULT_OPTIONS = {
27
- :args => []
28
- }.freeze
29
-
30
21
  ##
31
22
  # @param [Hash] options
32
23
  #
33
- # @option options [Array] :args Collection of arbitrary arguments to pass
34
- # to the individual tokenizer commands.
24
+ # @see [Opener::OpinionDetectors::Base#initialize]
35
25
  #
36
26
  def initialize(options = {})
37
- @options = DEFAULT_OPTIONS.merge(options)
27
+ @options = options
38
28
  end
39
29
 
40
30
  ##
41
- # Processes the input and returns an array containing the output of STDOUT,
42
- # STDERR and an object containing process information.
31
+ # Processes the input KAF document and returns a new KAF document containing
32
+ # the results.
43
33
  #
44
34
  # @param [String] input
45
35
  # @return [String]
46
36
  #
47
37
  def run(input)
48
- begin
49
- language = language_from_kaf(input)
38
+ language = language_from_kaf(input)
50
39
 
51
- unless valid_language?(language)
52
- raise ArgumentError, "The specified language (#{language}) is invalid"
53
- end
40
+ unless valid_language?(language)
41
+ raise ArgumentError, "The specified language (#{language}) is invalid"
42
+ end
54
43
 
55
- kernel = language_constant(language).new(:args => options[:args])
44
+ kernel = language_constant(language).new(kernel_options)
56
45
 
57
- return kernel.run(input)
58
- rescue Exception => error
59
- return Opener::Core::ErrorLayer.new(input, error.message, self.class).add
60
- end
46
+ return kernel.run(input)
61
47
  end
62
48
 
63
49
  protected
64
50
 
51
+ ##
52
+ # Returns the options to use for the kernel.
53
+ #
54
+ # @return [Hash]
55
+ #
56
+ def kernel_options
57
+ return options.merge(:resource_path => models_path)
58
+ end
59
+
60
+ ##
61
+ # Returns the path to the models to use.
62
+ #
63
+ # @return [String]
64
+ #
65
+ def models_path
66
+ return options[:resource_path] || ENV['RESOURCE_PATH'] ||
67
+ ENV['OPINION_DETECTOR_MODELS_PATH']
68
+ end
69
+
65
70
  ##
66
71
  # Extracts the language from a KAF document.
67
72
  #
@@ -1,85 +1,65 @@
1
- require 'opener/core'
2
-
3
1
  module Opener
4
2
  class OpinionDetector
5
3
  ##
6
- # CLI wrapper around {Opener::OpinionDetector} using OptionParser.
4
+ # CLI wrapper around {Opener::OpinionDetector} using Slop.
7
5
  #
8
- # @!attribute [r] options
9
- # @return [Hash]
10
- # @!attribute [r] option_parser
11
- # @return [OptionParser]
6
+ # @!attribute [r] parser
7
+ # @return [Slop]
12
8
  #
13
9
  class CLI
14
- attr_reader :options, :option_parser, :resource_switcher
10
+ attr_reader :parser
11
+
12
+ def initialize
13
+ @parser = configure_slop
14
+ end
15
15
 
16
16
  ##
17
- # @param [Hash] options
17
+ # @param [Array] argv
18
18
  #
19
- def initialize(options = {})
20
- @options = DEFAULT_OPTIONS.merge(options)
21
- @resource_switcher = Opener::Core::ResourceSwitcher.new
22
-
23
- @option_parser = OptionParser.new do |opts|
24
- opts.program_name = 'opinion-detector'
25
- opts.summary_indent = ' '
26
-
27
- resource_switcher.bind(opts, @options)
28
-
29
- opts.on('-h', '--help', 'Shows this help message') do
30
- show_help
31
- end
19
+ def run(argv = ARGV)
20
+ parser.parse(argv)
21
+ end
32
22
 
33
- opts.on('-v', '--version', 'Shows the current version') do
34
- show_version
35
- end
23
+ ##
24
+ # @return [Slop]
25
+ #
26
+ def configure_slop
27
+ return Slop.new(:strict => false, :indent => 2, :help => true) do
28
+ banner 'Usage: opinion-detector [OPTIONS]'
36
29
 
37
- opts.on('-l', '--log', 'Enables logging to STDERR') do
38
- @options[:logging] = true
39
- end
30
+ separator <<-EOF.chomp
40
31
 
41
- opts.on('-d', '--domain DOMAIN_NAME', 'Domain name of the models.') do |v|
42
- @options[:domain] = v
43
- end
32
+ About:
44
33
 
45
- opts.separator <<-EOF
34
+ Machine learning based opinion detection for various languages such as Dutch
35
+ and English. This command reads input from STDIN.
46
36
 
47
- Examples:
37
+ Example:
48
38
 
49
- cat example.kaf | #{opts.program_name}
50
- cat example.kaf | #{opts.program_name} -l # Enables logging to STDERR
39
+ cat some_file.kaf | opinion-detector
51
40
  EOF
52
- end
53
41
 
54
- option_parser.parse!(options[:args])
55
- resource_switcher.install(@options)
56
- end
42
+ separator "\nOptions:\n"
57
43
 
58
- ##
59
- # @param [String] input
60
- #
61
- def run(input)
62
- option_parser.parse!(options[:args])
44
+ on :v, :version, 'Shows the current version' do
45
+ abort "opinion-detector v#{VERSION} on #{RUBY_DESCRIPTION}"
46
+ end
63
47
 
64
- detector = OpinionDetector.new(options)
48
+ on :d=, :domain=, 'The domain to use for the models',
49
+ :as => String,
50
+ :default => 'hotel'
65
51
 
66
- puts detector.run(input)
67
- end
52
+ run do |opts, args|
53
+ detector = OpinionDetector.new(
54
+ :args => args,
55
+ :domain => opts[:domain]
56
+ )
68
57
 
69
- private
58
+ input = STDIN.tty? ? nil : STDIN.read
70
59
 
71
- ##
72
- # Shows the help message and exits the program.
73
- #
74
- def show_help
75
- abort option_parser.to_s
76
- end
77
-
78
- ##
79
- # Shows the version and exits the program.
80
- #
81
- def show_version
82
- abort "#{option_parser.program_name} v#{VERSION} on #{RUBY_DESCRIPTION}"
60
+ puts detector.run(input)
61
+ end
62
+ end
83
63
  end
84
64
  end # CLI
85
65
  end # OpinionDetector
@@ -1,5 +1,3 @@
1
- require 'sinatra/base'
2
- require 'httpclient'
3
1
  require 'opener/webservice'
4
2
 
5
3
  module Opener
@@ -7,23 +5,11 @@ module Opener
7
5
  ##
8
6
  # Opinion Detector server powered by Sinatra.
9
7
  #
10
- class Server < Webservice
8
+ class Server < Webservice::Server
11
9
  set :views, File.expand_path('../views', __FILE__)
12
- text_processor OpinionDetector
13
- accepted_params :input
14
10
 
15
- ##
16
- # @see Opener::Webservice#analyze
17
- #
18
- def analyze(*args)
19
- begin
20
- super
21
- # ArgumentErrors are used for invalid languages. These happen too often
22
- # so we'll supress them for now.
23
- rescue ArgumentError => error
24
- halt(400, error.message.strip)
25
- end
26
- end
11
+ self.text_processor = OpinionDetector
12
+ self.accepted_params = [:input]
27
13
  end # Server
28
14
  end # OpinionDetector
29
15
  end # Opener
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class OpinionDetector
3
- VERSION = "1.2.0"
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
@@ -10,24 +10,26 @@ Gem::Specification.new do |gem|
10
10
  gem.has_rdoc = "yard"
11
11
  gem.required_ruby_version = ">= 1.9.2"
12
12
 
13
+ gem.license = 'Apache 2.0'
14
+
13
15
  gem.files = Dir.glob([
14
16
  'lib/**/*',
15
17
  'config.ru',
16
18
  '*.gemspec',
17
19
  'README.md',
20
+ 'LICENSE.txt',
18
21
  'exec/**/*'
19
22
  ]).select { |file| File.file?(file) }
20
23
 
21
24
  gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
22
25
 
23
26
  gem.add_dependency 'opener-opinion-detector-base'
27
+ gem.add_dependency 'opener-daemons', '~> 2.2'
28
+ gem.add_dependency 'opener-webservice', '~> 2.1'
29
+ gem.add_dependency 'opener-core', '~> 2.2'
30
+
24
31
  gem.add_dependency 'nokogiri'
25
- gem.add_dependency 'sinatra', '~>1.4.2'
26
- gem.add_dependency 'httpclient'
27
- gem.add_dependency 'puma'
28
- gem.add_dependency 'opener-daemons'
29
- gem.add_dependency 'opener-core', '~> 1.0.2'
30
- gem.add_dependency 'opener-webservice'
32
+ gem.add_dependency 'slop', '~> 3.5'
31
33
 
32
34
  gem.add_development_dependency 'rspec'
33
35
  gem.add_development_dependency 'cucumber'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-opinion-detector
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - development@olery.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-23 00:00:00.000000000 Z
11
+ date: 2014-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opener-opinion-detector-base
@@ -25,63 +25,49 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogiri
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: sinatra
28
+ name: opener-daemons
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 1.4.2
33
+ version: '2.2'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: 1.4.2
40
+ version: '2.2'
55
41
  - !ruby/object:Gem::Dependency
56
- name: httpclient
42
+ name: opener-webservice
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ">="
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0'
47
+ version: '2.1'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ">="
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0'
54
+ version: '2.1'
69
55
  - !ruby/object:Gem::Dependency
70
- name: puma
56
+ name: opener-core
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ">="
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '0'
61
+ version: '2.2'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ">="
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: '2.2'
83
69
  - !ruby/object:Gem::Dependency
84
- name: opener-daemons
70
+ name: nokogiri
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -95,33 +81,19 @@ dependencies:
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: opener-core
84
+ name: slop
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 1.0.2
89
+ version: '3.5'
104
90
  type: :runtime
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 1.0.2
111
- - !ruby/object:Gem::Dependency
112
- name: opener-webservice
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
96
+ version: '3.5'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: rspec
127
99
  requirement: !ruby/object:Gem::Requirement
@@ -187,6 +159,7 @@ executables:
187
159
  extensions: []
188
160
  extra_rdoc_files: []
189
161
  files:
162
+ - LICENSE.txt
190
163
  - README.md
191
164
  - bin/opinion-detector
192
165
  - bin/opinion-detector-daemon
@@ -201,7 +174,8 @@ files:
201
174
  - lib/opener/opinion_detector/views/index.erb
202
175
  - opener-opinion-detector.gemspec
203
176
  homepage: http://opener-project.github.com/
204
- licenses: []
177
+ licenses:
178
+ - Apache 2.0
205
179
  metadata: {}
206
180
  post_install_message:
207
181
  rdoc_options: []