sapoci 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/lib/sapoci/document.rb +18 -17
  4. metadata +9 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0c7567ef7fef6da81e2027cebac3258996acb83
4
- data.tar.gz: d657487eca7d72211171ce8c9bdfc01b87fcf463
3
+ metadata.gz: efabe83f29509ca5c589d24c054e6ab09ce5f996
4
+ data.tar.gz: 9c5a92ecb47b5e254c56fc7c4b57d7cf2dc3d5ef
5
5
  SHA512:
6
- metadata.gz: 860ff4f5cb225dc9688ef4c95d10e0942f7e8ef85b7bcc3692b565c5499e2567f34de371472ff01dbbabded2a1bcc4ec69435f4c5ccb40b5d5cbb76f58701b03
7
- data.tar.gz: 1140c206298dd814ab420ef2d70e0f687502c4775ef29bc4d4a603b32d9db22e4fb52230dc862685ae94c6dfa653b301b56a1e587e4ca6290de98f9063f67ef2
6
+ metadata.gz: 80ab2a1392bf0d77d94ba3789e9bbdf164df64b2bf1c00b1acd75aa53ae1f1a00840bf297a62dc1f993e8f2e34e85375f6eeaf2be08f497c8e59a67da15c1687
7
+ data.tar.gz: c44563afa1ee922db44602f6018bb534d73ceb991d5efc9695324f38cff28a6a6e8d2792de8e2f409bccfc24661f22d152de0c69282340df75f63e6b8c9aa0bb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.2.0, released 2015-07-22
2
+
3
+ * Update gems
4
+ * Require nokogiri ~> 1.6
5
+ * Require Ruby ~> 2.2
6
+ * Ignore unknown properties in OCI item, e.g. NEW_ITEM-TAX_RATE
7
+
1
8
  # 0.1.9, released 2014-03-14
2
9
 
3
10
  * Added dependency on Nokogiri
@@ -6,21 +6,21 @@ require 'sapoci/core_ext'
6
6
 
7
7
  module SAPOCI
8
8
  # SAPOCI::Document is for parsing and emitting SAP OCI compliant
9
- # data.
10
- #
9
+ # data.
10
+ #
11
11
  # Open a +Document+ by feeding it a string:
12
- #
12
+ #
13
13
  # doc = SAPOCI::Document.from_html("<html>...</html>")
14
- #
14
+ #
15
15
  # Open a +Document+ by parsing a Rails-/Rack compatible +Hash+:
16
- #
16
+ #
17
17
  # doc = SAPOCI::Document.from_params({ "NEW_ITEM-DESCRIPTION"=>{"1"=>"Standard Visitenkarte deutsch 200 St."} })
18
18
  #
19
19
  class Document
20
20
  def initialize(items)
21
21
  @items = items
22
22
  end
23
-
23
+
24
24
  # Create a new document from a HTML string.
25
25
  def self.from_html(html)
26
26
  html_doc = Nokogiri::HTML(html)
@@ -28,18 +28,18 @@ module SAPOCI
28
28
  yield doc if block_given?
29
29
  doc
30
30
  end
31
-
32
- # Create a new document from a Rails-/Rack-compatible
31
+
32
+ # Create a new document from a Rails-/Rack-compatible
33
33
  # params hash.
34
34
  def self.from_params(params)
35
35
  doc = Document.new(parse_params(params))
36
36
  yield doc if block_given?
37
37
  doc
38
38
  end
39
-
39
+
40
40
  # All +Item+ instances.
41
41
  attr_reader :items
42
-
42
+
43
43
  # Returns all +items+ as HTML hidden field tags.
44
44
  def to_html(options = {})
45
45
  html = []
@@ -48,9 +48,9 @@ module SAPOCI
48
48
  end
49
49
  html.join
50
50
  end
51
-
51
+
52
52
  private
53
-
53
+
54
54
  # Parses a Nokogiri HTML document and returns
55
55
  # +Item+ instances in an array.
56
56
  def self.parse_html(doc)
@@ -60,9 +60,10 @@ module SAPOCI
60
60
  if /NEW_ITEM-(\w+)\[(\d+)\]/.match(name)
61
61
  property = $1
62
62
  index = $2.to_i - 1
63
+ method = (property+'=').downcase.to_sym
63
64
  value = item_node.attribute("value").value
64
65
  items[index] = Item.new(index) unless items[index]
65
- items[index].send((property+'=').downcase.to_sym, value)
66
+ items[index].send(method, value) if items[index].respond_to?(method)
66
67
  elsif /NEW_ITEM-LONGTEXT_(\d+):132/.match(name)
67
68
  index = $1.to_i - 1
68
69
  value = item_node.attribute("value").value
@@ -72,7 +73,7 @@ module SAPOCI
72
73
  end
73
74
  items.inject([]) { |memo, (key, value)| memo << value }.sort_by(&:index)
74
75
  end
75
-
76
+
76
77
  # Parses a Rails-/Rack-compatible params hash and returns
77
78
  # +Item+ instances in an array.
78
79
  def self.parse_params(params)
@@ -83,12 +84,12 @@ module SAPOCI
83
84
  oci_values.each do |index, value|
84
85
  index = index.to_i - 1 rescue next
85
86
  property = /NEW_ITEM-(\w+)/.match(oci_name)[1]
86
- next if property =~ /LONGTEXT/
87
+ next if property =~ /LONGTEXT/
87
88
  method = (property+'=').downcase.to_sym
88
89
  items[index] = Item.new(index) unless items[index]
89
90
  items[index].send(method, value) if items[index].respond_to?(method)
90
91
  end if oci_values && oci_values.respond_to?(:each)
91
-
92
+
92
93
  # LONGTEXT is a special case because it doesn't follow the conventions
93
94
  # Format is:
94
95
  # NEW_ITEM-LONTEXT_n:132[]
@@ -116,6 +117,6 @@ module SAPOCI
116
117
  end
117
118
  items.inject([]) { |memo, (key, value)| memo << value }.sort_by(&:index)
118
119
  end
119
-
120
+
120
121
  end
121
122
  end
metadata CHANGED
@@ -1,23 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sapoci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Eilhard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-14 00:00:00.000000000 Z
11
+ date: 2015-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.5'
20
- - - "<"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '1.6'
23
20
  type: :runtime
@@ -25,9 +22,6 @@ dependencies:
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '1.5'
30
- - - "<"
31
25
  - !ruby/object:Gem::Version
32
26
  version: '1.6'
33
27
  - !ruby/object:Gem::Dependency
@@ -36,14 +30,14 @@ dependencies:
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '1.1'
33
+ version: '1.10'
40
34
  type: :development
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '1.1'
40
+ version: '1.10'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: rdoc
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +58,14 @@ dependencies:
64
58
  requirements:
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: '10.1'
61
+ version: '10.4'
68
62
  type: :development
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
66
  - - "~>"
73
67
  - !ruby/object:Gem::Version
74
- version: '10.1'
68
+ version: '10.4'
75
69
  description: Ruby library and Rails plugin for punchout via SAP OCI protocol.
76
70
  email:
77
71
  - oliver.eilhard@gmail.com
@@ -102,9 +96,9 @@ require_paths:
102
96
  - lib
103
97
  required_ruby_version: !ruby/object:Gem::Requirement
104
98
  requirements:
105
- - - ">="
99
+ - - "~>"
106
100
  - !ruby/object:Gem::Version
107
- version: '0'
101
+ version: '2.2'
108
102
  required_rubygems_version: !ruby/object:Gem::Requirement
109
103
  requirements:
110
104
  - - ">="
@@ -112,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
106
  version: 1.3.6
113
107
  requirements: []
114
108
  rubyforge_project:
115
- rubygems_version: 2.2.0
109
+ rubygems_version: 2.4.6
116
110
  signing_key:
117
111
  specification_version: 4
118
112
  summary: SAP OCI enables users to parse SAP OCI compliant data from online shops.