ooxml_parser 0.37.0 → 0.38.0
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 +4 -4
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_legend.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +9 -10
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_document_object_helper.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/numbering_properties.rb +3 -2
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +9 -1
- data/lib/ooxml_parser/common_parser/common_data/valued_child.rb +2 -1
- data/lib/ooxml_parser/docx_parser/document_structure/comments/comment.rb +12 -0
- data/lib/ooxml_parser/docx_parser/document_structure/comments_extended/comment_extended.rb +4 -0
- data/lib/ooxml_parser/pptx_parser/presentation/slide/slide/timing/time_node_list/time_node/common_timing.rb +1 -1
- data/lib/ooxml_parser/pptx_parser/presentation/slide/slide_helper.rb +2 -1
- data/lib/ooxml_parser/version.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/workbook/pivot_table_definition/pivot_fields/pivot_field.rb +4 -0
- data/lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/user_protected_ranges.rb +32 -0
- data/lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
- data/lib/ooxml_parser.rb +1 -0
- data/lib/truffleruby_patch.rb +12 -0
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bc1ff538795412ae50d0eaef25915e142f6b8834d316c42ee9900dcf215ed0c
|
4
|
+
data.tar.gz: 8e807903a12ec8dfdc9b8a490de8fdd4b4df01135b5f9d0388de86613ae30457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e652d471af15d19de026c9c17a462829bc0f6393207d81a982e2584ea03f4392915ac36726e3a6a1b147296b40c89f42641ae903ccc71ddbbe6c72407bb7096f
|
7
|
+
data.tar.gz: 05a985c15a174a8a301c5b67f75025db076e9bf7a2e7f7c991a7724422b7abea37a359a4260a978e22421a0299e33fd17dbca619c34cfc6d49a0461938d4c602
|
@@ -16,7 +16,7 @@ module OoxmlParser
|
|
16
16
|
# If there is overlay - return :right_overlay
|
17
17
|
# @return [Symbol] overlay and position type
|
18
18
|
def position_with_overlay
|
19
|
-
return "#{@position}_overlay"
|
19
|
+
return :"#{@position}_overlay" if overlay
|
20
20
|
|
21
21
|
@position
|
22
22
|
end
|
@@ -4,9 +4,9 @@ module OoxmlParser
|
|
4
4
|
# Class for working with coordinates
|
5
5
|
class Coordinates
|
6
6
|
# @return [Regexp] regexp for row name
|
7
|
-
ROW_REGEXP = /[a-z]/i
|
7
|
+
ROW_REGEXP = /[a-z]/i
|
8
8
|
# @return [Regexp] regexp for column name
|
9
|
-
COLUMN_REGEXP = /\d
|
9
|
+
COLUMN_REGEXP = /\d/
|
10
10
|
|
11
11
|
attr_accessor :row, :column, :list
|
12
12
|
|
@@ -28,8 +28,9 @@ module OoxmlParser
|
|
28
28
|
sheet_name = 'Sheet1'
|
29
29
|
|
30
30
|
if arguments_string.include?('!')
|
31
|
-
|
32
|
-
|
31
|
+
split_by_exclamation = arguments_string.split('!', 2)
|
32
|
+
sheet_name = "#{split_by_exclamation[0]}!"
|
33
|
+
arguments_string = split_by_exclamation[1]
|
33
34
|
end
|
34
35
|
|
35
36
|
range = arguments_string.split(':')
|
@@ -71,12 +72,10 @@ module OoxmlParser
|
|
71
72
|
# @param arguments_string [String] string
|
72
73
|
# @return [Array] result
|
73
74
|
def parse_coordinates_array(arguments_string)
|
74
|
-
result = []
|
75
75
|
coord_array = arguments_string.split(',')
|
76
|
-
coord_array.
|
77
|
-
|
76
|
+
coord_array.map do |current_coord|
|
77
|
+
parser_coordinates_range(current_coord)
|
78
78
|
end
|
79
|
-
result
|
80
79
|
end
|
81
80
|
|
82
81
|
# This method check is argument contains coordinate
|
@@ -113,8 +112,8 @@ module OoxmlParser
|
|
113
112
|
# This method takes @column string
|
114
113
|
# and converts into integer
|
115
114
|
def column_number
|
116
|
-
@column.reverse.each_char.reduce(0) do |result, char|
|
117
|
-
result + ((char.downcase.ord - 96) * (26
|
115
|
+
@column.reverse.each_char.with_index.reduce(0) do |result, (char, idx)|
|
116
|
+
result + ((char.downcase.ord - 96) * (26**idx))
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
@@ -15,7 +15,7 @@ module OoxmlParser
|
|
15
15
|
|
16
16
|
if attribute_value.is_a?(Array)
|
17
17
|
attribute_value.each_with_index do |object_element, index|
|
18
|
-
result_hash["#{current_attribute}_#{index}"
|
18
|
+
result_hash[:"#{current_attribute}_#{index}"] = object_element.to_hash
|
19
19
|
end
|
20
20
|
else
|
21
21
|
result_hash[current_attribute.to_sym] = if attribute_value.respond_to?(:to_hash)
|
@@ -46,10 +46,11 @@ module OoxmlParser
|
|
46
46
|
@i_level.value
|
47
47
|
end
|
48
48
|
|
49
|
+
# @param [Integer] i_level to find, current one by default
|
49
50
|
# @return [AbstractNumbering] level list of current numbering
|
50
|
-
def numbering_level_current
|
51
|
+
def numbering_level_current(i_level = ilvl)
|
51
52
|
abstruct_numbering.level_list.each do |current_ilvl|
|
52
|
-
return current_ilvl if current_ilvl.ilvl ==
|
53
|
+
return current_ilvl if current_ilvl.ilvl == i_level
|
53
54
|
end
|
54
55
|
nil
|
55
56
|
end
|
@@ -20,9 +20,17 @@ module OoxmlParser
|
|
20
20
|
|
21
21
|
TABLE_STYLES_NAMES_HASH.each do |key, value|
|
22
22
|
define_method(key) do
|
23
|
+
found = nil
|
23
24
|
@table_style_properties_list.each do |table_style|
|
24
|
-
|
25
|
+
# Cannot just use return in block
|
26
|
+
# because of TruffleRuby bug (cause LocalJumpError)
|
27
|
+
# https://github.com/oracle/truffleruby/issues/2438
|
28
|
+
if table_style.type == value
|
29
|
+
found = table_style
|
30
|
+
break
|
31
|
+
end
|
25
32
|
end
|
33
|
+
found
|
26
34
|
end
|
27
35
|
end
|
28
36
|
|
@@ -3,8 +3,14 @@
|
|
3
3
|
module OoxmlParser
|
4
4
|
# Comment Data
|
5
5
|
class Comment < OOXMLDocumentObject
|
6
|
+
# @return [String] name of the author
|
7
|
+
attr_reader :author
|
8
|
+
# @return [String] date of the comment, in string, not parsed
|
9
|
+
attr_reader :date_string
|
6
10
|
# @return [Integer] id of comment
|
7
11
|
attr_reader :id
|
12
|
+
# @return [String] initials of the author
|
13
|
+
attr_reader :initials
|
8
14
|
# @return [Array<DocxParagraph>] array of paragraphs
|
9
15
|
attr_reader :paragraphs
|
10
16
|
|
@@ -20,8 +26,14 @@ module OoxmlParser
|
|
20
26
|
def parse(node)
|
21
27
|
node.attributes.each do |key, value|
|
22
28
|
case key
|
29
|
+
when 'author'
|
30
|
+
@author = value.value.to_s
|
31
|
+
when 'date'
|
32
|
+
@date_string = value.value.to_s
|
23
33
|
when 'id'
|
24
34
|
@id = value.value.to_i
|
35
|
+
when 'initials'
|
36
|
+
@initials = value.value.to_s
|
25
37
|
end
|
26
38
|
end
|
27
39
|
|
@@ -5,6 +5,8 @@ module OoxmlParser
|
|
5
5
|
class CommentExtended < OOXMLDocumentObject
|
6
6
|
# @return [Integer] id of paragraph
|
7
7
|
attr_accessor :paragraph_id
|
8
|
+
# @return [Integer] id of parent paragraph
|
9
|
+
attr_reader :parent_paragraph_id
|
8
10
|
# @return [True, False] is done?
|
9
11
|
attr_accessor :done
|
10
12
|
|
@@ -16,6 +18,8 @@ module OoxmlParser
|
|
16
18
|
case key
|
17
19
|
when 'paraId'
|
18
20
|
@paragraph_id = value.value.to_i
|
21
|
+
when 'paraIdParent'
|
22
|
+
@parent_paragraph_id = value.value.to_i
|
19
23
|
when 'done'
|
20
24
|
@done = attribute_enabled?(value.value)
|
21
25
|
end
|
@@ -62,7 +62,8 @@ module OoxmlParser
|
|
62
62
|
def content_distribute(object, slide_size)
|
63
63
|
return %i[horizontally vertically] if content_horizontal_align(object, slide_size) == :center && content_vertical_align(object, slide_size) == :middle
|
64
64
|
return [:horizontally] if content_horizontal_align(object, slide_size) == :center
|
65
|
-
|
65
|
+
|
66
|
+
[:vertically] if content_vertical_align(object, slide_size) == :middle
|
66
67
|
end
|
67
68
|
end
|
68
69
|
end
|
data/lib/ooxml_parser/version.rb
CHANGED
data/lib/ooxml_parser/xlsx_parser/workbook/pivot_table_definition/pivot_fields/pivot_field.rb
CHANGED
@@ -5,6 +5,8 @@ require_relative 'pivot_field/items'
|
|
5
5
|
module OoxmlParser
|
6
6
|
# Class for parsing <pivotField> tag
|
7
7
|
class PivotField < OOXMLDocumentObject
|
8
|
+
# @return [String] field name
|
9
|
+
attr_reader :name
|
8
10
|
# @return [String] axis value
|
9
11
|
attr_reader :axis
|
10
12
|
# @return [True, False] should show all
|
@@ -18,6 +20,8 @@ module OoxmlParser
|
|
18
20
|
def parse(node)
|
19
21
|
node.attributes.each do |key, value|
|
20
22
|
case key
|
23
|
+
when 'name'
|
24
|
+
@name = value.value.to_s
|
21
25
|
when 'axis'
|
22
26
|
@axis = value.value.to_s
|
23
27
|
when 'showAll'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for `UserProtectedRanges` data
|
5
|
+
class UserProtectedRanges < OOXMLDocumentObject
|
6
|
+
# @return [Array<ProtectedRange>] list of UserProtectedRange grodateup
|
7
|
+
attr_reader :user_protected_ranges
|
8
|
+
|
9
|
+
def initialize(parent: nil)
|
10
|
+
@user_protected_ranges = []
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [UserProtectedRange] accessor
|
15
|
+
def [](key)
|
16
|
+
user_protected_ranges[key]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Parse UserProtectedRanges data
|
20
|
+
# @param [Nokogiri::XML:Element] node with UserProtectedRanges data
|
21
|
+
# @return [UserProtectedRange] value of UserProtectedRanges data
|
22
|
+
def parse(node)
|
23
|
+
node.xpath('*').each do |range_node|
|
24
|
+
case range_node.name
|
25
|
+
when 'userProtectedRange'
|
26
|
+
@user_protected_ranges << ProtectedRange.new(parent: self).parse(range_node)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -5,6 +5,7 @@ require_relative 'extension/sparkline_groups'
|
|
5
5
|
require_relative 'extension/x14_table'
|
6
6
|
require_relative 'extension/conditional_formattings'
|
7
7
|
require_relative 'extension/x14_data_field'
|
8
|
+
require_relative 'extension/user_protected_ranges'
|
8
9
|
module OoxmlParser
|
9
10
|
# Class for `ext` data
|
10
11
|
class Extension < OOXMLDocumentObject
|
@@ -18,6 +19,8 @@ module OoxmlParser
|
|
18
19
|
attr_reader :sparkline_groups
|
19
20
|
# @return [X14DataField] pivot data field in x14 namespace
|
20
21
|
attr_accessor :data_field
|
22
|
+
# @return [UserProtectedRanges] list of user protected ranges
|
23
|
+
attr_reader :user_protected_ranges
|
21
24
|
|
22
25
|
# Parse Extension data
|
23
26
|
# @param [Nokogiri::XML:Element] node with Extension data
|
@@ -35,6 +38,8 @@ module OoxmlParser
|
|
35
38
|
@sparkline_groups = SparklineGroups.new(parent: self).parse(column_node)
|
36
39
|
when 'dataField'
|
37
40
|
@data_field = X14DataField.new(parent: self).parse(column_node)
|
41
|
+
when 'userProtectedRanges'
|
42
|
+
@user_protected_ranges = UserProtectedRanges.new(parent: self).parse(column_node)
|
38
43
|
end
|
39
44
|
end
|
40
45
|
self
|
data/lib/ooxml_parser.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Monkey patch around
|
4
|
+
# https://github.com/oracle/truffleruby/commit/cc76155bf509587e1b2954e9de77c558c7c857f4
|
5
|
+
# Remove it as soon as TruffleRuby with fix is released
|
6
|
+
if defined?(Truffle)
|
7
|
+
# MonkeyPatch File stdlib class
|
8
|
+
class File < IO
|
9
|
+
# Monkey patch constant missing on TruffleRuby
|
10
|
+
SHARE_DELETE = 0
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ooxml_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.38.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ONLYOFFICE
|
8
8
|
- Pavel Lobashov
|
9
9
|
- Roman Zagudaev
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2025-02-17 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: nokogiri
|
@@ -453,6 +452,7 @@ files:
|
|
453
452
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group.rb
|
454
453
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group/sparklines.rb
|
455
454
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group/sparklines/sparkline.rb
|
455
|
+
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/user_protected_ranges.rb
|
456
456
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/x14_data_field.rb
|
457
457
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/extension_list/extension/x14_table.rb
|
458
458
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/table_part/table_columns.rb
|
@@ -469,6 +469,7 @@ files:
|
|
469
469
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/xlsx_row.rb
|
470
470
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/xlsx_row/xlsx_cell.rb
|
471
471
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/xlsx_row/xlsx_cell/formula.rb
|
472
|
+
- lib/truffleruby_patch.rb
|
472
473
|
homepage: https://github.com/onlyoffice/ooxml_parser
|
473
474
|
licenses:
|
474
475
|
- AGPL-3.0
|
@@ -479,7 +480,6 @@ metadata:
|
|
479
480
|
homepage_uri: https://github.com/onlyoffice/ooxml_parser
|
480
481
|
source_code_uri: https://github.com/onlyoffice/ooxml_parser
|
481
482
|
rubygems_mfa_required: 'true'
|
482
|
-
post_install_message:
|
483
483
|
rdoc_options: []
|
484
484
|
require_paths:
|
485
485
|
- lib
|
@@ -487,15 +487,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
487
487
|
requirements:
|
488
488
|
- - ">="
|
489
489
|
- !ruby/object:Gem::Version
|
490
|
-
version: '
|
490
|
+
version: '3.1'
|
491
491
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
492
492
|
requirements:
|
493
493
|
- - ">="
|
494
494
|
- !ruby/object:Gem::Version
|
495
495
|
version: '0'
|
496
496
|
requirements: []
|
497
|
-
rubygems_version: 3.
|
498
|
-
signing_key:
|
497
|
+
rubygems_version: 3.6.3
|
499
498
|
specification_version: 4
|
500
499
|
summary: OoxmlParser Gem
|
501
500
|
test_files: []
|