Sha256: c44e50d7bdacd3d3917b972b5225ea235596d44a05cbdbe2996180a21e43b998

Contents?: true

Size: 957 Bytes

Versions: 2

Compression:

Stored size: 957 Bytes

Contents

require 'pt/papersize/version'
require 'pt/papersize/paper_sizes'

module PT
  class PaperSize
    def self.find(width, height, units = :pt)
      short_edge = [width, height].min
      long_edge = [width, height].max

      case units
      when :pt, :point, :points
        short_edge_mm = ((short_edge.to_f / 72.0) * 25.4).round
        long_edge_mm = ((long_edge.to_f / 72.0) * 25.4).round
      when :mm, :millimetre, :millimetres
        short_edge_mm = short_edge
        long_edge_mm = long_edge
      when :inch, :inches
        short_edge_mm = (short_edge.to_f * 25.4).round
        long_edge_mm = (long_edge.to_f * 25.4).round
      end

      available_sizes = PT::PaperSize::PAPER_SIZES.select do |entry|
        (short_edge_mm == entry[:width]) && (long_edge_mm == entry[:height])
      end

      available_sizes.length > 0 ? available_sizes.first : { name: 'Custom', width: short_edge_mm, height: long_edge_mm, units: :mm}
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pt_papersize-0.1.2 lib/pt/papersize.rb
pt_papersize-0.1.1 lib/pt/papersize.rb