summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/workbook/worksheet/protected_ranges.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/axlsx/workbook/worksheet/protected_ranges.rb')
-rw-r--r--lib/axlsx/workbook/worksheet/protected_ranges.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/axlsx/workbook/worksheet/protected_ranges.rb b/lib/axlsx/workbook/worksheet/protected_ranges.rb
new file mode 100644
index 00000000..e55d35fa
--- /dev/null
+++ b/lib/axlsx/workbook/worksheet/protected_ranges.rb
@@ -0,0 +1,32 @@
+module Axlsx
+
+ # A self serializing collection of ranges that should be protected in
+ # the worksheet
+ class ProtectedRanges < SimpleTypedList
+
+ attr_reader :worksheet
+
+ def initialize(worksheet)
+ raise ArgumentError, 'You must provide a worksheet' unless worksheet.is_a?(Worksheet)
+ super ProtectedRange
+ @worksheet = worksheet
+ end
+
+ def add_range(cells)
+ sqref = if cells.is_a?(String)
+ cells
+ elsif cells.is_a?(SimpleTypedList) || cells.is_a?(Array)
+ Axlsx::cell_range(cells, false)
+ end
+ @list << ProtectedRange.new(:sqref => sqref, :name => "Range#{size}")
+ last
+ end
+
+ def to_xml_string(str = '')
+ return if empty?
+ str << '<protectedRanges>'
+ each { |range| range.to_xml_string(str) }
+ str << '</protectedRanges>'
+ end
+ end
+end