opener-constituent-parser 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e46a0e3ff2692b16062a9d28002b1963b18205c2
4
- data.tar.gz: 1d3a0b8b5ac236e85408d28653c8b784c538c17d
3
+ metadata.gz: 98b8cef4632872ab1528b8212730436393bdb53f
4
+ data.tar.gz: f27400f191b588f9ed7f30d6f2725f56c7cca0ce
5
5
  SHA512:
6
- metadata.gz: 89f9f7274f3c231ba0a242d995c7c7db3f83483d4cdd870ac9a2a3aa03cd9f20dcbc8881b06d4926e653970bed90b13a516eba944811c261a6a278fd998aea52
7
- data.tar.gz: f5b5a91cb60cb1bfcc64650805a9e7bc7c51d8a8752a259d9c4c5351666625a6555e602618a5cf9619b4b9d76b13291e68bfd2e1f194ae6d92e0f082730dd93c
6
+ metadata.gz: e01b010041e9318023958f7eea147822169d0044e0c56e2cf2b3b0259403f020d2f30e9bf9b37cae2c81d423271c8c35dc3f00e2baa9eee69e09de82d3e67aa7
7
+ data.tar.gz: a6e55ffd545526ca935ab65a6f792bc009d22882dc4c15aea89713af5e489084e36c3ed0c5d9e0e6ca24ff93640ba998e094a6b952a8f667d50674ed2bfc5c60
data/README.md CHANGED
@@ -111,7 +111,7 @@ Language Extension
111
111
  Where to go from here
112
112
  ---------------------
113
113
 
114
- * [Check the project websitere](http://opener-project.github.io)
114
+ * [Check the project website](http://opener-project.github.io)
115
115
  * [Checkout the webservice](http://opener.olery.com/constituent-parser)
116
116
 
117
117
  Report problem/Get help
@@ -0,0 +1,88 @@
1
+ module Opener
2
+ class ConstituentParser
3
+ ##
4
+ # Add Error Layer to KAF file instead of throwing an error.
5
+ #
6
+ class ErrorLayer
7
+ attr_accessor :input, :document, :error, :klass
8
+
9
+ def initialize(input, error, klass)
10
+ @input = input.to_s
11
+ # Make sure there is always a document, even if it is empty.
12
+ @document = Nokogiri::XML(input) rescue Nokogiri::XML(nil)
13
+ @error = error
14
+ @klass = klass
15
+ end
16
+
17
+ def add
18
+ if is_xml?
19
+ unless has_errors_layer?
20
+ add_errors_layer
21
+ end
22
+ else
23
+ add_root
24
+ add_text
25
+ add_errors_layer
26
+ end
27
+ add_error
28
+
29
+ xml = !!document.encoding ? document.to_xml : document.to_xml(:encoding => "UTF-8")
30
+
31
+ return xml
32
+ end
33
+
34
+ ##
35
+ # Check if the document is a valid XML file.
36
+ #
37
+ def is_xml?
38
+ !!document.root
39
+ end
40
+
41
+ ##
42
+ # Add root element to the XML file.
43
+ #
44
+ def add_root
45
+ root = Nokogiri::XML::Node.new "KAF", document
46
+ document.add_child(root)
47
+ end
48
+
49
+ ##
50
+ # Check if the document already has an errors layer.
51
+ #
52
+ def has_errors_layer?
53
+ !!document.at('errors')
54
+ end
55
+
56
+ ##
57
+ # Add errors element to the XML file.
58
+ #
59
+ def add_errors_layer
60
+ node = Nokogiri::XML::Node.new "errors", document
61
+ document.root.add_child(node)
62
+ end
63
+
64
+ ##
65
+ # Add the text file incase it is not a valid XML document. More
66
+ # info for debugging.
67
+ #
68
+ def add_text
69
+ node = Nokogiri::XML::Node.new "raw", document
70
+ node.inner_html = input
71
+ document.root.add_child(node)
72
+
73
+ end
74
+
75
+ ##
76
+ # Add the actual error to the errors layer.
77
+ #
78
+ def add_error
79
+ node = document.at('errors')
80
+ error_node = Nokogiri::XML::Node.new "error", node
81
+ error_node['class'] = "#{klass.to_s} #{klass::VERSION}"
82
+ error_node.inner_html = error
83
+ node.add_child(error_node)
84
+ end
85
+
86
+ end # ErrorLayer
87
+ end # ConstituentParser
88
+ end # Opener
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class ConstituentParser
3
- VERSION = '1.0.6'
3
+ VERSION = '1.0.7'
4
4
  end # ConstituentParser
5
5
  end # Opener
@@ -5,6 +5,7 @@ require 'opener/constituent_parsers/base'
5
5
 
6
6
  require_relative 'constituent_parser/version'
7
7
  require_relative 'constituent_parser/cli'
8
+ require_relative 'constituent_parser/error_layer'
8
9
 
9
10
  module Opener
10
11
  ##
@@ -41,18 +42,22 @@ module Opener
41
42
  # @return [Array]
42
43
  #
43
44
  def run(input)
45
+ begin
44
46
  args = options[:args].dup
45
- language = language(input)
46
- if language_constant_defined?(language)
47
- kernel = language_constant(language).new(:args => args)
48
- else
49
- kernel = ConstituentParsers::Base.new(
50
- :args => args,
51
- :language => language
52
- )
53
- end
47
+ language = language(input)
48
+ if language_constant_defined?(language)
49
+ kernel = language_constant(language).new(:args => args)
50
+ else
51
+ kernel = ConstituentParsers::Base.new(
52
+ :args => args,
53
+ :language => language
54
+ )
55
+ end
54
56
 
55
- return kernel.run(input)
57
+ return kernel.run(input)
58
+ rescue Exception => error
59
+ return ErrorLayer.new(input, error.message, self.class).add
60
+ end
56
61
  end
57
62
 
58
63
  ##
@@ -11,14 +11,14 @@ Gem::Specification.new do |gem|
11
11
  gem.required_ruby_version = '>= 1.9.2'
12
12
 
13
13
  gem.files = Dir.glob([
14
- 'lib/**/*.*',
14
+ 'lib/**/*',
15
15
  '*.gemspec',
16
16
  'README.md',
17
17
  'exec/**/*',
18
18
  'config.ru'
19
- ])
19
+ ]).select { |file| File.file?(file) }
20
20
 
21
- gem.executables = Dir.glob('bin/*').map { |f| File.basename(f) }
21
+ gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
22
22
 
23
23
  gem.add_dependency 'opener-webservice'
24
24
  gem.add_dependency 'sinatra', '~>1.4.2'
@@ -29,6 +29,5 @@ Gem::Specification.new do |gem|
29
29
  gem.add_dependency 'opener-daemons'
30
30
  gem.add_dependency 'opener-core', ['>= 0.1.2']
31
31
 
32
- gem.add_development_dependency 'opener-build-tools'
33
32
  gem.add_development_dependency 'rake'
34
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-constituent-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
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-05-24 00:00:00.000000000 Z
11
+ date: 2014-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opener-webservice
@@ -122,20 +122,6 @@ dependencies:
122
122
  version: 0.1.2
123
123
  prerelease: false
124
124
  type: :runtime
125
- - !ruby/object:Gem::Dependency
126
- name: opener-build-tools
127
- version_requirements: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - '>='
135
- - !ruby/object:Gem::Version
136
- version: '0'
137
- prerelease: false
138
- type: :development
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: rake
141
127
  version_requirements: !ruby/object:Gem::Requirement
@@ -167,6 +153,7 @@ files:
167
153
  - exec/constituent-parser.rb
168
154
  - lib/opener/constituent_parser.rb
169
155
  - lib/opener/constituent_parser/cli.rb
156
+ - lib/opener/constituent_parser/error_layer.rb
170
157
  - lib/opener/constituent_parser/public/markdown.css
171
158
  - lib/opener/constituent_parser/server.rb
172
159
  - lib/opener/constituent_parser/version.rb