opener-property-tagger 2.3.0 → 3.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: ba38454a54296bebef5a3425186a419c79b573c5
4
- data.tar.gz: c915295cedee0c4cf7f4bbb4ac13b621811f165f
3
+ metadata.gz: 5cb450ee009322fb80dcb020c4d97d20ae2bc401
4
+ data.tar.gz: b9e51d6057763ea1c41c576adaa131dc8b48333f
5
5
  SHA512:
6
- metadata.gz: 60728a4b9a8d08a9856bb797b88f04522acde2ef12daeb104e8cd3379c514a73a0639536c8a5df7ad1f68135939c7a7478f4922da9b43a20f1ce91842809b8a2
7
- data.tar.gz: 5eed2151e160237db05e7559e1aa1513be567e801eb7080d193674b9c05b5654fa2b44fe58f2d93d75e831d0f11c267567d83cb897d9e37c05ae9b361262c0eb
6
+ metadata.gz: 79257f8ab123b9d20411425f1e951069754b44ec4c3b3b17d49917c9a4dacf59529c5d7482219c026b99c7a5522cc7af8db34002963573311cb00bc69d796649
7
+ data.tar.gz: 4f80c0cced21a751d115e5cc44ba52cbf3ce1c2fae58e9e4b7212d1ec286c32ac16c587d2c55f5cd61ea831e58b25e525e08d2b0655c621d4e0fd83a06e5788f
@@ -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,70 +1,83 @@
1
- Property Tagger
2
- ---------------
3
-
4
- This module implements a tagger for hotel properties for Dutch, English, French, Italian, Spanish and German. It detects aspect words, for instance words related with "room", "cleanliness", "staff" or "breakfast" and links them with the correct aspect class. The input for this module has to be a valid KAF file with at lest the term layer, as the lemmas will be used for detecting the hotel properties. The output is also a KAF valid file extended with the property layer. This module works for all the languages within the OpeNER project (en,de,nl,fr,es,it) and the language is read from the input KAF file, from the lang attribute of the KAF element (make sure your preprocessors set properly this value or you might use the resources for a wrong language)
1
+ # Property Tagger
2
+
3
+ This module implements a tagger for hotel properties for Dutch, English, French,
4
+ Italian, Spanish and German. It detects aspect words, for instance words related
5
+ with "room", "cleanliness", "staff" or "breakfast" and links them with the
6
+ correct aspect class. The input for this module has to be a valid KAF file with
7
+ at lest the term layer, as the lemmas will be used for detecting the hotel
8
+ properties. The output is also a KAF valid file extended with the property
9
+ layer. This module works for all the languages within the OpeNER project
10
+ (en,de,nl,fr,es,it) and the language is read from the input KAF file, from the
11
+ lang attribute of the KAF element (make sure your preprocessors set properly
12
+ this value or you might use the resources for a wrong language)
5
13
 
6
14
  ### Confused by some terminology?
7
15
 
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.
16
+ This software is part of a larger collection of natural language processing
17
+ tools known as "the OpeNER project". You can find more information about the
18
+ project at the [OpeNER portal](http://opener-project.github.io). There you can
19
+ also find references to terms like KAF (an XML standard to represent linguistic
20
+ annotations in texts), component, cores, scenario's and pipelines.
9
21
 
10
- Quick Use Example
11
- -----------------
22
+ ## Quick Use Example
12
23
 
13
- Keep in mind that this component uses PYTHON so it's advised to make sure you have a virtualenv activated before installing.
24
+ Keep in mind that this component uses PYTHON so it's advised to make sure you
25
+ have a virtualenv activated before installing.
14
26
 
15
27
  Installing the property-tagger can be done by executing:
16
28
 
17
29
  gem install opener-property-tagger
18
30
 
19
- Please keep in mind that all components in OpeNER take KAF as an input and output KAF by default.
20
-
31
+ Please keep in mind that all components in OpeNER take KAF as an input and
32
+ output KAF by default.
21
33
 
22
34
  ### Command line interface
23
35
 
24
- You should now be able to call the property tagger 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.
36
+ You should now be able to call the property tagger as a regular shell command:
37
+ by its name. Once installed the gem normally sits in your path so you can call
38
+ it directly from anywhere.
25
39
 
26
40
  This application reads a text from standard input in order process it.
27
41
 
28
42
  cat some_kind_of_kaf_file.kaf | property-tagger --resource-path /path/to/lexicons/
29
43
 
30
- The property tagger will search in the resource-path for files named ```{language_code}.txt```, for example ```en.txt```.
44
+ The property tagger will search in the resource-path for files named
45
+ `{language_code}.txt`, for example `en.txt`.
31
46
 
32
47
  An excerpt of a potential output would than be:
33
48
 
34
- ```
35
- <features>
36
- <properties>
37
- <property pid="p1" lemma="cleanliness">
38
- <references>
39
- <!--dirty-->
40
- <span>
41
- <target id="t_12"/>
42
- </span>
43
- </references>
44
- </property>
45
- <property pid="p2" lemma="sleeping_comfort">
46
- <references>
47
- <!--bed-->
48
- <span>
49
- <target id="t_10"/>
50
- </span>
51
- </references>
52
- </property>
53
- <property pid="p3" lemma="staff">
54
- <references>
55
- <!--staff-->
56
- <span>
57
- <target id="t_16"/>
58
- </span>
59
- <!--friendly-->
60
- <span>
61
- <target id="t_20"/>
62
- </span>
63
- </references>
64
- </property>
65
- </properties>
66
- </features>
67
- ```
49
+ <features>
50
+ <properties>
51
+ <property pid="p1" lemma="cleanliness">
52
+ <references>
53
+ <!--dirty-->
54
+ <span>
55
+ <target id="t_12"/>
56
+ </span>
57
+ </references>
58
+ </property>
59
+ <property pid="p2" lemma="sleeping_comfort">
60
+ <references>
61
+ <!--bed-->
62
+ <span>
63
+ <target id="t_10"/>
64
+ </span>
65
+ </references>
66
+ </property>
67
+ <property pid="p3" lemma="staff">
68
+ <references>
69
+ <!--staff-->
70
+ <span>
71
+ <target id="t_16"/>
72
+ </span>
73
+ <!--friendly-->
74
+ <span>
75
+ <target id="t_20"/>
76
+ </span>
77
+ </references>
78
+ </property>
79
+ </properties>
80
+ </features>
68
81
 
69
82
  ### Webservices
70
83
 
@@ -72,28 +85,33 @@ You can launch a webservice by executing:
72
85
 
73
86
  property-tagger-server --resource-path /path/to/resources
74
87
 
75
- This will launch a mini webserver with the webservice. It defaults to port 9292, so you can access it at <http://localhost:9292>.
88
+ This will launch a mini webserver with the webservice. It defaults to port 9292,
89
+ so you can access it at <http://localhost:9292>.
76
90
 
77
- To launch it on a different port provide the `-p [port-number]` option like this:
91
+ To launch it on a different port provide the `-p [port-number]` option like
92
+ this:
78
93
 
79
94
  property-tagger-server -p 1234
80
95
 
81
96
  It then launches at <http://localhost:1234>
82
97
 
83
- 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.
84
-
98
+ Documentation on the Webservice is provided by surfing to the urls provided
99
+ above. For more information on how to launch a webservice run the command with
100
+ the `--help` option.
85
101
 
86
102
  ### Daemon
87
103
 
88
- Last but not least the property tagger comes shipped with a daemon that can read jobs (and write) jobs to and from Amazon SQS queues. For more information type:
104
+ Last but not least the property tagger comes shipped with a daemon that can read
105
+ jobs (and write) jobs to and from Amazon SQS queues. For more information type:
89
106
 
90
- property-tagger-daemon -h
107
+ property-tagger-daemon --help
91
108
 
109
+ ## Description of dependencies
92
110
 
93
- Description of dependencies
94
- ---------------------------
95
-
96
- 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)
111
+ This component runs best if you run it in an environment suited for OpeNER
112
+ components. You can find an installation guide and helper tools in the
113
+ [OpeNER installer](https://github.com/opener-project/opener-installer) and an
114
+ [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
97
115
 
98
116
  At least you need the following system setup:
99
117
 
@@ -111,31 +129,32 @@ At least you need the following system setup:
111
129
  Domain Adaption and Language Extension
112
130
  --------------------------------------
113
131
 
114
- The lexicons in the resource path must be stored in a file and follow this format:
132
+ The lexicons in the resource path must be stored in a file and follow this
133
+ format:
115
134
 
116
- shell
117
135
  surf verb facilities
118
136
  surfer noun facilities
119
137
  surfing verb facilities
120
138
 
139
+ So, one aspect per line, with 3 fields separated by a tabulator, the first one
140
+ is the word or span of words (in this case use whitespaces), then the part of
141
+ speech (which actually it is not use, you can include a dummy label) and
142
+ finally the aspect class associated with the word.
121
143
 
122
- So, one aspect per line, with 3 fields separated by a tabulator, the first one is the word or span of words (in this case use whitespaces), then the part of speech (which actually it is not use, you can include a dummy label) and finally the aspect class associated with the word.
123
-
124
- The Core
125
- --------
144
+ ## The Core
126
145
 
127
- The component is a fat wrapper around the actual language technology core. You can find the core technolies (python) in the ```/core``` directory.
146
+ The component is a fat wrapper around the actual language technology core. You
147
+ can find the core technolies (python) in the `/core` directory.
128
148
 
129
- Where to go from here
130
- ---------------------
149
+ ## Where to go from here
131
150
 
132
151
  * [Check the project website](http://opener-project.github.io)
133
152
  * [Checkout the webservice](http://opener.olery.com/property-tagger)
134
153
 
135
- Report problem/Get help
136
- -----------------------
154
+ ## Report problem/Get help
137
155
 
138
- If you encounter problems, please email <support@opener-project.eu> or leave an issue in the
156
+ If you encounter problems, please email <support@opener-project.eu> or leave an
157
+ issue in the
139
158
  [issue tracker](https://github.com/opener-project/property-tagger/issues).
140
159
 
141
160
  Contributing
@@ -1,7 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'opener/core'
4
+
3
5
  require_relative '../lib/opener/property_tagger'
4
6
 
5
- cli = Opener::PropertyTagger::CLI.new(:args => ARGV)
7
+ switcher = Opener::Core::ResourceSwitcher.new
8
+ cli = Opener::PropertyTagger::CLI.new
9
+
10
+ switcher.bind(cli.parser)
6
11
 
7
- cli.run(STDIN.tty? ? nil : STDIN.read)
12
+ cli.run
@@ -1,10 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'opener/daemons'
4
+ require 'opener/core'
4
5
 
5
- exec_path = File.expand_path('../../exec/property-tagger.rb', __FILE__)
6
+ switcher = Opener::Core::ResourceSwitcher.new
7
+ controller = Opener::Daemons::Controller.new(
8
+ :name => 'opener-property-tagger',
9
+ :exec_path => File.expand_path('../../exec/property-tagger.rb', __FILE__)
10
+ )
6
11
 
7
- Opener::Daemons::Controller.new(
8
- :name => 'property-tagger',
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'
3
+ require 'opener/webservice'
5
4
  require 'opener/core'
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-property-tagger',
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/property_tagger'
7
6
 
8
- switcher = Opener::Core::ResourceSwitcher.new
9
- switcher_opts = {}
7
+ daemon = Opener::Daemons::Daemon.new(Opener::PropertyTagger)
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::PropertyTagger, options)
17
-
18
- switcher.install(switcher_opts)
19
9
  daemon.start
@@ -1,6 +1,5 @@
1
1
  require 'open3'
2
2
  require 'optparse'
3
- require 'opener/core'
4
3
 
5
4
  require_relative 'property_tagger/version'
6
5
  require_relative 'property_tagger/cli'
@@ -12,6 +11,9 @@ module Opener
12
11
  # @!attribute [r] options
13
12
  # @return [Hash]
14
13
  #
14
+ # @!attribute [r] args
15
+ # @return [Array]
16
+ #
15
17
  class PropertyTagger
16
18
  attr_reader :options, :args
17
19
 
@@ -32,19 +34,23 @@ module Opener
32
34
  # @return [String]
33
35
  #
34
36
  def command
35
- return "#{adjust_python_path} python -E #{kernel} #{args.join(' ')} --path #{path}"
37
+ return "python -E #{kernel} #{args.join(' ')} --path #{path}"
36
38
  end
37
39
 
38
-
39
40
  ##
40
41
  # Get the resource path for the lexicon files, defaults to an ENV variable
41
42
  #
43
+ # @return [String]
44
+ #
42
45
  def path
43
- return options[:resource_path] if options[:resource_path]
44
- return ENV.fetch('PROPERTY_TAGGER_LEXICONS_PATH') {
45
- raise ArgumentError, "No lexicon path provided."
46
- }
46
+ path = options[:resource_path] || ENV['RESOURCE_PATH'] ||
47
+ ENV['PROPERTY_TAGGER_LEXICONS_PATH']
48
+
49
+ unless path
50
+ raise ArgumentError, 'No lexicon path provided'
51
+ end
47
52
 
53
+ return path
48
54
  end
49
55
 
50
56
  ##
@@ -55,23 +61,14 @@ module Opener
55
61
  # @return [Array]
56
62
  #
57
63
  def run(input)
58
- begin
59
- stdout, stderr, process = capture(input)
60
- raise stderr unless process.success?
61
- return stdout
62
- rescue Exception => error
63
- return Opener::Core::ErrorLayer.new(input, error.message, self.class).add
64
- end
64
+ stdout, stderr, process = capture(input)
65
+
66
+ raise stderr unless process.success?
67
+
68
+ return stdout
65
69
  end
66
70
 
67
71
  protected
68
- ##
69
- # @return [String]
70
- #
71
- def adjust_python_path
72
- site_packages = File.join(core_dir, 'site-packages')
73
- "env PYTHONPATH=#{site_packages}:$PYTHONPATH"
74
- end
75
72
 
76
73
  ##
77
74
  # capture3 method doesn't work properly with Jruby, so
@@ -5,72 +5,62 @@ module Opener
5
5
  ##
6
6
  # CLI wrapper around {Opener::PropertyTagger} using OptionParser.
7
7
  #
8
- # @!attribute [r] options
9
- # @return [Hash]
10
- # @!attribute [r] option_parser
11
- # @return [OptionParser]
8
+ # @!attribute [r] parser
9
+ # @return [Slop]
12
10
  #
13
11
  class CLI
14
- attr_reader :options, :option_parser, :resource_switcher
12
+ attr_reader :parser
15
13
 
16
- DEFAULT_OPTIONS = {
17
- :logging => false,
18
- }
14
+ def initialize
15
+ @parser = configure_slop
16
+ end
19
17
 
20
18
  ##
21
- # @param [Hash] options
19
+ # @param [Array] argv
22
20
  #
23
- def initialize(options = {})
24
- @options = DEFAULT_OPTIONS.merge(options)
25
- @resource_switcher = Opener::Core::ResourceSwitcher.new
21
+ def run(argv = ARGV)
22
+ parser.parse(argv)
23
+ end
26
24
 
27
- @option_parser = OptionParser.new do |opts|
28
- opts.program_name = 'polarity-tagger'
29
- opts.summary_indent = ' '
25
+ ##
26
+ # @return [Slop]
27
+ #
28
+ def configure_slop
29
+ return Slop.new(:strict => false, :indent => 2, :help => true) do
30
+ banner 'Usage: property-tagger [OPTIONS] -- [PYTHON OPTIONS]'
30
31
 
31
- resource_switcher.bind(opts, @options)
32
+ separator <<-EOF.chomp
32
33
 
33
- opts.on('-h', '--help', 'Shows this help message') do
34
- show_help
35
- end
34
+ About:
36
35
 
37
- opts.on('-l', '--log', 'Enable logging to STDERR') do
38
- @options[:logging] = true
39
- end
36
+ Component for finding the properties in a KAF document. This command reads
37
+ input from STDIN.
40
38
 
41
- opts.on("--lexicon FILE", "Use a specific lexicon file") do |v|
42
- @options[:lexicon] = v
43
- end
44
- end
39
+ Examples:
45
40
 
46
- option_parser.parse!(options[:args])
47
- resource_switcher.install(@options)
48
- end
41
+ Processing a KAF file:
49
42
 
50
- ##
51
- # @param [String] input
52
- #
53
- def run(input)
43
+ cat some_file.kaf | property-tagger
54
44
 
55
- tagger = PropertyTagger.new(options)
45
+ Displaying the underlying kernel options:
56
46
 
57
- puts tagger.run(input)
58
- end
47
+ property-tagger -- --help
59
48
 
60
- private
49
+ EOF
61
50
 
62
- ##
63
- # Shows the help message and exits the program.
64
- #
65
- def show_help
66
- abort option_parser.to_s
67
- end
51
+ separator "\nOptions:\n"
68
52
 
69
- ##
70
- # Shows the version and exits the program.
71
- #
72
- def show_version
73
- abort "#{option_parser.program_name} v#{VERSION} on #{RUBY_DESCRIPTION}"
53
+ on :v, :version, 'Shows the current version' do
54
+ abort "property-tagger v#{VERSION} on #{RUBY_DESCRIPTION}"
55
+ end
56
+
57
+ run do |opts, args|
58
+ tagger = PropertyTagger.new(:args => args)
59
+ input = STDIN.tty? ? nil : STDIN.read
60
+
61
+ puts tagger.run(input)
62
+ end
63
+ end
74
64
  end
75
65
  end # CLI
76
66
  end # PropertyTagger
@@ -1,5 +1,3 @@
1
- require 'sinatra/base'
2
- require 'httpclient'
3
1
  require 'opener/webservice'
4
2
 
5
3
  module Opener
@@ -7,10 +5,11 @@ module Opener
7
5
  ##
8
6
  # Property tagger 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 PropertyTagger
13
- accepted_params :input
10
+
11
+ self.text_processor = PropertyTagger
12
+ self.accepted_params = [:input]
14
13
  end # Server
15
14
  end # PropertyTagger
16
15
  end # Opener
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class PropertyTagger
3
- VERSION = '2.3.0'
3
+ VERSION = '3.0.0'
4
4
  end # PropertyTagger
5
5
  end # Opener
@@ -9,6 +9,8 @@ Gem::Specification.new do |gem|
9
9
  gem.homepage = 'http://opener-project.github.com/'
10
10
  gem.extensions = ['ext/hack/Rakefile']
11
11
 
12
+ gem.license = 'Apache 2.0'
13
+
12
14
  gem.required_ruby_version = '>= 1.9.2'
13
15
 
14
16
  gem.files = Dir.glob([
@@ -20,21 +22,20 @@ Gem::Specification.new do |gem|
20
22
  '*.gemspec',
21
23
  '*_requirements.txt',
22
24
  'README.md',
25
+ 'LICENSE.txt',
23
26
  'exec/**/*',
24
27
  'task/*'
25
28
  ]).select { |file| File.file?(file) }
26
29
 
27
30
  gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
28
31
 
32
+ gem.add_dependency 'opener-daemons', '~> 2.2'
33
+ gem.add_dependency 'opener-webservice', '~> 2.1'
34
+ gem.add_dependency 'opener-core', '~> 2.2'
35
+
36
+ gem.add_dependency 'nokogiri'
29
37
  gem.add_dependency 'rake'
30
38
  gem.add_dependency 'cliver'
31
- gem.add_dependency 'sinatra'
32
- gem.add_dependency 'httpclient'
33
- gem.add_dependency 'puma'
34
- gem.add_dependency 'opener-daemons'
35
- gem.add_dependency 'opener-webservice'
36
- gem.add_dependency 'opener-core', '~> 1.0.2'
37
- gem.add_dependency 'nokogiri'
38
39
 
39
40
  gem.add_development_dependency 'rspec', '~> 3.0'
40
41
  gem.add_development_dependency 'cucumber'
metadata CHANGED
@@ -1,87 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-property-tagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 3.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-25 00:00:00.000000000 Z
11
+ date: 2014-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: cliver
14
+ name: opener-daemons
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ">="
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '0'
19
+ version: '2.2'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ">="
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: '2.2'
41
27
  - !ruby/object:Gem::Dependency
42
- name: sinatra
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: httpclient
28
+ name: opener-webservice
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
- - - ">="
31
+ - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: '0'
33
+ version: '2.1'
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
- - - ">="
38
+ - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: '0'
40
+ version: '2.1'
69
41
  - !ruby/object:Gem::Dependency
70
- name: puma
42
+ name: opener-core
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
- - - ">="
45
+ - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: '0'
47
+ version: '2.2'
76
48
  type: :runtime
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
- - - ">="
52
+ - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: '0'
54
+ version: '2.2'
83
55
  - !ruby/object:Gem::Dependency
84
- name: opener-daemons
56
+ name: nokogiri
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
@@ -95,7 +67,7 @@ dependencies:
95
67
  - !ruby/object:Gem::Version
96
68
  version: '0'
97
69
  - !ruby/object:Gem::Dependency
98
- name: opener-webservice
70
+ name: rake
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
73
  - - ">="
@@ -109,21 +81,7 @@ dependencies:
109
81
  - !ruby/object:Gem::Version
110
82
  version: '0'
111
83
  - !ruby/object:Gem::Dependency
112
- name: opener-core
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 1.0.2
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 1.0.2
125
- - !ruby/object:Gem::Dependency
126
- name: nokogiri
84
+ name: cliver
127
85
  requirement: !ruby/object:Gem::Requirement
128
86
  requirements:
129
87
  - - ">="
@@ -174,6 +132,7 @@ extensions:
174
132
  - ext/hack/Rakefile
175
133
  extra_rdoc_files: []
176
134
  files:
135
+ - LICENSE.txt
177
136
  - README.md
178
137
  - bin/property-tagger
179
138
  - bin/property-tagger-daemon
@@ -197,7 +156,8 @@ files:
197
156
  - task/requirements.rake
198
157
  - task/test.rake
199
158
  homepage: http://opener-project.github.com/
200
- licenses: []
159
+ licenses:
160
+ - Apache 2.0
201
161
  metadata: {}
202
162
  post_install_message:
203
163
  rdoc_options: []