Sha256: 59d8e0f3d66c4d66d77ce4d5155d4b63df88da24d8ad8f2d979c4d684f98da1e

Contents?: true

Size: 996 Bytes

Versions: 12

Compression:

Stored size: 996 Bytes

Contents

# Core SVG data for merit marks.
#
# This class should never need to be called directly.
# @private
class USPSFlags::Grades::MeritMarks
  class << self
    def get(number)
      return if number < 1

      svg = ""
      new_lines = 0

      top_row = number % 20
      svg << generate_top_row(top_row)
      number -= top_row

      while number > 0
        number -= 20
        new_lines += 1
        svg << <<~SVG
          <g transform="translate(0,90)">
          #{generate_full_row}
        SVG
      end
      new_lines.times { svg << "</g>" }

      svg
    end

    private
    def bar(offset = 0)
      <<~SVG
        <rect x="#{offset}" y="0" width="35" height="80" fill="#{USPSFlags::Config::GOLD}" />
      SVG
    end

    def generate_top_row(number)
      svg = ""

      number.times do |i|
        svg << bar(45 * i)
      end

      svg
    end

    def generate_full_row
      svg = ""

      20.times do |i|
        svg << bar(45 * i)
      end

      svg
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
usps_flags-grades-0.0.12 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.11 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.10 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.9 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.8 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.7 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.6 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.5 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.4 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.3 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.2 lib/usps_flags/grades/merit_marks.rb
usps_flags-grades-0.0.1 lib/usps_flags/grades/merit_marks.rb