Class: Eulerplate::Problem

Inherits:
Object
  • Object
show all
Defined in:
lib/eulerplate/problems.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Problem

Returns a new instance of Problem.



20
21
22
23
24
# File 'lib/eulerplate/problems.rb', line 20

def initialize(opts = {})
  @name = opts.fetch(:name)
  @number = opts.fetch(:number)
  @problem = opts.fetch(:problem)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



18
19
20
# File 'lib/eulerplate/problems.rb', line 18

def name
  @name
end

#numberObject (readonly)

Returns the value of attribute number.



18
19
20
# File 'lib/eulerplate/problems.rb', line 18

def number
  @number
end

#problemObject (readonly)

Returns the value of attribute problem.



18
19
20
# File 'lib/eulerplate/problems.rb', line 18

def problem
  @problem
end

Instance Method Details

#class_file_nameObject



37
38
39
# File 'lib/eulerplate/problems.rb', line 37

def class_file_name
  snake_name + ".rb"
end

#class_nameObject



58
59
60
61
62
63
64
# File 'lib/eulerplate/problems.rb', line 58

def class_name
  returned_name = name.split.map(&:capitalize).join("").scan(/\w/).join("")
  if returned_name[0] =~ /\d/
    return "Euler" + returned_name
  end
  returned_name
end

#folder_nameObject



26
27
28
29
30
31
# File 'lib/eulerplate/problems.rb', line 26

def folder_name
  result = []
  result << number
  result << name.downcase.split
  result.join("-")
end

#snake_nameObject



41
42
43
44
45
# File 'lib/eulerplate/problems.rb', line 41

def snake_name
  result = []
  result << name.downcase.split
  result.join("_")
end

#spec_descriptionObject



47
48
49
50
51
52
53
54
55
56
# File 'lib/eulerplate/problems.rb', line 47

def spec_description
  header = []
  header << "# PROBLEM #{number}: #{name}"
  header << "# https://projecteuler.net/problem=#{number}"
  header << "#"
  header << problem.lines.map { |line| "# #{line}" }.join
  header << "#"
  header << "# WRITE YOUR TESTS!"
  header.join("\n")
end

#spec_file_nameObject



33
34
35
# File 'lib/eulerplate/problems.rb', line 33

def spec_file_name
  snake_name + "_spec.rb"
end