Passed
Push — master ( e9b4be...fdfd44 )
by Paul
01:35
created

SocialMediaLogoSet.generate_logos_for()   A

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 9.4285
c 1
b 0
f 0
1 1
require_relative "image_link"
2
3 1
module Resume
4 1
  module PDF
5 1
    module SocialMediaLogoSet
6 1
      module_function
7
8 1
      def generate(pdf, logo_set)
9 1
        top_padding, horizontal_rule_colour =
10
          logo_set.values_at(:top_padding, :horizontal_rule_colour)
11 1
        pdf.move_down(top_padding)
12 1
        generate_logos(pdf, logo_set)
13 1
        pdf.stroke_horizontal_rule { color(horizontal_rule_colour) }
14
      end
15
16 1
      def generate_logos(pdf, logo_set)
17 1
        logos = entire_logo_properties(logo_set)
18 1
        generate_logo_for(logos.first, pdf, logo_set)
19 1
        generate_logos_for(logos[1..-1], pdf, logo_set)
20 1
        pdf.move_down(logo_set[:bottom_padding])
21
      end
22 1
      private_class_method :generate_logos
23
24 1
      def entire_logo_properties(logo_set)
25 1
        logo_set[:logos].values.map do |values|
26 12
          values.merge(logo_set[:logo_properties])
27
        end
28
      end
29 1
      private_class_method :entire_logo_properties
30
31 1
      def generate_logo_for(logo, pdf, logo_set)
32 12
        x_position = logo_set[:x_position]
33 12
        pdf.bounding_box([x_position, pdf.cursor], width: logo[:width]) do
34 12
          ImageLink.generate(pdf, logo)
35
        end
36
        # Slightly cheating by keeping state in the logo set hash
37 12
        logo_set[:x_position] = x_position + logo_set[:padded_logo_width]
38
      end
39 1
      private_class_method :generate_logo_for
40
41 1
      def generate_logos_for(logos, pdf, logo_set)
42 1
        logos.each do |logo|
43 11
          pdf.move_up(logo_set[:padded_logo_height])
44 11
          generate_logo_for(logo, pdf, logo_set)
45
        end
46
      end
47 1
      private_class_method :generate_logos
48
    end
49
  end
50
end
51