opener-s3-outlet 1.1.3 → 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: 6d2149619078c94eb07f0dcef96810f9fd40e15b
4
- data.tar.gz: c0453fbf4284da2b6e19a8bc2faac19f8c94991e
3
+ metadata.gz: cfcdb5e05c9bd45c647de2ad0bd02b139a621aa8
4
+ data.tar.gz: 780fe19a0e15dbf9df35093361878fe595ffde15
5
5
  SHA512:
6
- metadata.gz: f37b4352e4820c4960175b4f05eb3dc3d696403317f3c5d227cca92999700a3edf8b727dbd7d042ed7b90d5c0d1cc5b6be9683089bdb405fee32809a01fc1889
7
- data.tar.gz: a882ff95426c177cd0e29d4efd7442f9cf46a385a003cd5a6c51e56bf9de906c576188b8f02843edeb2280f5e0f0513195223d5a10a9ae6f5974279b3300db0a
6
+ metadata.gz: eed2a58ef5ae8652bbeed1f66c0b57f4883e5909ce6186b2971a8d7f08ecf8c5e3d54d012c45debe0811ef261c59124719d0d70782e81dd70e9e4a9420c3bb85
7
+ data.tar.gz: 94cffc0ee2646f2924ba0da0badfae6f0ad24ca75e938c0c2bb025c353f11c96bf58037cfdd55e7aa796d499ee70d19d65cf8784419e85de0722ef95ead041dc
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,21 +1,23 @@
1
- S3-Outlet
2
- ------------
1
+ # S3-Outlet
3
2
 
4
- Component that stores results from the Opener Web Services chain into a SQLite
5
- Database and shows them into your browser.
3
+ Component for storing KAF documents in Amazon S3.
6
4
 
7
- ### Confused by some terminology?
5
+ ## Confused by some terminology?
8
6
 
9
- 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.
10
12
 
11
- Quick Use Example
12
- -----------------
13
+ ## Quick Use Example
13
14
 
14
15
  Installing the s3-outlet can be done by executing:
15
16
 
16
17
  gem install opener-s3-outlet
17
18
 
18
- 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.
19
21
 
20
22
  ### Webservices
21
23
 
@@ -23,28 +25,32 @@ You can launch a webservice by executing:
23
25
 
24
26
  s3-outlet-server
25
27
 
26
- This will launch a mini webserver with the webservice. It defaults to port 9292, so you can access it at <http://localhost:9292>.
28
+ This will launch a mini webserver with the webservice. It defaults to port 9292,
29
+ so you can access it at <http://localhost:9292>.
27
30
 
28
- To launch it on a different port provide the `-p [port-number]` option like this:
31
+ To launch it on a different port provide the `-p [port-number]` option like
32
+ this:
29
33
 
30
34
  s3-outlet-server -p 1234
31
35
 
32
36
  It then launches at <http://localhost:1234>
33
37
 
34
- 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.
35
-
38
+ Documentation on the Webservice is provided by surfing to the urls provided
39
+ above. For more information on how to launch a webservice run the command with
40
+ the `--help` option.
36
41
 
37
42
  ### Daemon
38
43
 
39
- Last but not least the s3-outlet comes shipped with a daemon that can read jobs (and write) jobs to and from Amazon SQS queues. For more information type:
44
+ Last but not least the s3-outlet comes shipped with a daemon that can read jobs
45
+ (and write) jobs to and from Amazon SQS queues. For more information type:
40
46
 
41
47
  s3-outlet-daemon -h
42
48
 
49
+ ## Description of dependencies
43
50
 
44
- Description of dependencies
45
- ---------------------------
46
-
47
- 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
51
+ This component runs best if you run it in an environment suited for OpeNER
52
+ components. You can find an installation guide and helper tools in the
53
+ [OpeNER installer](https://github.com/opener-project/opener-installer) and an
48
54
  [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
49
55
 
50
56
  At least you need the following system setup:
@@ -54,28 +60,17 @@ At least you need the following system setup:
54
60
  * JRuby 1.7.9 or newer
55
61
  * Ruby 1.9.3 or newer
56
62
 
57
- The Core
58
- --------
59
-
60
- The component is a fat wrapper around the actual language technology core. You can find the core technologies in the following repositories:
61
-
62
- * (link to) Related Core readmes
63
-
64
- Where to go from here
65
- ---------------------
63
+ ## Where to go from here
66
64
 
67
65
  * [Check the project website](http://opener-project.github.io)
68
66
  * [Checkout the webservice](http://opener.olery.com/s3-outlet)
69
67
 
70
- Report problem/Get help
71
- -----------------------
72
-
73
- If you encounter problems, please email support@opener-project.eu or leave an issue in the
74
- [issue tracker](https://github.com/opener-project/s3-outlet/issues).
68
+ ## Report problem/Get help
75
69
 
70
+ If you encounter problems, please email support@opener-project.eu or leave an
71
+ issue in the [issue tracker](https://github.com/opener-project/s3-outlet/issues).
76
72
 
77
- Contributing
78
- ------------
73
+ ## Contributing
79
74
 
80
75
  1. Fork it <http://github.com/opener-project/s3-outlet/fork>
81
76
  2. Create your feature branch (`git checkout -b my-new-feature`)
data/bin/s3-outlet-daemon CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- require 'rubygems'
2
+
4
3
  require 'opener/daemons'
5
4
 
6
- exec_path = File.expand_path("../../exec/s3-outlet.rb", __FILE__)
7
- Opener::Daemons::Controller.new(:name=>"s3-outlet",
8
- :exec_path=>exec_path)
5
+ controller = Opener::Daemons::Controller.new(
6
+ :name => 'opener-s3-outlet',
7
+ :exec_path => File.expand_path('../../exec/s3-outlet.rb', __FILE__)
8
+ )
9
9
 
10
+ controller.run
data/bin/s3-outlet-server CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'puma/cli'
3
+ require 'opener/webservice'
4
4
 
5
- rack_config = File.expand_path('../../config.ru', __FILE__)
5
+ parser = Opener::Webservice::OptionParser.new(
6
+ 'opener-s3-outlet',
7
+ File.expand_path('../../config.ru', __FILE__)
8
+ )
6
9
 
7
- cli = Puma::CLI.new([rack_config] + ARGV)
8
- cli.run
10
+ parser.run
data/exec/s3-outlet.rb CHANGED
@@ -1,33 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'opener/daemons'
4
- require_relative '../lib/opener/s3_outlet'
5
-
6
- parser = Opener::Daemons::OptParser.new do |opts, options|
7
- opts.on("-b", "--bucket NAME", "Bucket name") do |v|
8
- options[:bucket] = v
9
- end
10
- opts.on("-d", "--directory NAME", "Directory name") do |v|
11
- options[:directory] = v
12
- end
13
- end
14
-
15
- class S3OutletFactory
16
- attr_reader :dir, :bucket
17
4
 
18
- def initialize(options)
19
- @bucket = options.fetch(:bucket)
20
- @dir = options.fetch(:directory)
21
- end
22
-
23
- def new
24
- Opener::S3Outlet.new(:directory=>dir, :bucket=>bucket)
25
- end
26
- end
5
+ require_relative '../lib/opener/s3_outlet'
27
6
 
28
- options = parser.parse!(ARGV)
29
- factory = S3OutletFactory.new(options)
7
+ daemon = Opener::Daemons::Daemon.new(Opener::S3Outlet)
30
8
 
31
- daemon = Opener::Daemons::Daemon.new(factory, options)
32
9
  daemon.start
33
-
@@ -1,9 +1,13 @@
1
+ require 'securerandom'
2
+ require 'stringio'
3
+
1
4
  require 'aws-sdk'
5
+ require 'nokogiri'
6
+ require 'opener/kaf_to_json'
2
7
 
3
8
  require_relative 's3_outlet/s3_output'
4
9
  require_relative 's3_outlet/version'
5
10
  require_relative 's3_outlet/server'
6
- require 'opener/kaf_to_json'
7
11
 
8
12
  module Opener
9
13
  class S3Outlet
@@ -14,10 +18,11 @@ module Opener
14
18
  end
15
19
 
16
20
  def run(input)
17
- options[:text] = input
18
- S3Output.create(options)
21
+ S3Output.create(
22
+ options.merge(:text => input, :uuid => options[:request_id])
23
+ )
19
24
 
20
- return input #Return original input so that we can keep on chaining.
25
+ return input
21
26
  end
22
27
 
23
28
  def self.s3
@@ -1,5 +1,3 @@
1
- require 'uuidtools'
2
-
3
1
  module Opener
4
2
  class S3Outlet
5
3
  class S3Output
@@ -7,7 +5,7 @@ module Opener
7
5
  attr_reader :uuid, :text, :dir, :bucket, :params
8
6
 
9
7
  def initialize(params = {})
10
- @uuid = params.fetch(:uuid) { UUIDTools::UUID.random_create }
8
+ @uuid = params[:uuid] || SecureRandom.hex
11
9
  @text = params.fetch(:text)
12
10
  @dir = params.fetch(:directory, S3Outlet.dir)
13
11
 
@@ -1,15 +1,10 @@
1
- require 'sinatra'
2
- require 'nokogiri'
3
- require 'stringio'
4
- require_relative './visualizer'
5
-
6
1
  module Opener
7
2
  class S3Outlet
8
- class Server < Sinatra::Base
3
+ class Server < Webservice::Server
4
+ set :views, File.expand_path('../views', __FILE__)
9
5
 
10
- post '/' do
11
- output = S3Output.create(:uuid => params[:request_id], :text => params[:input])
12
- end
6
+ self.text_processor = S3Outlet
7
+ self.accepted_params = [:request_id]
13
8
 
14
9
  get '/' do
15
10
  if params[:request_id]
@@ -18,80 +13,53 @@ module Opener
18
13
  erb :index
19
14
  end
20
15
  end
21
-
16
+
22
17
  get '/:request_id.json' do
23
18
  unless params[:request_id] == 'favicon.ico'
24
- begin
25
- output = S3Output.find(params[:request_id])
19
+ output = S3Output.find(params[:request_id])
26
20
 
27
- if output
28
- content_type('text/json')
29
- kj = Opener::KafToJson.new
30
- json = kj.run(output.text) rescue output.text
31
- body(json)
32
- else
33
- halt(404, "No record found for ID #{params[:request_id]}")
34
- end
35
- rescue => error
36
- error_callback = params[:error_callback]
37
-
38
- submit_error(error_callback, error.message) if error_callback
39
-
40
- raise(error)
21
+ if output
22
+ content_type('text/json')
23
+ kj = Opener::KafToJson.new
24
+ json = kj.run(output.text) rescue output.text
25
+ body(json)
26
+ else
27
+ halt(404, "No record found for ID #{params[:request_id]}")
41
28
  end
42
29
  end
43
30
  end
44
31
 
45
32
  get '/:request_id' do
46
33
  unless params[:request_id] == 'favicon.ico'
47
- begin
48
- output = S3Output.find(params[:request_id])
49
-
50
- if output
51
- content_type(:xml)
52
- body(output)
53
- else
54
- halt(404, "No record found for ID #{params[:request_id]}")
55
- end
56
- rescue => error
57
- error_callback = params[:error_callback]
34
+ output = S3Output.find(params[:request_id])
58
35
 
59
- submit_error(error_callback, error.message) if error_callback
60
-
61
- raise(error)
36
+ if output
37
+ content_type(:xml)
38
+ body(output)
39
+ else
40
+ halt(404, "No record found for ID #{params[:request_id]}")
62
41
  end
63
42
  end
64
43
  end
65
44
 
66
45
  get '/html/:request_id' do
67
46
  unless params[:request_id] == 'favicon.ico'
68
- begin
69
- output = S3Output.find(params[:request_id])
70
- if output
71
- output = StringIO.new(output)
72
- parser = Opener::Kaf::Visualizer::Parser.new(output)
73
- doc = parser.parse
74
- html = Opener::Kaf::Visualizer::HTMLTextPresenter.new(doc)
75
- @parsed = html.to_html
76
- erb :show
77
- else
78
- halt(404, "No record found for ID #{params[:request_id]}")
79
- end
80
- rescue => error
81
- error_callback = params[:error_callback]
47
+ output = S3Output.find(params[:request_id])
48
+
49
+ if output
50
+ output = StringIO.new(output)
51
+ parser = Opener::Kaf::Visualizer::Parser.new(output)
52
+ doc = parser.parse
53
+ html = Opener::Kaf::Visualizer::HTMLTextPresenter.new(doc)
82
54
 
83
- submit_error(error_callback, error.message) if error_callback
55
+ @parsed = html.to_html
84
56
 
85
- raise(error)
57
+ erb :show
58
+ else
59
+ halt(404, "No record found for ID #{params[:request_id]}")
86
60
  end
87
61
  end
88
62
  end
89
-
90
- private
91
-
92
- def submit_error(url, message)
93
- HTTPClient.post(url, :body => {:error => message})
94
- end
95
63
  end # Server
96
64
  end # S3Outlet
97
65
  end # Opener
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class S3Outlet
3
- VERSION = "1.1.3"
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
@@ -1,6 +1,3 @@
1
- #require "opener/kaf/visualizer/version"
2
- require 'nokogiri'
3
-
4
1
  module Opener
5
2
  module Kaf
6
3
  module Visualizer
@@ -1,13 +1,15 @@
1
1
  require File.expand_path('../lib/opener/s3_outlet/version', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
- gem.name = 'opener-s3-outlet'
5
- gem.version = Opener::S3Outlet::VERSION
6
- gem.authors = ['development@olery.com']
7
- gem.summary = 'S3 Bucket data storing for the web services output when using callbacks.'
8
- gem.description = gem.summary
9
- gem.homepage = "http://opener-project.github.com/"
10
- gem.has_rdoc = 'yard'
4
+ gem.name = 'opener-s3-outlet'
5
+ gem.version = Opener::S3Outlet::VERSION
6
+ gem.authors = ['development@olery.com']
7
+ gem.summary = 'S3 Bucket data storing for the web services output when using callbacks.'
8
+ gem.description = gem.summary
9
+ gem.homepage = "http://opener-project.github.com/"
10
+ gem.has_rdoc = 'yard'
11
+ gem.license = 'Apache 2.0'
12
+
11
13
  gem.required_ruby_version = '>= 1.9.2'
12
14
 
13
15
  gem.files = Dir.glob([
@@ -16,24 +18,18 @@ Gem::Specification.new do |gem|
16
18
  'config.ru',
17
19
  '*.gemspec',
18
20
  'README.md',
19
- 'visualizer.rb'
21
+ 'LICENSE.txt'
20
22
  ]).select { |file| File.file?(file) }
21
23
 
22
24
  gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
23
25
 
26
+ gem.add_dependency 'opener-kaf2json'
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 'builder'
25
- gem.add_dependency 'sinatra', '~>1.4.2'
26
32
  gem.add_dependency 'nokogiri'
27
- gem.add_dependency 'httpclient'
28
- gem.add_dependency 'uuidtools'
29
- gem.add_dependency 'opener-webservice'
30
- gem.add_dependency 'opener-daemons'
31
- gem.add_dependency 'opener-kaf2json'
32
- gem.add_dependency 'aws-sdk'
33
- gem.add_dependency 'puma'
34
33
 
35
- gem.add_development_dependency 'rspec'
36
- gem.add_development_dependency 'cucumber'
37
- gem.add_development_dependency 'pry'
38
34
  gem.add_development_dependency 'rake'
39
35
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-s3-outlet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
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-19 00:00:00.000000000 Z
11
+ date: 2014-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: builder
14
+ name: opener-kaf2json
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
@@ -25,105 +25,49 @@ dependencies:
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
- name: sinatra
28
+ name: opener-daemons
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.4.2
33
+ version: '2.2'
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
36
  - - ~>
37
37
  - !ruby/object:Gem::Version
38
- version: 1.4.2
39
- prerelease: false
40
- type: :runtime
41
- - !ruby/object:Gem::Dependency
42
- name: nokogiri
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - '>='
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
- prerelease: false
54
- type: :runtime
55
- - !ruby/object:Gem::Dependency
56
- name: httpclient
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
- prerelease: false
68
- type: :runtime
69
- - !ruby/object:Gem::Dependency
70
- name: uuidtools
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - '>='
79
- - !ruby/object:Gem::Version
80
- version: '0'
38
+ version: '2.2'
81
39
  prerelease: false
82
40
  type: :runtime
83
41
  - !ruby/object:Gem::Dependency
84
42
  name: opener-webservice
85
43
  version_requirements: !ruby/object:Gem::Requirement
86
44
  requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- prerelease: false
96
- type: :runtime
97
- - !ruby/object:Gem::Dependency
98
- name: opener-daemons
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
45
+ - - ~>
102
46
  - !ruby/object:Gem::Version
103
- version: '0'
47
+ version: '2.1'
104
48
  requirement: !ruby/object:Gem::Requirement
105
49
  requirements:
106
- - - '>='
50
+ - - ~>
107
51
  - !ruby/object:Gem::Version
108
- version: '0'
52
+ version: '2.1'
109
53
  prerelease: false
110
54
  type: :runtime
111
55
  - !ruby/object:Gem::Dependency
112
- name: opener-kaf2json
56
+ name: opener-core
113
57
  version_requirements: !ruby/object:Gem::Requirement
114
58
  requirements:
115
- - - '>='
59
+ - - ~>
116
60
  - !ruby/object:Gem::Version
117
- version: '0'
61
+ version: '2.2'
118
62
  requirement: !ruby/object:Gem::Requirement
119
63
  requirements:
120
- - - '>='
64
+ - - ~>
121
65
  - !ruby/object:Gem::Version
122
- version: '0'
66
+ version: '2.2'
123
67
  prerelease: false
124
68
  type: :runtime
125
69
  - !ruby/object:Gem::Dependency
126
- name: aws-sdk
70
+ name: builder
127
71
  version_requirements: !ruby/object:Gem::Requirement
128
72
  requirements:
129
73
  - - '>='
@@ -137,7 +81,7 @@ dependencies:
137
81
  prerelease: false
138
82
  type: :runtime
139
83
  - !ruby/object:Gem::Dependency
140
- name: puma
84
+ name: nokogiri
141
85
  version_requirements: !ruby/object:Gem::Requirement
142
86
  requirements:
143
87
  - - '>='
@@ -150,48 +94,6 @@ dependencies:
150
94
  version: '0'
151
95
  prerelease: false
152
96
  type: :runtime
153
- - !ruby/object:Gem::Dependency
154
- name: rspec
155
- version_requirements: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- requirement: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
165
- prerelease: false
166
- type: :development
167
- - !ruby/object:Gem::Dependency
168
- name: cucumber
169
- version_requirements: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- requirement: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - '>='
177
- - !ruby/object:Gem::Version
178
- version: '0'
179
- prerelease: false
180
- type: :development
181
- - !ruby/object:Gem::Dependency
182
- name: pry
183
- version_requirements: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - '>='
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- requirement: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - '>='
191
- - !ruby/object:Gem::Version
192
- version: '0'
193
- prerelease: false
194
- type: :development
195
97
  - !ruby/object:Gem::Dependency
196
98
  name: rake
197
99
  version_requirements: !ruby/object:Gem::Requirement
@@ -214,24 +116,25 @@ executables:
214
116
  extensions: []
215
117
  extra_rdoc_files: []
216
118
  files:
217
- - README.md
218
- - bin/s3-outlet-daemon
219
- - bin/s3-outlet-server
220
- - config.ru
221
119
  - exec/s3-outlet.rb
222
120
  - lib/opener/s3_outlet.rb
223
- - lib/opener/s3_outlet/public/outlet.css
121
+ - lib/opener/s3_outlet/visualizer.rb
122
+ - lib/opener/s3_outlet/version.rb
224
123
  - lib/opener/s3_outlet/s3_output.rb
225
124
  - lib/opener/s3_outlet/server.rb
226
- - lib/opener/s3_outlet/version.rb
227
- - lib/opener/s3_outlet/views/index.erb
125
+ - lib/opener/s3_outlet/public/outlet.css
228
126
  - lib/opener/s3_outlet/views/show.erb
127
+ - lib/opener/s3_outlet/views/index.erb
229
128
  - lib/opener/s3_outlet/views/show.html.erb
230
- - lib/opener/s3_outlet/visualizer.rb
129
+ - config.ru
231
130
  - opener-s3-outlet.gemspec
232
- - visualizer.rb
131
+ - README.md
132
+ - LICENSE.txt
133
+ - bin/s3-outlet-daemon
134
+ - bin/s3-outlet-server
233
135
  homepage: http://opener-project.github.com/
234
- licenses: []
136
+ licenses:
137
+ - Apache 2.0
235
138
  metadata: {}
236
139
  post_install_message:
237
140
  rdoc_options: []
@@ -249,8 +152,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
152
  version: '0'
250
153
  requirements: []
251
154
  rubyforge_project:
252
- rubygems_version: 2.2.2
155
+ rubygems_version: 2.1.9
253
156
  signing_key:
254
157
  specification_version: 4
255
158
  summary: S3 Bucket data storing for the web services output when using callbacks.
256
159
  test_files: []
160
+ has_rdoc: yard
data/visualizer.rb DELETED
@@ -1,278 +0,0 @@
1
- require 'nokogiri'
2
-
3
- module Opener
4
- module Kaf
5
- module Visualizer
6
- class Parser
7
- attr_reader :doc
8
- attr_reader :words, :terms, :entities, :properties, :opinions, :document
9
-
10
- def initialize(input_file_handler)
11
- @doc = Nokogiri::XML(input_file_handler)
12
- end
13
-
14
- def parse
15
- @words = parse_words
16
- @terms = parse_terms
17
- @entities = parse_entities
18
- @properties = parse_properties
19
- @opinions = parse_opinions
20
- @document = KAFDocument.new(
21
- :words => words,
22
- :terms => terms,
23
- :entities => entities,
24
- :properties => properties,
25
- :opinions => opinions
26
- )
27
-
28
- return document
29
- end
30
-
31
- def parse_words
32
- parse_elements("//wf", Word)
33
- end
34
-
35
- def parse_terms
36
- # Of course terms should be words here.
37
- # Dirty Hack, sufficient for now.
38
- parse_elements("//term", Term, :terms=>words)
39
- end
40
-
41
- def parse_entities
42
- parse_elements("//entity", Entity, :terms=>terms)
43
- end
44
-
45
- def parse_properties
46
- parse_elements("//property", Property, :terms=>terms)
47
- end
48
-
49
- def parse_opinions
50
- parse_elements("//opinion", Opinion, :terms=>terms)
51
- end
52
-
53
- def parse_elements(xpath, klass, opts={})
54
- elements = doc.xpath(xpath)
55
- lookup_table = Hash.new
56
- elements.each do |element|
57
- instance = klass.new(element, opts)
58
- lookup_table[instance.id] = instance
59
- end
60
- lookup_table
61
- end
62
-
63
- end
64
-
65
- class KAFNode
66
- attr_reader :content, :targets, :tag, :references
67
-
68
- def initialize(tag, references)
69
- @references = references
70
- @tag = tag
71
-
72
- set_instance_variables
73
- set_content
74
- set_targets
75
- process_subnodes
76
- end
77
-
78
- def set_content
79
- @content = tag.content
80
- end
81
-
82
- def set_instance_variables
83
- tag.keys.each do |key|
84
- if respond_to?("#{key}=".to_sym)
85
- send("#{key}=".to_sym, tag[key])
86
- else
87
- instance_variable_set("@#{key}", tag[key])
88
- end
89
- end
90
- end
91
-
92
- def set_targets
93
- @targets = []
94
- tag.css("span target").each do |target|
95
- id = target["id"]
96
- @targets << references[:terms][id]
97
- end
98
- end
99
-
100
- def process_subnodes
101
- end
102
-
103
- def has_target?(*ids)
104
- ids.flatten.each do |id|
105
- return true if target_ids.include?(id)
106
- end
107
- return false
108
- end
109
-
110
- def to_s
111
- if targets.size > 0
112
- return targets.map(&:to_s).join(" ")
113
- else
114
- return content
115
- end
116
- end
117
-
118
- def target_ids
119
- @targets.map(&:id)
120
- end
121
-
122
- end
123
-
124
- class Word < KAFNode
125
- attr_reader :wid, :sent, :para, :offset
126
-
127
- def id
128
- wid
129
- end
130
-
131
- def offset=(offset)
132
- @offset = offset.to_i
133
- end
134
-
135
- def length
136
- content.nil? ? 0 : content.length
137
- end
138
-
139
- end
140
-
141
- class Term < KAFNode
142
- attr_reader :tid, :type, :lemma, :pos, :morphofeat
143
-
144
- def id
145
- tid
146
- end
147
- end
148
-
149
- class Entity < KAFNode
150
- attr_reader :eid, :type
151
-
152
- def id
153
- eid
154
- end
155
-
156
- def to_s
157
- "#{type}: #{targets.map(&:to_s).join(", ")}"
158
- end
159
- end
160
-
161
- class Property < KAFNode
162
- attr_reader :pid, :lemma
163
-
164
- def id
165
- pid
166
- end
167
-
168
- def to_s
169
- "#{lemma}: #{targets.map(&:to_s).join(", ")}"
170
- end
171
- end
172
-
173
- class Opinion < KAFNode
174
- attr_reader :oid, :expression
175
-
176
- def id
177
- oid
178
- end
179
-
180
- def process_subnodes
181
- @expression = tag.xpath("//opinion_expression").first["polarity"].to_sym
182
- end
183
-
184
- def to_s
185
- "#{expression}: #{targets.map(&:to_s).join(", ")}"
186
- end
187
-
188
- end
189
-
190
- class KAFDocument
191
- attr_reader :words, :terms, :entities, :properties, :opinions
192
-
193
- def initialize(opts={})
194
- @words = opts.fetch(:words)
195
- @terms = opts.fetch(:terms)
196
- @entities = opts.fetch(:entities)
197
- @properties = opts.fetch(:properties)
198
- @opinions = opts.fetch(:opinions)
199
- end
200
-
201
- end
202
-
203
- class HTMLTextPresenter
204
- attr_reader :document
205
- def initialize(document)
206
- @document = document
207
- end
208
-
209
- def to_html
210
- offset = 0
211
- prev = Struct.new(:offset).new(0)
212
-
213
- builder = Nokogiri::HTML::Builder.new do |html|
214
- html.div(:class=>"opener") do
215
- html.p do
216
- document.words.values.sort_by(&:offset).each do |word|
217
- if offset < word.offset
218
- spacer = word.offset - offset
219
- spacer = Array.new(spacer, " ").join
220
- html.span(spacer)
221
- end
222
-
223
- terms = targets_for(:terms, word.id)
224
- entities = targets_for(:entities, terms)
225
- opinions = opinions_for(terms)
226
- properties = targets_for(:properties, terms)
227
-
228
- generics = []
229
- generics << "term" if terms.size > 0
230
- generics << "entity" if entities.size > 0
231
- generics << "opinion" if opinions.size > 0
232
- generics << "property" if properties.size > 0
233
-
234
- classes = [terms, entities, opinions, properties, generics].flatten.uniq
235
-
236
- word_annotations = classes.join(" ")
237
-
238
- html.span(word.content, :class=>word_annotations, :id=>word.id)
239
- offset = word.offset + word.length
240
- end
241
- end
242
-
243
- [:entities, :opinions, :properties].each do |sym|
244
- html.div(:class=>sym) do
245
- document.public_send(sym).values.each do |entity|
246
- html.div(entity.to_s, :id=>entity.id, :class=>entity.target_ids.join(" "))
247
- end
248
- end
249
- end
250
- end
251
- end
252
-
253
- builder.to_html
254
- end
255
-
256
- def targets_for(variable, *ids)
257
- targets = document.public_send(variable.to_sym).values.select do |value|
258
- value.has_target?(ids.flatten)
259
- end
260
-
261
- targets.map(&:id)
262
- end
263
-
264
- def opinions_for(*ids)
265
- targets = document.opinions.values.select do |value|
266
- value.has_target?(ids.flatten)
267
- end
268
-
269
- ids = targets.map(&:id)
270
- sentiments = targets.map(&:expression)
271
- return ids.concat(sentiments).uniq
272
- end
273
-
274
- end
275
- end
276
- end
277
- end
278
-