ooxl 0.0.1.4.12 → 0.0.1.4.13

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: 4d7cf128c102c85420cf8490a3e6c46d6885537c
4
- data.tar.gz: 22ead8ea6734892db79611aac96396901ac51cfa
3
+ metadata.gz: fcec03506c3c4e21b6310bffde739a12e30f5d96
4
+ data.tar.gz: bfee2c62d03972e22c227a1d27e5a5152b50e042
5
5
  SHA512:
6
- metadata.gz: 1841d0338c8e3d5ef192b2b6d161f3a6cf8a2983fa41dee75398602515f2d669d0ea5be1b1c905f7e2bac03fd273abf512e2dc9634fe74cf42eac60654db9671
7
- data.tar.gz: ba98ee85c70a650ff63d87c37be901d2913c67178a8e590c12e4fcc2e7e3fa4ee904e42378e35eda6638fcf47cd7d22e916cee4d03fb617eb0d174a1c31bac8e
6
+ metadata.gz: '087477ffd62a55cb0d92835acc0ba5ac42d73cd82d0b72fb41f44b6195ced487c47450b55bce7d7caf3f9ddd0fc999d59c258577c65b546fe4221ac727653e67'
7
+ data.tar.gz: 7cc62053353763d581770465f530fee84b7665094b36171eddd590a479e32caa7aab9022508737947ae5382bd1ec651bd7c5dbfa685d06abf3bfc1e35510af34
@@ -16,5 +16,16 @@ class OOXL
16
16
  def uniform_reference(ref)
17
17
  ref.to_s[/[A-Z]/] ? letter_index(ref) + 1 : ref
18
18
  end
19
+
20
+ def node_value_extractor(node)
21
+ node.try(:value)
22
+ end
23
+
24
+ def node_attribute_value(node, attribute_name)
25
+ unless node.blank?
26
+ attribute = node.attributes.find { |key, attribute| key == attribute_name}
27
+ attribute[1].value if attribute.present?
28
+ end
29
+ end
19
30
  end
20
31
  end
@@ -1,3 +1,3 @@
1
1
  class OOXL
2
- VERSION = "0.0.1.4.12"
2
+ VERSION = "0.0.1.4.13"
3
3
  end
@@ -8,7 +8,8 @@ class OOXL
8
8
  # <v>113944</v>
9
9
  # </c>
10
10
  class Cell
11
- attr_accessor :id, :type_id, :style_id, :value_id, :shared_strings, :styles
11
+ extend Util
12
+ attr_accessor :id, :type_id, :style_id, :value, :shared_strings, :styles
12
13
 
13
14
  def initialize(**attrs)
14
15
  attrs.each { |property, value| send("#{property}=", value)}
@@ -89,23 +90,33 @@ class OOXL
89
90
  (style.present?) ? style[:fill]: nil
90
91
  end
91
92
 
92
- def value
93
- case type
94
- when :string
95
- (value_id.present?) ? shared_strings[value_id.to_i] : nil
93
+ def self.load_from_node(cell_node, shared_strings, styles)
94
+ type_id = node_attribute_value(cell_node, 't')
95
+ new(id: node_attribute_value(cell_node, 'r'),
96
+ type_id: type_id,
97
+ style_id: node_attribute_value(cell_node, 's'),
98
+ value: extract_value(type_id, cell_node, shared_strings),
99
+ styles: styles )
100
+ end
101
+
102
+ def self.extract_value(type_id, cell_node, shared_strings)
103
+ value_id = cell_node.at('v').try(:text)
104
+
105
+ case type_id
106
+
107
+ when 's'
108
+ (value_id.present?) ? shared_strings[ Integer(value_id) ] : nil
109
+
110
+ when 'inlineStr'
111
+ value = []
112
+ cell_node.xpath('is').each do |text_node|
113
+ value << text_node.xpath('r/t|t').map { |value_node| value_node.text}.join('')
114
+ end
115
+ value.join('')
96
116
  else
97
- # TODO: to support other types soon
98
117
  value_id
99
118
  end
100
- end
101
119
 
102
- def self.load_from_node(cell_node, shared_strings, styles)
103
- new(id: cell_node.attributes["r"].try(:value),
104
- type_id: cell_node.attributes["t"].try(:value),
105
- style_id: cell_node.attributes["s"].try(:value),
106
- value_id: cell_node.at('v').try(:text),
107
- shared_strings: shared_strings,
108
- styles: styles )
109
120
  end
110
121
  end
111
122
 
@@ -8,7 +8,7 @@ class OOXL
8
8
  def self.load_from_node(fill_node)
9
9
  pattern_fill = fill_node.at('patternFill')
10
10
 
11
- pattern_type = pattern_fill.attributes["patternType"].value
11
+ pattern_type = pattern_fill.attributes["patternType"].try(:value)
12
12
  if pattern_type == "solid"
13
13
  fg_color = pattern_fill.at('fgColor')
14
14
  bg_color = pattern_fill.at('bgColor')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ooxl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.4.12
4
+ version: 0.0.1.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Mones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport