ooxml_parser 0.32.0 → 0.33.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/color/ooxml_color.rb +4 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +4 -6
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/checkbox/checkbox_state.rb +26 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/checkbox.rb +35 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/combobox/list_item.rb +26 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/combobox.rb +28 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/dropdown_list.rb +27 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_properties.rb +48 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties/form_text_comb.rb +26 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties/form_text_format.rb +30 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties.rb +45 -0
- data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties.rb +25 -0
- data/lib/ooxml_parser/version.rb +1 -1
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a2c8bb2410020cc3dfcb2126b9888ef47530fbd761e6167bd917fffee6a1351
|
4
|
+
data.tar.gz: 8ae388b40aabe9e72995e1bb5fa747e73253cd4464e414a00db0dcd5a87b0b40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ce96605c0637a4b2865c96088c0c10ddc898e91e7b6d41234bf8da01b598b748416567aff90cfa33b6778b7f16b7bb9397d95e5dde75e551fe524ee6d72dbdb
|
7
|
+
data.tar.gz: eee336b02e4bc827de7771f46ebcf53907957af7505c7da806dad589fe79f5de56b56e89206bc0e2df1d523530a9a7b41cd7a2c22095da97e95bde953e7faaa9
|
@@ -11,6 +11,8 @@ module OoxmlParser
|
|
11
11
|
attr_reader :theme_shade
|
12
12
|
# @return [Integer] theme index
|
13
13
|
attr_reader :theme
|
14
|
+
# @return [Float] theme tint
|
15
|
+
attr_reader :theme_tint
|
14
16
|
# @return [Float] tint
|
15
17
|
attr_reader :tint
|
16
18
|
# @return [Float] Indexed id
|
@@ -58,6 +60,8 @@ module OoxmlParser
|
|
58
60
|
@indexed = value.value.to_i
|
59
61
|
when 'rgb'
|
60
62
|
@rgb = Color.new.parse_hex_string(value.value)
|
63
|
+
when 'themeTint'
|
64
|
+
@theme_tint = value.value.hex.to_f
|
61
65
|
end
|
62
66
|
end
|
63
67
|
self
|
@@ -78,17 +78,15 @@ module OoxmlParser
|
|
78
78
|
# @param node [Nokogiri::XML:Element] node to parse
|
79
79
|
# @return [nil]
|
80
80
|
def parse_color_tag(node)
|
81
|
-
|
81
|
+
color = OoxmlColor.new(parent: self).parse(node)
|
82
|
+
node.attributes.sort.to_h.each do |key, value|
|
82
83
|
case key
|
83
84
|
when 'val'
|
84
85
|
self.font_color = Color.new(parent: self).parse_hex_string(value.value)
|
85
86
|
when 'themeColor'
|
86
|
-
if root_object.theme && root_object.theme.color_scheme[value.value.to_sym]
|
87
|
-
break if value.value == 'text2' || value.value == 'background2' || value.value.include?('accent') # Don't know why. Just works
|
88
|
-
|
89
|
-
self.font_color = root_object.theme.color_scheme[value.value.to_sym].color.dup
|
90
|
-
end
|
87
|
+
self.font_color = root_object.theme.color_scheme[value.value.to_sym].color.dup if root_object.theme && root_object.theme.color_scheme[value.value.to_sym]
|
91
88
|
when 'themeShade'
|
89
|
+
self.font_color = color.value if font_color.none?
|
92
90
|
font_color.calculate_with_shade!(value.value.hex.to_f / 255.0)
|
93
91
|
when 'themeTint'
|
94
92
|
font_color.calculate_with_tint!(1.0 - (value.value.hex.to_f / 255.0))
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `checkedState` tag
|
5
|
+
class CheckBoxState < OOXMLDocumentObject
|
6
|
+
# @return [Integer] number of state symbol
|
7
|
+
attr_reader :value
|
8
|
+
# @return [String] font name
|
9
|
+
attr_reader :font
|
10
|
+
|
11
|
+
# Parse CheckBoxState object
|
12
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
13
|
+
# @return [CheckBoxState] result of parsing
|
14
|
+
def parse(node)
|
15
|
+
node.attributes.each do |key, value|
|
16
|
+
case key
|
17
|
+
when 'val'
|
18
|
+
@value = value.value.to_i
|
19
|
+
when 'font'
|
20
|
+
@font = value.value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/checkbox.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'checkbox/checkbox_state'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for parsing `checkbox` tag
|
6
|
+
class CheckBox < OOXMLDocumentObject
|
7
|
+
# @return [True, False] specifies if checkbox is checked
|
8
|
+
attr_reader :checked
|
9
|
+
# @return [CheckBoxState] options of checked state
|
10
|
+
attr_reader :checked_state
|
11
|
+
# @return [CheckBoxState] options of unchecked state
|
12
|
+
attr_reader :unchecked_state
|
13
|
+
# @return [ValuedChild] group key
|
14
|
+
attr_reader :group_key
|
15
|
+
|
16
|
+
# Parse CheckBox object
|
17
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
18
|
+
# @return [CheckBox] result of parsing
|
19
|
+
def parse(node)
|
20
|
+
node.xpath('*').each do |node_child|
|
21
|
+
case node_child.name
|
22
|
+
when 'checked'
|
23
|
+
@checked = option_enabled?(node_child, 'hidden')
|
24
|
+
when 'checkedState'
|
25
|
+
@checked_state = CheckBoxState.new(parent: self).parse(node_child)
|
26
|
+
when 'uncheckedState'
|
27
|
+
@unchecked_state = CheckBoxState.new(parent: self).parse(node_child)
|
28
|
+
when 'groupKey'
|
29
|
+
@group_key = ValuedChild.new(:string, parent: self).parse(node_child)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
self
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `listItem` tag
|
5
|
+
class ListItem < OOXMLDocumentObject
|
6
|
+
# @return [String] item text
|
7
|
+
attr_reader :text
|
8
|
+
# @return [String] item value
|
9
|
+
attr_reader :value
|
10
|
+
|
11
|
+
# Parse ListItem object
|
12
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
13
|
+
# @return [ListItem] result of parsing
|
14
|
+
def parse(node)
|
15
|
+
node.attributes.each do |key, value|
|
16
|
+
case key
|
17
|
+
when 'displayText'
|
18
|
+
@text = value.value
|
19
|
+
when 'value'
|
20
|
+
@value = value.value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/combobox.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'combobox/list_item'
|
4
|
+
module OoxmlParser
|
5
|
+
# Class for parsing `comboBox` tag
|
6
|
+
class ComboBox < OOXMLDocumentObject
|
7
|
+
# @return [Array<ListItem>] combobox items
|
8
|
+
attr_reader :list_items
|
9
|
+
|
10
|
+
def initialize(parent: nil)
|
11
|
+
@list_items = []
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
# Parse ComboBox object
|
16
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
17
|
+
# @return [ComboBox] result of parsing
|
18
|
+
def parse(node)
|
19
|
+
node.xpath('*').each do |node_child|
|
20
|
+
case node_child.name
|
21
|
+
when 'listItem'
|
22
|
+
@list_items << ListItem.new(parent: self).parse(node_child)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
self
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `dropDownList` tag
|
5
|
+
class DropdownList < OOXMLDocumentObject
|
6
|
+
# @return [Array<ListItem>] dropdown items
|
7
|
+
attr_reader :list_items
|
8
|
+
|
9
|
+
def initialize(parent: nil)
|
10
|
+
@list_items = []
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
# Parse DropdownList object
|
15
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
16
|
+
# @return [DropdownList] result of parsing
|
17
|
+
def parse(node)
|
18
|
+
node.xpath('*').each do |node_child|
|
19
|
+
case node_child.name
|
20
|
+
when 'listItem'
|
21
|
+
@list_items << ListItem.new(parent: self).parse(node_child)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `formPr` tag
|
5
|
+
class FormProperties < OOXMLDocumentObject
|
6
|
+
# @return [String] field key
|
7
|
+
attr_reader :key
|
8
|
+
# @return [String] text of tooltip
|
9
|
+
attr_reader :help_text
|
10
|
+
# @return [True, False] specifies if field is required
|
11
|
+
attr_reader :required
|
12
|
+
# @return [Shade] shade of field
|
13
|
+
attr_reader :shade
|
14
|
+
# @return [BordersProperties] border of field
|
15
|
+
attr_reader :border
|
16
|
+
|
17
|
+
def initialize(parent: nil)
|
18
|
+
@required = false
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
# Parse FormProperties object
|
23
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
24
|
+
# @return [FormProperties] result of parsing
|
25
|
+
def parse(node)
|
26
|
+
node.attributes.each do |key, value|
|
27
|
+
case key
|
28
|
+
when 'key'
|
29
|
+
@key = value.value
|
30
|
+
when 'helpText'
|
31
|
+
@help_text = value.value
|
32
|
+
when 'required'
|
33
|
+
@required = option_enabled?(value)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
node.xpath('*').each do |node_child|
|
38
|
+
case node_child.name
|
39
|
+
when 'shd'
|
40
|
+
@shade = Shade.new(parent: self).parse(node_child)
|
41
|
+
when 'border'
|
42
|
+
@border = BordersProperties.new(parent: self).parse(node_child)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
self
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `comb` tag
|
5
|
+
class FormTextComb < OOXMLDocumentObject
|
6
|
+
# @return [OoxmlSize] field width
|
7
|
+
attr_reader :width
|
8
|
+
# @return [Symbol] width rule
|
9
|
+
attr_reader :width_rule
|
10
|
+
|
11
|
+
# Parse FormTextComb object
|
12
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
13
|
+
# @return [FormTextComb] result of parsing
|
14
|
+
def parse(node)
|
15
|
+
node.attributes.each do |key, value|
|
16
|
+
case key
|
17
|
+
when 'width'
|
18
|
+
@width = OoxmlSize.new(value.value.to_f)
|
19
|
+
when 'wRule'
|
20
|
+
@width_rule = value.value.to_sym
|
21
|
+
end
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing `format` tag
|
5
|
+
class FormTextFormat < OOXMLDocumentObject
|
6
|
+
# @return [Symbol] format type
|
7
|
+
attr_reader :type
|
8
|
+
# @return [String] value for custom formats
|
9
|
+
attr_reader :value
|
10
|
+
# @return [String] allowed symbols
|
11
|
+
attr_reader :symbols
|
12
|
+
|
13
|
+
# Parse FormTextFormat object
|
14
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
15
|
+
# @return [FormTextFormat] result of parsing
|
16
|
+
def parse(node)
|
17
|
+
node.attributes.each do |key, value|
|
18
|
+
case key
|
19
|
+
when 'type'
|
20
|
+
@type = value.value.to_sym
|
21
|
+
when 'val'
|
22
|
+
@value = value.value
|
23
|
+
when 'symbols'
|
24
|
+
@symbols = value.value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
self
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'form_text_properties/form_text_comb'
|
4
|
+
require_relative 'form_text_properties/form_text_format'
|
5
|
+
module OoxmlParser
|
6
|
+
# Class for parsing `textFormPr` tag
|
7
|
+
class FormTextProperties < OOXMLDocumentObject
|
8
|
+
# @return [True, False] specifies if field is multiline
|
9
|
+
attr_reader :multiline
|
10
|
+
# @return [True, False] specifies if size of field should be autofit
|
11
|
+
attr_reader :autofit
|
12
|
+
# @return [FormTextComb] parameters of text justification
|
13
|
+
attr_reader :comb
|
14
|
+
# @return [ValuedChild] characters limit
|
15
|
+
attr_reader :maximum_characters
|
16
|
+
# @return [FormTextFormat] text format
|
17
|
+
attr_reader :format
|
18
|
+
|
19
|
+
# Parse FormTextProperties object
|
20
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
21
|
+
# @return [FormTextProperties] result of parsing
|
22
|
+
def parse(node)
|
23
|
+
node.attributes.each do |key, value|
|
24
|
+
case key
|
25
|
+
when 'multiLine'
|
26
|
+
@multiline = option_enabled?(value)
|
27
|
+
when 'autoFit'
|
28
|
+
@autofit = option_enabled?(value)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
node.xpath('*').each do |node_child|
|
33
|
+
case node_child.name
|
34
|
+
when 'comb'
|
35
|
+
@comb = FormTextComb.new(parent: self).parse(node_child)
|
36
|
+
when 'maxCharacters'
|
37
|
+
@maximum_characters = ValuedChild.new(:integer, parent: self).parse(node_child)
|
38
|
+
when 'format'
|
39
|
+
@format = FormTextFormat.new(parent: self).parse(node_child)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
self
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,5 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'sdt_properties/form_properties'
|
4
|
+
require_relative 'sdt_properties/form_text_properties'
|
5
|
+
require_relative 'sdt_properties/combobox'
|
6
|
+
require_relative 'sdt_properties/dropdown_list'
|
7
|
+
require_relative 'sdt_properties/checkbox'
|
3
8
|
module OoxmlParser
|
4
9
|
# Class for parsing `w:sdtPr` tags
|
5
10
|
class SDTProperties < OOXMLDocumentObject
|
@@ -9,6 +14,16 @@ module OoxmlParser
|
|
9
14
|
attr_reader :tag
|
10
15
|
# @return [ValuedChild] Locking Setting
|
11
16
|
attr_reader :lock
|
17
|
+
# @return [ComboBox] combobox
|
18
|
+
attr_reader :combobox
|
19
|
+
# @return [DropdownList] dropdown list
|
20
|
+
attr_reader :dropdown_list
|
21
|
+
# @return [CheckBox] checkbox
|
22
|
+
attr_reader :checkbox
|
23
|
+
# @return [FormProperties] form properties
|
24
|
+
attr_reader :form_properties
|
25
|
+
# @return [FormTextProperties] properties of text in form
|
26
|
+
attr_reader :form_text_properties
|
12
27
|
|
13
28
|
# Parse SDTProperties object
|
14
29
|
# @param node [Nokogiri::XML:Element] node to parse
|
@@ -22,6 +37,16 @@ module OoxmlParser
|
|
22
37
|
@tag = ValuedChild.new(:string, parent: self).parse(node_child)
|
23
38
|
when 'lock'
|
24
39
|
@lock = ValuedChild.new(:symbol, parent: self).parse(node_child)
|
40
|
+
when 'comboBox'
|
41
|
+
@combobox = ComboBox.new(parent: self).parse(node_child)
|
42
|
+
when 'dropDownList'
|
43
|
+
@dropdown_list = DropdownList.new(parent: self).parse(node_child)
|
44
|
+
when 'checkbox'
|
45
|
+
@checkbox = CheckBox.new(parent: self).parse(node_child)
|
46
|
+
when 'formPr'
|
47
|
+
@form_properties = FormProperties.new(parent: self).parse(node_child)
|
48
|
+
when 'textFormPr'
|
49
|
+
@form_text_properties = FormTextProperties.new(parent: self).parse(node_child)
|
25
50
|
end
|
26
51
|
end
|
27
52
|
self
|
data/lib/ooxml_parser/version.rb
CHANGED
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.33.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-10-
|
13
|
+
date: 2022-10-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -424,6 +424,15 @@ files:
|
|
424
424
|
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/inserted.rb
|
425
425
|
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_content.rb
|
426
426
|
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties.rb
|
427
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/checkbox.rb
|
428
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/checkbox/checkbox_state.rb
|
429
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/combobox.rb
|
430
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/combobox/list_item.rb
|
431
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/dropdown_list.rb
|
432
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_properties.rb
|
433
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties.rb
|
434
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties/form_text_comb.rb
|
435
|
+
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/sdt/sdt_properties/form_text_properties/form_text_format.rb
|
427
436
|
- lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/structured_document_tag.rb
|
428
437
|
- lib/ooxml_parser/docx_parser/document_structure/header_footer.rb
|
429
438
|
- lib/ooxml_parser/docx_parser/document_structure/numbering.rb
|
@@ -610,7 +619,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
610
619
|
- !ruby/object:Gem::Version
|
611
620
|
version: '0'
|
612
621
|
requirements: []
|
613
|
-
rubygems_version: 3.3.
|
622
|
+
rubygems_version: 3.3.24
|
614
623
|
signing_key:
|
615
624
|
specification_version: 4
|
616
625
|
summary: OoxmlParser Gem
|