xlsx-DSL 0.1.0 → 0.2.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/xlsx/DSL/version.rb +1 -1
 - data/lib/xlsx/parser.rb +2 -1
 - data/lib/xlsx/sheet.rb +73 -6
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2b8f324fee676431176640012486127a71154b0ef4ec9e8b63a87690c71df9b9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4280a3282d54976d88d71b3b7e417be1062d9115fc7786e1642d918dd2375f3e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a101af4e44b1f5b598995a5306ab59670031d61774a7c7a5417c1b66146fa1da1b439a1d4e4c82eb630fb2037466af6774e4e8ef02362f07b95644bd4ef981ec
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 389dc047f3eed14454a6070bb9d7becf575870ad48c6d415017671ca0d85df0ba5b43dd8648ae998cd1405277dd5c212593602a99c3b2956f2eb48a2013effc9
         
     | 
    
        data/lib/xlsx/DSL/version.rb
    CHANGED
    
    
    
        data/lib/xlsx/parser.rb
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ module OpenXML 
     | 
|
| 
       4 
4 
     | 
    
         
             
                @@shared_strings = nil
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                class << self
         
     | 
| 
       7 
     | 
    
         
            -
                  def open 
     | 
| 
      
 7 
     | 
    
         
            +
                  def open(xlsx_path)
         
     | 
| 
       8 
8 
     | 
    
         
             
                    Zip::File.open(xlsx_path) do |zf|
         
     | 
| 
       9 
9 
     | 
    
         
             
                      zf.each do |entry|
         
     | 
| 
       10 
10 
     | 
    
         
             
                        content = entry.get_input_stream.read
         
     | 
| 
         @@ -19,6 +19,7 @@ module OpenXML 
     | 
|
| 
       19 
19 
     | 
    
         
             
                      end
         
     | 
| 
       20 
20 
     | 
    
         
             
                    end
         
     | 
| 
       21 
21 
     | 
    
         
             
                    @@workbook.merge_sheets(@@sheets) if @@sheets
         
     | 
| 
      
 22 
     | 
    
         
            +
                    yield(@@workbook) if block_given?
         
     | 
| 
       22 
23 
     | 
    
         
             
                    @@workbook
         
     | 
| 
       23 
24 
     | 
    
         
             
                  end
         
     | 
| 
       24 
25 
     | 
    
         | 
    
        data/lib/xlsx/sheet.rb
    CHANGED
    
    | 
         @@ -18,15 +18,27 @@ module OpenXML 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                  def [] index
         
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                    case index
         
     | 
| 
      
 22 
     | 
    
         
            +
                    when /^[A-Z]+\d+$/
         
     | 
| 
      
 23 
     | 
    
         
            +
                      retrieve_one_cell index
         
     | 
| 
      
 24 
     | 
    
         
            +
                    when /^\d+$/
         
     | 
| 
      
 25 
     | 
    
         
            +
                      retrieve_one_row index
         
     | 
| 
      
 26 
     | 
    
         
            +
                    when /^[A-Z]+$/
         
     | 
| 
      
 27 
     | 
    
         
            +
                      retrieve_one_column index
         
     | 
| 
      
 28 
     | 
    
         
            +
                    when /^(\d+)[\-:](\d+)$/
         
     | 
| 
      
 29 
     | 
    
         
            +
                      retrieve_rows($1, $2)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    when /^([A-Z]+)[\-:]([A-Z]+)$/
         
     | 
| 
      
 31 
     | 
    
         
            +
                      retrieve_columns($1, $2)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    when /^([A-Z]+)(\d+)[\-:]([A-Z]+)(\d+)$/
         
     | 
| 
      
 33 
     | 
    
         
            +
                      retrieve_one_matrix($1, $2, $3, $4)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    else
         
     | 
| 
      
 35 
     | 
    
         
            +
                      raise IndexError, 'Invalid index'
         
     | 
| 
       25 
36 
     | 
    
         
             
                    end
         
     | 
| 
       26 
     | 
    
         
            -
                    self.sheet_data[index] 
         
     | 
| 
       27 
37 
     | 
    
         
             
                  end
         
     | 
| 
       28 
38 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
      
 39 
     | 
    
         
            +
                  def at_cell index
         
     | 
| 
      
 40 
     | 
    
         
            +
                    retrieve_one_cell index
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
       30 
42 
     | 
    
         | 
| 
       31 
43 
     | 
    
         
             
                  def self.parser content
         
     | 
| 
       32 
44 
     | 
    
         
             
                    doc = Nokogiri::XML content
         
     | 
| 
         @@ -65,6 +77,61 @@ module OpenXML 
     | 
|
| 
       65 
77 
     | 
    
         
             
                  def max_row
         
     | 
| 
       66 
78 
     | 
    
         
             
                    /[A-Z]+(\d+)$/.match(dimension)[1]
         
     | 
| 
       67 
79 
     | 
    
         
             
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  private
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                  def retrieve_one_cell index
         
     | 
| 
      
 84 
     | 
    
         
            +
                    self.merge_cells.each do |mc|
         
     | 
| 
      
 85 
     | 
    
         
            +
                      if mc.include?(index)
         
     | 
| 
      
 86 
     | 
    
         
            +
                        index = mc.top_left
         
     | 
| 
      
 87 
     | 
    
         
            +
                      end
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
                    self.sheet_data[index].value
         
     | 
| 
      
 90 
     | 
    
         
            +
                  end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                  def retrieve_one_row index
         
     | 
| 
      
 93 
     | 
    
         
            +
                    cells = []
         
     | 
| 
      
 94 
     | 
    
         
            +
                    ('A'..max_column).each do |col|
         
     | 
| 
      
 95 
     | 
    
         
            +
                      cells << retrieve_one_cell(col+index)
         
     | 
| 
      
 96 
     | 
    
         
            +
                    end
         
     | 
| 
      
 97 
     | 
    
         
            +
                    cells
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                  def retrieve_rows(one, two)
         
     | 
| 
      
 101 
     | 
    
         
            +
                    cells = []
         
     | 
| 
      
 102 
     | 
    
         
            +
                    (one.to_i..two.to_i).each do |row_index|
         
     | 
| 
      
 103 
     | 
    
         
            +
                      cells << retrieve_one_row(row_index.to_s)
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
                    cells
         
     | 
| 
      
 106 
     | 
    
         
            +
                  end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                  def retrieve_one_column index
         
     | 
| 
      
 109 
     | 
    
         
            +
                    cells = []
         
     | 
| 
      
 110 
     | 
    
         
            +
                    (1..max_row.to_i).each do |row|
         
     | 
| 
      
 111 
     | 
    
         
            +
                      cells << retrieve_one_cell(index+row.to_s)
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
      
 113 
     | 
    
         
            +
                    cells
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                  def retrieve_columns(one, two)
         
     | 
| 
      
 117 
     | 
    
         
            +
                    cells = []
         
     | 
| 
      
 118 
     | 
    
         
            +
                    (one..two).each do |column_index|
         
     | 
| 
      
 119 
     | 
    
         
            +
                      cells << retrieve_one_column(column_index)
         
     | 
| 
      
 120 
     | 
    
         
            +
                    end
         
     | 
| 
      
 121 
     | 
    
         
            +
                    cells
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                  
         
     | 
| 
      
 124 
     | 
    
         
            +
                  def retrieve_one_matrix (one, two, three, four)
         
     | 
| 
      
 125 
     | 
    
         
            +
                    cells = []
         
     | 
| 
      
 126 
     | 
    
         
            +
                    (two.to_i..four.to_i).each do |row_index|
         
     | 
| 
      
 127 
     | 
    
         
            +
                      row = []
         
     | 
| 
      
 128 
     | 
    
         
            +
                      (one..three).each do |column_index|
         
     | 
| 
      
 129 
     | 
    
         
            +
                        row << retrieve_one_cell(column_index+row_index.to_s)
         
     | 
| 
      
 130 
     | 
    
         
            +
                      end
         
     | 
| 
      
 131 
     | 
    
         
            +
                      cells << row
         
     | 
| 
      
 132 
     | 
    
         
            +
                    end
         
     | 
| 
      
 133 
     | 
    
         
            +
                    cells
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
       68 
135 
     | 
    
         
             
                end
         
     | 
| 
       69 
136 
     | 
    
         | 
| 
       70 
137 
     | 
    
         
             
                class MergeCell
         
     |