lib/formatador/table.rb in formatador-0.2.5 vs lib/formatador/table.rb in formatador-0.3.0
- old
+ new
@@ -78,21 +78,28 @@
end
private
def length(value)
- value.to_s.gsub(PARSE_REGEX, '').length
+ if Module.const_defined?(:Unicode)
+ Unicode.width(value.to_s.gsub(PARSE_REGEX, ''))
+ else
+ value.to_s.gsub(PARSE_REGEX, '').chars.reduce(0) { |sum, char| sum += char.bytesize > 1 ? 2 : 1 }
+ end
+
+ rescue NotImplementedError
+ value.to_s.gsub(PARSE_REGEX, '').chars.reduce(0) { |sum, char| sum += char.bytesize > 1 ? 2 : 1 }
end
def calculate_datum(header, hash)
if !hash.keys.include?(header) && (splits = header.to_s.split('.')).length > 1
datum = nil
splits.each do |split|
d = (datum||hash)
datum = d[split] || d[split.to_sym] || ''
end
else
- datum = hash[header] || ''
+ datum = hash.fetch(header, '')
end
datum
end
end