ooxml_parser 0.12.2 → 0.14.2
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.rb +6 -6
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +5 -5
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +1 -7
- data/lib/ooxml_parser/version.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/defined_name.rb +33 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb +22 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb +88 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb +47 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_header_footer/header_footer_child.rb +56 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_header_footer.rb +64 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +12 -0
- metadata +9 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c95b99d5e8d76d3aa01ae9ede02b290bc97e8959dc61fbf33d50e51d52ec9ebc
         | 
| 4 | 
            +
              data.tar.gz: 053d4bd9fcd951f1e9507adc5dd1e281227e9c1643f8fdfc0ecdefea5462bab1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 63c6f712cb033e723c63b44067d08323408cf6fc13472a0af57425899e74630f6389bc6ea77b4bf849d2745c04378f444c4c7932dfaafc94b7108bbeaeadf3e8
         | 
| 7 | 
            +
              data.tar.gz: 86d3dad08a7d0838b4a11cfaf4329b6806b786ee7f791aadf03ea68efcd8e1b94901e4a8b81420412868882b855a606b3144aa28a27d92c01c11e4ed3196881d
         | 
| @@ -53,12 +53,12 @@ module OoxmlParser | |
| 53 53 | 
             
                      @grouping = chart_props_node_child.attribute('val').value.to_sym
         | 
| 54 54 | 
             
                    when 'ser'
         | 
| 55 55 | 
             
                      @series << Series.new(parent: self).parse(chart_props_node_child)
         | 
| 56 | 
            -
                      case @type
         | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 56 | 
            +
                      val = case @type
         | 
| 57 | 
            +
                            when :point, :bubble
         | 
| 58 | 
            +
                              chart_props_node_child.xpath('c:yVal')[0]
         | 
| 59 | 
            +
                            else
         | 
| 60 | 
            +
                              chart_props_node_child.xpath('c:val')[0]
         | 
| 61 | 
            +
                            end
         | 
| 62 62 | 
             
                      next unless val
         | 
| 63 63 | 
             
                      next if val.xpath('c:numRef').empty?
         | 
| 64 64 |  | 
| @@ -9,11 +9,11 @@ module OoxmlParser | |
| 9 9 | 
             
                # @return [String] result of convert of object to string
         | 
| 10 10 | 
             
                def to_s
         | 
| 11 11 | 
             
                  "Table position left: #{left}, "\
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 12 | 
            +
                    "right: #{right}, "\
         | 
| 13 | 
            +
                    "top: #{top}, "\
         | 
| 14 | 
            +
                    "bottom #{bottom}, "\
         | 
| 15 | 
            +
                    "position x: #{position_x}, "\
         | 
| 16 | 
            +
                    "position y: #{position_y}"
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 19 | 
             
                # Parse TablePosition object
         | 
| @@ -26,7 +26,7 @@ module OoxmlParser | |
| 26 26 | 
             
                # @return [String] result of conversion
         | 
| 27 27 | 
             
                def to_s
         | 
| 28 28 | 
             
                  "first line indent: #{@first_line_indent}, left indent: #{@left_indent}, "\
         | 
| 29 | 
            -
             | 
| 29 | 
            +
                    "right indent: #{@right_indent}, hanging indent: #{@hanging_indent}"
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                # Parse Indents
         | 
| @@ -84,7 +84,7 @@ module OoxmlParser | |
| 84 84 |  | 
| 85 85 | 
             
                # @return [True, false] if structure contain any user data
         | 
| 86 86 | 
             
                def with_data?
         | 
| 87 | 
            -
                  !nonempty_runs.empty? || paragraph_properties | 
| 87 | 
            +
                  !nonempty_runs.empty? || paragraph_properties&.section_properties
         | 
| 88 88 | 
             
                end
         | 
| 89 89 |  | 
| 90 90 | 
             
                # Compare this object to other
         | 
| @@ -269,11 +269,5 @@ module OoxmlParser | |
| 269 269 | 
             
                  nil
         | 
| 270 270 | 
             
                end
         | 
| 271 271 | 
             
                deprecate :sdt, 'nonempty_runs[i]', 2020, 1
         | 
| 272 | 
            -
             | 
| 273 | 
            -
                # @return [OoxmlParser::FrameProperties] Return frame properties
         | 
| 274 | 
            -
                def frame_properties
         | 
| 275 | 
            -
                  paragraph_properties.frame_properties
         | 
| 276 | 
            -
                end
         | 
| 277 | 
            -
                deprecate :frame_properties, 'paragraph_properties.frame_properties', 2020, 1
         | 
| 278 272 | 
             
              end
         | 
| 279 273 | 
             
            end
         | 
    
        data/lib/ooxml_parser/version.rb
    CHANGED
    
    
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OoxmlParser
         | 
| 4 | 
            +
              # Class for parsing <definedName> tag
         | 
| 5 | 
            +
              class DefinedName < OOXMLDocumentObject
         | 
| 6 | 
            +
                # @return [String] Ranges to which defined name refers
         | 
| 7 | 
            +
                attr_reader :range
         | 
| 8 | 
            +
                # @return [String] Name
         | 
| 9 | 
            +
                attr_reader :name
         | 
| 10 | 
            +
                # @return [String] Id of sheet
         | 
| 11 | 
            +
                attr_reader :local_sheet_id
         | 
| 12 | 
            +
                # @return [Symbol] Specifies whether defined name is hidden
         | 
| 13 | 
            +
                attr_reader :hidden
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                # Parse Defined Name data
         | 
| 16 | 
            +
                # @param [Nokogiri::XML:Element] node with DefinedName data
         | 
| 17 | 
            +
                # @return [DefinedName] value of DefinedName
         | 
| 18 | 
            +
                def parse(node)
         | 
| 19 | 
            +
                  @range = node.text
         | 
| 20 | 
            +
                  node.attributes.each do |key, value|
         | 
| 21 | 
            +
                    case key
         | 
| 22 | 
            +
                    when 'name'
         | 
| 23 | 
            +
                      @name = value.value.to_s
         | 
| 24 | 
            +
                    when 'localSheetId'
         | 
| 25 | 
            +
                      @local_sheet_id = value.value.to_i
         | 
| 26 | 
            +
                    when 'hidden'
         | 
| 27 | 
            +
                      @hidden = attribute_enabled?(value)
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
                  self
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OoxmlParser
         | 
| 4 | 
            +
              # Class for `x14:formula1` or `x14:formula2` data
         | 
| 5 | 
            +
              class DataValidationFormula < OOXMLDocumentObject
         | 
| 6 | 
            +
                # @return [Formula] value of formula
         | 
| 7 | 
            +
                attr_reader :formula
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                # Parse DataValidationFormula data
         | 
| 10 | 
            +
                # @param [Nokogiri::XML:Element] node with DataValidationFormula data
         | 
| 11 | 
            +
                # @return [DataValidationFormula] value of DataValidationFormula data
         | 
| 12 | 
            +
                def parse(node)
         | 
| 13 | 
            +
                  node.xpath('*').each do |node_child|
         | 
| 14 | 
            +
                    case node_child.name
         | 
| 15 | 
            +
                    when 'f'
         | 
| 16 | 
            +
                      @formula = Formula.new(parent: self).parse(node_child)
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                  self
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,88 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'data_validation/data_validation_formula'
         | 
| 4 | 
            +
            module OoxmlParser
         | 
| 5 | 
            +
              # Class for `dataValidation` data
         | 
| 6 | 
            +
              class DataValidation < OOXMLDocumentObject
         | 
| 7 | 
            +
                # @return [Boolean] should blank entries be valid
         | 
| 8 | 
            +
                attr_reader :allow_blank
         | 
| 9 | 
            +
                # @return [String] Specifies the message text of the error alert
         | 
| 10 | 
            +
                attr_reader :error
         | 
| 11 | 
            +
                # @return [Symbol] Type of error
         | 
| 12 | 
            +
                attr_reader :error_style
         | 
| 13 | 
            +
                # @return [String] The text of the title bar of the error alert
         | 
| 14 | 
            +
                attr_reader :error_title
         | 
| 15 | 
            +
                # @return [DataValidationFormula] first formula of data validation
         | 
| 16 | 
            +
                attr_reader :formula1
         | 
| 17 | 
            +
                # @return [DataValidationFormula] second formula of data validation
         | 
| 18 | 
            +
                attr_reader :formula2
         | 
| 19 | 
            +
                # @return [Symbol] Input Method Editor (IME) mode
         | 
| 20 | 
            +
                attr_reader :ime_mode
         | 
| 21 | 
            +
                # @return [Symbol] Relational operator used with this data validation
         | 
| 22 | 
            +
                attr_reader :operator
         | 
| 23 | 
            +
                # @return [String] Message text of the input prompt
         | 
| 24 | 
            +
                attr_reader :prompt
         | 
| 25 | 
            +
                # @return [String] Text of the title bar of the input prompt
         | 
| 26 | 
            +
                attr_reader :prompt_title
         | 
| 27 | 
            +
                # @return [String] Ranges to which data validation is applied
         | 
| 28 | 
            +
                attr_reader :reference_sequence
         | 
| 29 | 
            +
                # @return [Symbol] Specifies whether to display the drop-down combo box
         | 
| 30 | 
            +
                attr_reader :show_dropdown
         | 
| 31 | 
            +
                # @return [Symbol] Specifies whether to display the input prompt
         | 
| 32 | 
            +
                attr_reader :show_input_message
         | 
| 33 | 
            +
                # @return [Symbol] Specifies whether to display error alert message
         | 
| 34 | 
            +
                attr_reader :show_error_message
         | 
| 35 | 
            +
                # @return [Symbol] Type of validation
         | 
| 36 | 
            +
                attr_reader :type
         | 
| 37 | 
            +
                # @return [String] UID of validation
         | 
| 38 | 
            +
                attr_reader :uid
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                # Parse DataValidation data
         | 
| 41 | 
            +
                # @param [Nokogiri::XML:Element] node with DataValidation data
         | 
| 42 | 
            +
                # @return [DataValidation] value of DataValidation data
         | 
| 43 | 
            +
                def parse(node)
         | 
| 44 | 
            +
                  node.attributes.each do |key, value|
         | 
| 45 | 
            +
                    case key
         | 
| 46 | 
            +
                    when 'allowBlank'
         | 
| 47 | 
            +
                      @allow_blank = attribute_enabled?(value)
         | 
| 48 | 
            +
                    when 'error'
         | 
| 49 | 
            +
                      @error = value.value.to_s
         | 
| 50 | 
            +
                    when 'errorStyle'
         | 
| 51 | 
            +
                      @error_style = value.value.to_sym
         | 
| 52 | 
            +
                    when 'errorTitle'
         | 
| 53 | 
            +
                      @error_title = value.value.to_s
         | 
| 54 | 
            +
                    when 'imeMode'
         | 
| 55 | 
            +
                      @ime_mode = value.value.to_sym
         | 
| 56 | 
            +
                    when 'operator'
         | 
| 57 | 
            +
                      @operator = value.value.to_sym
         | 
| 58 | 
            +
                    when 'type'
         | 
| 59 | 
            +
                      @type = value.value.to_sym
         | 
| 60 | 
            +
                    when 'prompt'
         | 
| 61 | 
            +
                      @prompt = value.value.to_s
         | 
| 62 | 
            +
                    when 'promptTitle'
         | 
| 63 | 
            +
                      @prompt_title = value.value.to_s
         | 
| 64 | 
            +
                    when 'showDropDown'
         | 
| 65 | 
            +
                      @show_dropdown = attribute_enabled?(value)
         | 
| 66 | 
            +
                    when 'showInputMessage'
         | 
| 67 | 
            +
                      @show_input_message = attribute_enabled?(value)
         | 
| 68 | 
            +
                    when 'showErrorMessage'
         | 
| 69 | 
            +
                      @show_error_message = attribute_enabled?(value)
         | 
| 70 | 
            +
                    when 'uid'
         | 
| 71 | 
            +
                      @uid = value.value.to_s
         | 
| 72 | 
            +
                    end
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  node.xpath('*').each do |node_child|
         | 
| 76 | 
            +
                    case node_child.name
         | 
| 77 | 
            +
                    when 'formula1'
         | 
| 78 | 
            +
                      @formula1 = DataValidationFormula.new(parent: self).parse(node_child)
         | 
| 79 | 
            +
                    when 'formula2'
         | 
| 80 | 
            +
                      @formula2 = DataValidationFormula.new(parent: self).parse(node_child)
         | 
| 81 | 
            +
                    when 'sqref'
         | 
| 82 | 
            +
                      @reference_sequence = node_child.text
         | 
| 83 | 
            +
                    end
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                  self
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'data_validations/data_validation'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module OoxmlParser
         | 
| 6 | 
            +
              # Class for `dataValidations` data
         | 
| 7 | 
            +
              class DataValidations < OOXMLDocumentObject
         | 
| 8 | 
            +
                # @return [Integer] count of validations
         | 
| 9 | 
            +
                attr_reader :count
         | 
| 10 | 
            +
                # @return [Array<DataValidation>] list of data validations
         | 
| 11 | 
            +
                attr_reader :data_validations
         | 
| 12 | 
            +
                # @return [Boolean] is prompts disabled
         | 
| 13 | 
            +
                attr_reader :disable_prompts
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize(parent: nil)
         | 
| 16 | 
            +
                  @data_validations = []
         | 
| 17 | 
            +
                  super
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                # @return [SparklineGroup] accessor
         | 
| 21 | 
            +
                def [](key)
         | 
| 22 | 
            +
                  data_validations[key]
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                # Parse DataValidations data
         | 
| 26 | 
            +
                # @param [Nokogiri::XML:Element] node with DataValidations data
         | 
| 27 | 
            +
                # @return [DataValidations] value of DataValidations data
         | 
| 28 | 
            +
                def parse(node)
         | 
| 29 | 
            +
                  node.attributes.each do |key, value|
         | 
| 30 | 
            +
                    case key
         | 
| 31 | 
            +
                    when 'count'
         | 
| 32 | 
            +
                      @count = value.value.to_i
         | 
| 33 | 
            +
                    when 'disablePrompts'
         | 
| 34 | 
            +
                      @disable_prompts = attribute_enabled?(value)
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  node.xpath('*').each do |node_child|
         | 
| 39 | 
            +
                    case node_child.name
         | 
| 40 | 
            +
                    when 'dataValidation'
         | 
| 41 | 
            +
                      @data_validations << DataValidation.new(parent: self).parse(node_child)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                  self
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| @@ -1,10 +1,13 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require_relative 'extension/data_validations'
         | 
| 3 4 | 
             
            require_relative 'extension/sparkline_groups'
         | 
| 4 5 | 
             
            require_relative 'extension/x14_table'
         | 
| 5 6 | 
             
            module OoxmlParser
         | 
| 6 7 | 
             
              # Class for `ext` data
         | 
| 7 8 | 
             
              class Extension < OOXMLDocumentObject
         | 
| 9 | 
            +
                # @return [DataValidations] list of data validations
         | 
| 10 | 
            +
                attr_accessor :data_validations
         | 
| 8 11 | 
             
                # @return [X14Table] table data in x14 namespace
         | 
| 9 12 | 
             
                attr_accessor :table
         | 
| 10 13 | 
             
                # @return [SparklineGroups] list of groups
         | 
| @@ -16,6 +19,8 @@ module OoxmlParser | |
| 16 19 | 
             
                def parse(node)
         | 
| 17 20 | 
             
                  node.xpath('*').each do |column_node|
         | 
| 18 21 | 
             
                    case column_node.name
         | 
| 22 | 
            +
                    when 'dataValidations'
         | 
| 23 | 
            +
                      @data_validations = DataValidations.new(parent: self).parse(column_node)
         | 
| 19 24 | 
             
                    when 'table'
         | 
| 20 25 | 
             
                      @table = X14Table.new(parent: self).parse(column_node)
         | 
| 21 26 | 
             
                    when 'sparklineGroups'
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OoxmlParser
         | 
| 4 | 
            +
              # Class for parsing header or footer
         | 
| 5 | 
            +
              class HeaderFooterChild < OOXMLDocumentObject
         | 
| 6 | 
            +
                # @return [Symbol] type of header
         | 
| 7 | 
            +
                attr_reader :type
         | 
| 8 | 
            +
                # @return [String] raw text of header
         | 
| 9 | 
            +
                attr_reader :raw_string
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(type: nil, raw_string: nil, parent: nil)
         | 
| 12 | 
            +
                  @type = type
         | 
| 13 | 
            +
                  @raw_string = raw_string
         | 
| 14 | 
            +
                  super(parent: parent)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # Parse HeaderFooterChild data
         | 
| 18 | 
            +
                # @param node [Nokogiri::XML:Element] node to parse
         | 
| 19 | 
            +
                # @return [HeaderFooterChild] result of parsing
         | 
| 20 | 
            +
                def parse(node)
         | 
| 21 | 
            +
                  @raw_string = node.text
         | 
| 22 | 
            +
                  self
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                # @return [String] right part of header
         | 
| 26 | 
            +
                def right
         | 
| 27 | 
            +
                  return @right if @right
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  right = @raw_string.match(/&R(.+)/)
         | 
| 30 | 
            +
                  return nil unless right
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  @right = right[1]
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # @return [String] center part of header
         | 
| 36 | 
            +
                def center
         | 
| 37 | 
            +
                  return @center if @center
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  center = @raw_string.split('&R').first.match(/&C(.+)/)
         | 
| 40 | 
            +
                  return nil unless center
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  @center = center[1]
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                # @return [String] left part of header
         | 
| 46 | 
            +
                def left
         | 
| 47 | 
            +
                  return @left if @left
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  left = @raw_string.gsub("&R#{right}", '')
         | 
| 50 | 
            +
                  left = left.gsub("&C#{center}", '')
         | 
| 51 | 
            +
                  return nil if left == ''
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  left.gsub('&L', '')
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
    
        data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_header_footer.rb
    ADDED
    
    | @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'xlsx_header_footer/header_footer_child'
         | 
| 4 | 
            +
            module OoxmlParser
         | 
| 5 | 
            +
              # Class for parsing <headerFooter> tag
         | 
| 6 | 
            +
              class XlsxHeaderFooter < OOXMLDocumentObject
         | 
| 7 | 
            +
                # @return [Symbol] Specifies whether to align header with margins
         | 
| 8 | 
            +
                attr_reader :align_with_margins
         | 
| 9 | 
            +
                # @return [Symbol] Specifies whether first header is different
         | 
| 10 | 
            +
                attr_reader :different_first
         | 
| 11 | 
            +
                # @return [Symbol] Specifies whether odd and even headers are different
         | 
| 12 | 
            +
                attr_reader :different_odd_even
         | 
| 13 | 
            +
                # @return [Symbol] Specifies whether to scale header with document
         | 
| 14 | 
            +
                attr_reader :scale_with_document
         | 
| 15 | 
            +
                # @return [String] odd header
         | 
| 16 | 
            +
                attr_reader :odd_header
         | 
| 17 | 
            +
                # @return [String] odd footer
         | 
| 18 | 
            +
                attr_reader :odd_footer
         | 
| 19 | 
            +
                # @return [String] even header
         | 
| 20 | 
            +
                attr_reader :even_header
         | 
| 21 | 
            +
                # @return [String] even footer
         | 
| 22 | 
            +
                attr_reader :even_footer
         | 
| 23 | 
            +
                # @return [String] first header
         | 
| 24 | 
            +
                attr_reader :first_header
         | 
| 25 | 
            +
                # @return [String] first footer
         | 
| 26 | 
            +
                attr_reader :first_footer
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                # Parse Header Footer data
         | 
| 29 | 
            +
                # @param node [Nokogiri::XML:Element] node to parse
         | 
| 30 | 
            +
                # @return [XlsxHeaderFooter] result of parsing
         | 
| 31 | 
            +
                def parse(node)
         | 
| 32 | 
            +
                  node.attributes.each do |key, value|
         | 
| 33 | 
            +
                    case key
         | 
| 34 | 
            +
                    when 'alignWithMargins'
         | 
| 35 | 
            +
                      @align_with_margins = attribute_enabled?(value)
         | 
| 36 | 
            +
                    when 'differentFirst'
         | 
| 37 | 
            +
                      @different_first = attribute_enabled?(value)
         | 
| 38 | 
            +
                    when 'differentOddEven'
         | 
| 39 | 
            +
                      @different_odd_even = attribute_enabled?(value)
         | 
| 40 | 
            +
                    when 'scaleWithDoc'
         | 
| 41 | 
            +
                      @scale_with_document = attribute_enabled?(value)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    node.xpath('*').each do |node_child|
         | 
| 45 | 
            +
                      case node_child.name
         | 
| 46 | 
            +
                      when 'oddHeader'
         | 
| 47 | 
            +
                        @odd_header = HeaderFooterChild.new(parent: parent, type: odd_header).parse(node_child)
         | 
| 48 | 
            +
                      when 'oddFooter'
         | 
| 49 | 
            +
                        @odd_footer = HeaderFooterChild.new(parent: parent, type: odd_footer).parse(node_child)
         | 
| 50 | 
            +
                      when 'evenHeader'
         | 
| 51 | 
            +
                        @even_header = HeaderFooterChild.new(parent: parent, type: even_header).parse(node_child)
         | 
| 52 | 
            +
                      when 'evenFooter'
         | 
| 53 | 
            +
                        @even_footer = HeaderFooterChild.new(parent: parent, type: even_footer).parse(node_child)
         | 
| 54 | 
            +
                      when 'firstHeader'
         | 
| 55 | 
            +
                        @first_header = HeaderFooterChild.new(parent: parent, type: first_header).parse(node_child)
         | 
| 56 | 
            +
                      when 'firstFooter'
         | 
| 57 | 
            +
                        @first_footer = HeaderFooterChild.new(parent: parent, type: first_footer).parse(node_child)
         | 
| 58 | 
            +
                      end
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                  self
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
            end
         | 
| @@ -10,6 +10,7 @@ require_relative 'worksheet/worksheet_helper' | |
| 10 10 | 
             
            require_relative 'worksheet/xlsx_column_properties'
         | 
| 11 11 | 
             
            require_relative 'worksheet/xlsx_drawing'
         | 
| 12 12 | 
             
            require_relative 'worksheet/xlsx_row'
         | 
| 13 | 
            +
            require_relative 'worksheet/xlsx_header_footer'
         | 
| 13 14 | 
             
            module OoxmlParser
         | 
| 14 15 | 
             
              # Properties of worksheet
         | 
| 15 16 | 
             
              class Worksheet < OOXMLDocumentObject
         | 
| @@ -28,6 +29,8 @@ module OoxmlParser | |
| 28 29 | 
             
                attr_reader :page_setup
         | 
| 29 30 | 
             
                # @return [ExtensionList] list of extensions
         | 
| 30 31 | 
             
                attr_accessor :extension_list
         | 
| 32 | 
            +
                # @return [XlsxHeaderFooter] header and footer
         | 
| 33 | 
            +
                attr_reader :header_footer
         | 
| 31 34 |  | 
| 32 35 | 
             
                def initialize(parent: nil)
         | 
| 33 36 | 
             
                  @columns = []
         | 
| @@ -124,6 +127,8 @@ module OoxmlParser | |
| 124 127 | 
             
                      @page_setup = PageSetup.new(parent: self).parse(worksheet_node_child)
         | 
| 125 128 | 
             
                    when 'extLst'
         | 
| 126 129 | 
             
                      @extension_list = ExtensionList.new(parent: self).parse(worksheet_node_child)
         | 
| 130 | 
            +
                    when 'headerFooter'
         | 
| 131 | 
            +
                      @header_footer = XlsxHeaderFooter.new(parent: self).parse(worksheet_node_child)
         | 
| 127 132 | 
             
                    end
         | 
| 128 133 | 
             
                  end
         | 
| 129 134 | 
             
                  parse_comments
         | 
| @@ -3,6 +3,7 @@ | |
| 3 3 | 
             
            require_relative 'workbook/chartsheet'
         | 
| 4 4 | 
             
            require_relative 'workbook/pivot_cache'
         | 
| 5 5 | 
             
            require_relative 'workbook/pivot_table_definition'
         | 
| 6 | 
            +
            require_relative 'workbook/defined_name'
         | 
| 6 7 | 
             
            require_relative 'workbook/shared_string_table'
         | 
| 7 8 | 
             
            require_relative 'workbook/style_sheet'
         | 
| 8 9 | 
             
            require_relative 'workbook/worksheet'
         | 
| @@ -24,11 +25,14 @@ module OoxmlParser | |
| 24 25 | 
             
                attr_accessor :pivot_caches
         | 
| 25 26 | 
             
                # @return [Array<PivotTableDefintion>] list of pivot table defitions
         | 
| 26 27 | 
             
                attr_accessor :pivot_table_definitions
         | 
| 28 | 
            +
                # @return [Array<DefinedName>] list of defined names
         | 
| 29 | 
            +
                attr_reader :defined_names
         | 
| 27 30 |  | 
| 28 31 | 
             
                def initialize(params = {})
         | 
| 29 32 | 
             
                  @worksheets = []
         | 
| 30 33 | 
             
                  @pivot_caches = []
         | 
| 31 34 | 
             
                  @pivot_table_definitions = []
         | 
| 35 | 
            +
                  @defined_names = []
         | 
| 32 36 | 
             
                  super
         | 
| 33 37 | 
             
                end
         | 
| 34 38 |  | 
| @@ -125,6 +129,7 @@ module OoxmlParser | |
| 125 129 | 
             
                  end
         | 
| 126 130 | 
             
                  parse_pivot_cache
         | 
| 127 131 | 
             
                  parse_pivot_table
         | 
| 132 | 
            +
                  parse_defined_names
         | 
| 128 133 | 
             
                  OOXMLDocumentObject.xmls_stack.pop
         | 
| 129 134 | 
             
                  self
         | 
| 130 135 | 
             
                end
         | 
| @@ -149,5 +154,12 @@ module OoxmlParser | |
| 149 154 | 
             
                    @pivot_table_definitions << PivotTableDefinition.new(parent: self).parse(file.part_name)
         | 
| 150 155 | 
             
                  end
         | 
| 151 156 | 
             
                end
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                # Perform parsing of defined names
         | 
| 159 | 
            +
                def parse_defined_names
         | 
| 160 | 
            +
                  @doc.xpath('xmlns:workbook/xmlns:definedNames/xmlns:definedName').each do |defined_name|
         | 
| 161 | 
            +
                    @defined_names << DefinedName.new(parent: self).parse(defined_name)
         | 
| 162 | 
            +
                  end
         | 
| 163 | 
            +
                end
         | 
| 152 164 | 
             
              end
         | 
| 153 165 | 
             
            end
         | 
    
        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.14.2
         | 
| 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: 2021- | 
| 13 | 
            +
            date: 2021-09-03 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: nokogiri
         | 
| @@ -486,6 +486,7 @@ files: | |
| 486 486 | 
             
            - lib/ooxml_parser/version.rb
         | 
| 487 487 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb
         | 
| 488 488 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb
         | 
| 489 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/defined_name.rb
         | 
| 489 490 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb
         | 
| 490 491 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb
         | 
| 491 492 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields.rb
         | 
| @@ -535,6 +536,9 @@ files: | |
| 535 536 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters/custom_filter.rb
         | 
| 536 537 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb
         | 
| 537 538 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb
         | 
| 539 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb
         | 
| 540 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb
         | 
| 541 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb
         | 
| 538 542 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups.rb
         | 
| 539 543 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group.rb
         | 
| 540 544 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/x14_table.rb
         | 
| @@ -545,6 +549,8 @@ files: | |
| 545 549 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb
         | 
| 546 550 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing.rb
         | 
| 547 551 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position_parameters.rb
         | 
| 552 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_header_footer.rb
         | 
| 553 | 
            +
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_header_footer/header_footer_child.rb
         | 
| 548 554 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row.rb
         | 
| 549 555 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell.rb
         | 
| 550 556 | 
             
            - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/formula.rb
         | 
| @@ -573,7 +579,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 573 579 | 
             
                - !ruby/object:Gem::Version
         | 
| 574 580 | 
             
                  version: '0'
         | 
| 575 581 | 
             
            requirements: []
         | 
| 576 | 
            -
            rubygems_version: 3.2. | 
| 582 | 
            +
            rubygems_version: 3.2.26
         | 
| 577 583 | 
             
            signing_key: 
         | 
| 578 584 | 
             
            specification_version: 4
         | 
| 579 585 | 
             
            summary: OoxmlParser Gem
         |