ooxml_parser 0.30.0 → 0.32.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/content_types.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +9 -4
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/bullet_image.rb +22 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/numbering_properties.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/paragraph_borders.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/paragraph_spacing.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties/paragraph_stlye_ref.rb → paragraph_properties/paragraph_style_ref.rb} +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/spacing/line_spacing.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/spacing.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/tabs/tab.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/{paragrpah_properties → paragraph_properties}/tabs.rb +0 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +9 -6
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +4 -0
- data/lib/ooxml_parser/docx_parser/document_structure/numbering.rb +1 -1
- data/lib/ooxml_parser/pptx_parser/presentation/comment_authors.rb +1 -1
- data/lib/ooxml_parser/pptx_parser/presentation/presentation_comments.rb +1 -1
- data/lib/ooxml_parser/version.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/workbook/pivot_table_definition.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/workbook/workbook_properties.rb +27 -0
- data/lib/ooxml_parser/xlsx_parser/workbook.rb +13 -1
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cf7caeb2bfc8c48e6727c5a35c8514e07cf85fe2f528e742dd96be9473b3318
|
4
|
+
data.tar.gz: 07e1d21315c8dcd83664019f93cc1992926e176024420bd9fcdbc4de0837f9dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 743b318ed40ff1805d7c6db6f32532dca25c6452be286808fcd52e5992e41bfa0a36de2574fcc828984f4dee095a75ba80cfc2221c49ef923db1880092ff9d83
|
7
|
+
data.tar.gz: 781db58bd859d241763049196327cfed403d3eb2fbb5288e9018a05eabab1f69b4115783e43166817e08e8e13485c25d1ada81db0cede73b82af38d52c4ca493
|
@@ -21,7 +21,7 @@ module OoxmlParser
|
|
21
21
|
# Parse ContentTypes object
|
22
22
|
# @return [ContentTypes] result of parsing
|
23
23
|
def parse
|
24
|
-
doc =
|
24
|
+
doc = parse_xml("#{root_object.unpacked_folder}/[Content_Types].xml")
|
25
25
|
node = doc.xpath('*').first
|
26
26
|
|
27
27
|
node.xpath('*').each do |node_child|
|
@@ -3,6 +3,11 @@
|
|
3
3
|
module OoxmlParser
|
4
4
|
# Class for working with coordinates
|
5
5
|
class Coordinates
|
6
|
+
# @return [Regexp] regexp for row name
|
7
|
+
ROW_REGEXP = /[a-z]/i.freeze
|
8
|
+
# @return [Regexp] regexp for column name
|
9
|
+
COLUMN_REGEXP = /\d/.freeze
|
10
|
+
|
6
11
|
attr_accessor :row, :column, :list
|
7
12
|
|
8
13
|
def initialize(row = nil, column = nil, list = nil)
|
@@ -30,10 +35,10 @@ module OoxmlParser
|
|
30
35
|
range = arguments_string.split(':')
|
31
36
|
|
32
37
|
difference = []
|
33
|
-
symbols_from = range.first.scan(
|
34
|
-
symbols_to = range.last.scan(
|
35
|
-
digits_from = range.first.scan(
|
36
|
-
digits_to = range.last.scan(
|
38
|
+
symbols_from = range.first.scan(ROW_REGEXP).join
|
39
|
+
symbols_to = range.last.scan(ROW_REGEXP).join
|
40
|
+
digits_from = range.first.scan(COLUMN_REGEXP).join
|
41
|
+
digits_to = range.last.scan(COLUMN_REGEXP).join
|
37
42
|
|
38
43
|
difference[0] = [symbols_from, symbols_to] unless symbols_from == symbols_to
|
39
44
|
difference[1] = [digits_from, digits_to] unless digits_from == digits_to
|
data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/bullet_image.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing <buBlip> tag
|
5
|
+
class BulletImage < OOXMLDocumentObject
|
6
|
+
# @return [FileReference] image structure
|
7
|
+
attr_reader :file_reference
|
8
|
+
|
9
|
+
# Parse BulletImage object
|
10
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
11
|
+
# @return [BulletImage] result of parsing
|
12
|
+
def parse(node)
|
13
|
+
node.xpath('*').each do |node_child|
|
14
|
+
case node_child.name
|
15
|
+
when 'blip'
|
16
|
+
@file_reference = FileReference.new(parent: self).parse(node_child)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
self
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module OoxmlParser
|
4
4
|
# Class for parsing `numPr` tags
|
5
5
|
class NumberingProperties < OOXMLDocumentObject
|
6
|
-
attr_accessor :size, :font, :symbol, :start_at, :type, :ilvl, :numbering_properties
|
6
|
+
attr_accessor :size, :font, :symbol, :start_at, :type, :image, :ilvl, :numbering_properties
|
7
7
|
|
8
8
|
def initialize(ilvl = 0, parent: nil)
|
9
9
|
@ilvl = ilvl
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
6
|
-
require_relative '
|
7
|
-
require_relative '
|
8
|
-
require_relative '
|
3
|
+
require_relative 'paragraph_properties/numbering_properties'
|
4
|
+
require_relative 'paragraph_properties/paragraph_borders'
|
5
|
+
require_relative 'paragraph_properties/paragraph_spacing'
|
6
|
+
require_relative 'paragraph_properties/paragraph_style_ref'
|
7
|
+
require_relative 'paragraph_properties/spacing'
|
8
|
+
require_relative 'paragraph_properties/tabs'
|
9
|
+
require_relative 'paragraph_properties/bullet_image'
|
9
10
|
module OoxmlParser
|
10
11
|
# Class for data for ParagraphProperties
|
11
12
|
class ParagraphProperties < OOXMLDocumentObject
|
@@ -74,6 +75,8 @@ module OoxmlParser
|
|
74
75
|
@numbering.font = node_child.attribute('typeface').value
|
75
76
|
when 'buChar'
|
76
77
|
@numbering.symbol = node_child.attribute('char').value
|
78
|
+
when 'buBlip'
|
79
|
+
@numbering.image = BulletImage.new(parent: self).parse(node_child)
|
77
80
|
when 'buAutoNum'
|
78
81
|
@numbering.type = node_child.attribute('type').value.to_sym
|
79
82
|
@numbering.start_at = node_child.attribute('startAt').value if node_child.attribute('startAt')
|
@@ -47,6 +47,8 @@ module OoxmlParser
|
|
47
47
|
attr_accessor :shade
|
48
48
|
# @return [RunStyle] run style
|
49
49
|
attr_accessor :run_style
|
50
|
+
# @return [ValuedChild] ligatures type
|
51
|
+
attr_reader :ligatures
|
50
52
|
|
51
53
|
def initialize(params = {})
|
52
54
|
@font_name = params.fetch(:font_name, '')
|
@@ -124,6 +126,8 @@ module OoxmlParser
|
|
124
126
|
@shade = Shade.new(parent: self).parse(node_child)
|
125
127
|
when 'rStyle'
|
126
128
|
@run_style = RunStyle.new(parent: self).parse(node_child)
|
129
|
+
when 'ligatures'
|
130
|
+
@ligatures = ValuedChild.new(:symbol, parent: self).parse(node_child)
|
127
131
|
end
|
128
132
|
end
|
129
133
|
@font_color = DocxColorScheme.new(parent: self).parse(node)
|
@@ -41,7 +41,7 @@ module OoxmlParser
|
|
41
41
|
numbering_xml = "#{root_object.unpacked_folder}word/numbering.xml"
|
42
42
|
return nil unless File.exist?(numbering_xml)
|
43
43
|
|
44
|
-
node = parse_xml(
|
44
|
+
node = parse_xml(numbering_xml)
|
45
45
|
node.xpath('w:numbering/*').each do |numbering_child_node|
|
46
46
|
case numbering_child_node.name
|
47
47
|
when 'abstractNum'
|
@@ -18,7 +18,7 @@ module OoxmlParser
|
|
18
18
|
def parse(file = "#{root_object.unpacked_folder}/#{root_object.root_subfolder}/commentAuthors.xml")
|
19
19
|
return nil unless File.exist?(file)
|
20
20
|
|
21
|
-
document = parse_xml(
|
21
|
+
document = parse_xml(file)
|
22
22
|
node = document.xpath('*').first
|
23
23
|
|
24
24
|
node.xpath('*').each do |node_child|
|
@@ -18,7 +18,7 @@ module OoxmlParser
|
|
18
18
|
def parse(file = "#{root_object.unpacked_folder}/#{root_object.root_subfolder}/comments/comment1.xml")
|
19
19
|
return nil unless File.exist?(file)
|
20
20
|
|
21
|
-
document = parse_xml(
|
21
|
+
document = parse_xml(file)
|
22
22
|
node = document.xpath('*').first
|
23
23
|
|
24
24
|
node.xpath('*').each do |node_child|
|
data/lib/ooxml_parser/version.rb
CHANGED
@@ -55,7 +55,7 @@ module OoxmlParser
|
|
55
55
|
# @param [String] file path
|
56
56
|
# @return [PivotTableDefinition] result of parsing
|
57
57
|
def parse(file)
|
58
|
-
doc =
|
58
|
+
doc = parse_xml("#{root_object.unpacked_folder}/#{file}")
|
59
59
|
node = doc.xpath('//xmlns:pivotTableDefinition').first
|
60
60
|
node.attributes.each do |key, value|
|
61
61
|
case key
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing <workbookPr> tag
|
5
|
+
class WorkbookProperties < OOXMLDocumentObject
|
6
|
+
# @return [True, False] Specifies if 1904 date system is used in workbook
|
7
|
+
attr_reader :date1904
|
8
|
+
|
9
|
+
def initialize(parent: nil)
|
10
|
+
@date1904 = false
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
# Parse WorkbookProperties data
|
15
|
+
# @param [Nokogiri::XML:Element] node with WorkbookProperties data
|
16
|
+
# @return [WorkbookProperties] value of WorkbookProperties
|
17
|
+
def parse(node)
|
18
|
+
node.attributes.each do |key, value|
|
19
|
+
case key
|
20
|
+
when 'date1904'
|
21
|
+
@date1904 = attribute_enabled?(value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -4,6 +4,7 @@ require_relative 'workbook/chartsheet'
|
|
4
4
|
require_relative 'workbook/pivot_cache'
|
5
5
|
require_relative 'workbook/pivot_table_definition'
|
6
6
|
require_relative 'workbook/defined_name'
|
7
|
+
require_relative 'workbook/workbook_properties'
|
7
8
|
require_relative 'workbook/workbook_protection'
|
8
9
|
require_relative 'workbook/shared_string_table'
|
9
10
|
require_relative 'workbook/style_sheet'
|
@@ -31,6 +32,8 @@ module OoxmlParser
|
|
31
32
|
attr_accessor :pivot_table_definitions
|
32
33
|
# @return [Array<DefinedName>] list of defined names
|
33
34
|
attr_reader :defined_names
|
35
|
+
# @return [WorkbookProperties] workbook properties
|
36
|
+
attr_reader :workbook_properties
|
34
37
|
# @return [WorkbookProtection] protection of workbook structure
|
35
38
|
attr_reader :workbook_protection
|
36
39
|
|
@@ -121,7 +124,7 @@ module OoxmlParser
|
|
121
124
|
parse_shared_strings
|
122
125
|
@root_subfolder = 'xl/'
|
123
126
|
root_object.add_to_xmls_stack('xl/workbook.xml')
|
124
|
-
@doc =
|
127
|
+
@doc = parse_xml(root_object.current_xml)
|
125
128
|
@theme = PresentationTheme.new(parent: self).parse("xl/#{link_to_theme_xml}") if link_to_theme_xml
|
126
129
|
@style_sheet = StyleSheet.new(parent: self).parse
|
127
130
|
@doc.xpath('xmlns:workbook/xmlns:sheets/xmlns:sheet').each do |sheet|
|
@@ -137,6 +140,7 @@ module OoxmlParser
|
|
137
140
|
parse_pivot_cache
|
138
141
|
parse_pivot_table
|
139
142
|
parse_defined_names
|
143
|
+
parse_workbook_properties
|
140
144
|
parse_workbook_protection
|
141
145
|
root_object.xmls_stack.pop
|
142
146
|
self
|
@@ -170,6 +174,14 @@ module OoxmlParser
|
|
170
174
|
end
|
171
175
|
end
|
172
176
|
|
177
|
+
# Perform parsing of workbook properties
|
178
|
+
def parse_workbook_properties
|
179
|
+
workbook_properties = @doc.search('//xmlns:workbookPr').first
|
180
|
+
return nil unless workbook_properties
|
181
|
+
|
182
|
+
@workbook_properties = WorkbookProperties.new(parent: self).parse(workbook_properties)
|
183
|
+
end
|
184
|
+
|
173
185
|
# Perform parsing of workbook protection
|
174
186
|
def parse_workbook_protection
|
175
187
|
workbook_protection = @doc.search('//xmlns:workbookProtection').first
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ooxml_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.32.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ONLYOFFICE
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-10-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -312,6 +312,15 @@ files:
|
|
312
312
|
- lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_object_attribute_helper.rb
|
313
313
|
- lib/ooxml_parser/common_parser/common_data/paragraph.rb
|
314
314
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb
|
315
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/bullet_image.rb
|
316
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/numbering_properties.rb
|
317
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/paragraph_borders.rb
|
318
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/paragraph_spacing.rb
|
319
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/paragraph_style_ref.rb
|
320
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/spacing.rb
|
321
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/spacing/line_spacing.rb
|
322
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/tabs.rb
|
323
|
+
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties/tabs/tab.rb
|
315
324
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb
|
316
325
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb
|
317
326
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb
|
@@ -321,14 +330,6 @@ files:
|
|
321
330
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb
|
322
331
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/size.rb
|
323
332
|
- lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/text.rb
|
324
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb
|
325
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb
|
326
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_spacing.rb
|
327
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_stlye_ref.rb
|
328
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb
|
329
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing/line_spacing.rb
|
330
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs.rb
|
331
|
-
- lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs/tab.rb
|
332
333
|
- lib/ooxml_parser/common_parser/common_data/paragraph/text_field.rb
|
333
334
|
- lib/ooxml_parser/common_parser/common_data/relationships.rb
|
334
335
|
- lib/ooxml_parser/common_parser/common_data/relationships/relationship.rb
|
@@ -532,6 +533,7 @@ files:
|
|
532
533
|
- lib/ooxml_parser/xlsx_parser/workbook/style_sheet/xlsx_borders.rb
|
533
534
|
- lib/ooxml_parser/xlsx_parser/workbook/style_sheet/xlsx_borders/xlsx_border.rb
|
534
535
|
- lib/ooxml_parser/xlsx_parser/workbook/workbook_helpers.rb
|
536
|
+
- lib/ooxml_parser/xlsx_parser/workbook/workbook_properties.rb
|
535
537
|
- lib/ooxml_parser/xlsx_parser/workbook/workbook_protection.rb
|
536
538
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet.rb
|
537
539
|
- lib/ooxml_parser/xlsx_parser/workbook/worksheet/excel_comments.rb
|