aboutsummaryrefslogtreecommitdiffstats
path: root/lib/roo/excelx/format.rb
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2017-06-12 03:37:11 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2017-06-12 03:37:11 -0400
commit8280a21a23d44aa90177e2bc041d0b8dc8556f4b (patch)
treedadef7ee085c0e990a5070bd41b6a5b98c97f4fd /lib/roo/excelx/format.rb
Import Upstream version 2.7.1upstream/2.7.1
Diffstat (limited to 'lib/roo/excelx/format.rb')
-rw-r--r--lib/roo/excelx/format.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/roo/excelx/format.rb b/lib/roo/excelx/format.rb
new file mode 100644
index 0000000..72b36d9
--- /dev/null
+++ b/lib/roo/excelx/format.rb
@@ -0,0 +1,64 @@
+module Roo
+ class Excelx
+ module Format
+ EXCEPTIONAL_FORMATS = {
+ 'h:mm am/pm' => :date,
+ 'h:mm:ss am/pm' => :date
+ }
+
+ STANDARD_FORMATS = {
+ 0 => 'General'.freeze,
+ 1 => '0'.freeze,
+ 2 => '0.00'.freeze,
+ 3 => '#,##0'.freeze,
+ 4 => '#,##0.00'.freeze,
+ 9 => '0%'.freeze,
+ 10 => '0.00%'.freeze,
+ 11 => '0.00E+00'.freeze,
+ 12 => '# ?/?'.freeze,
+ 13 => '# ??/??'.freeze,
+ 14 => 'mm-dd-yy'.freeze,
+ 15 => 'd-mmm-yy'.freeze,
+ 16 => 'd-mmm'.freeze,
+ 17 => 'mmm-yy'.freeze,
+ 18 => 'h:mm AM/PM'.freeze,
+ 19 => 'h:mm:ss AM/PM'.freeze,
+ 20 => 'h:mm'.freeze,
+ 21 => 'h:mm:ss'.freeze,
+ 22 => 'm/d/yy h:mm'.freeze,
+ 37 => '#,##0 ;(#,##0)'.freeze,
+ 38 => '#,##0 ;[Red](#,##0)'.freeze,
+ 39 => '#,##0.00;(#,##0.00)'.freeze,
+ 40 => '#,##0.00;[Red](#,##0.00)'.freeze,
+ 45 => 'mm:ss'.freeze,
+ 46 => '[h]:mm:ss'.freeze,
+ 47 => 'mmss.0'.freeze,
+ 48 => '##0.0E+0'.freeze,
+ 49 => '@'.freeze
+ }
+
+ def to_type(format)
+ format = format.to_s.downcase
+ if (type = EXCEPTIONAL_FORMATS[format])
+ type
+ elsif format.include?('#')
+ :float
+ elsif !format.match(/d+(?![\]])/).nil? || format.include?('y')
+ if format.include?('h') || format.include?('s')
+ :datetime
+ else
+ :date
+ end
+ elsif format.include?('h') || format.include?('s')
+ :time
+ elsif format.include?('%')
+ :percentage
+ else
+ :float
+ end
+ end
+
+ module_function :to_type
+ end
+ end
+end