Method: MyMethods.create_card

Defined in:
lib/obs_deck/modules/my_methods.rb

.create_card(card_sample, max_width = 60) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/obs_deck/modules/my_methods.rb', line 2

def self.create_card(card_sample, max_width = 60)

  if card_sample == "Pae White's non-blank graphic metacard"
    card =
    "    \u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\n    |                                                 |\n    |                                                 |\n    |                                                 |\n    |                                                 |\n    |                                                 |\n    |                                                 |\n    \u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\u2013\n    Pae White's non-blank graphic metacard\n  HEREDOC\n  else\n\n    # Split the card sample into words\n    words = card_sample.split(' ')\n    lines = []\n    current_line = \"\"\n\n    # Build lines based on max width\n    words.each do |word|\n      if (current_line + word).length <= max_width\n        current_line += \"\#{word} \"\n      else\n        lines << current_line.strip\n        current_line = \"\#{word} \"\n      end\n    end\n    lines << current_line.strip unless current_line.empty?\n\n    # Determine the width of the card based on the longest line\n    # Kinda unnecessary\n    #card_width = [max_width, lines.map(&:length).max].max\n    card_width = max_width\n\n    # Create the card with dynamic borders\n    border = \"\u2013\" * (card_width + 4)\n    card = \"\#{border}\\n\"\n    card += \"| \#{' ' * card_width} |\\n\"\n\n    lines.each do |line|\n      # Calculate padding for centering\n      padding = (card_width - line.length) / 2\n      # Centered line with spaces on both sides\n      centered_line = ' ' * padding + line\n\n      # Add centered line to card\n      card += \"| \#{centered_line.ljust(card_width)} |\\n\"\n\n      # Add blank line after each text line\n      card += \"| \#{' ' * card_width} |\\n\"\n    end\n\n    card += border\n\n    card\n  end\nend\n"