first version of aoc helper
						commit
						cee9087661
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
3.1.2
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
source "https://rubygems.org"
 | 
			
		||||
 | 
			
		||||
gem 'tty-prompt'
 | 
			
		||||
gem 'tty-file'
 | 
			
		||||
gem "colorize", "~> 0.8.1"
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
GEM
 | 
			
		||||
  remote: https://rubygems.org/
 | 
			
		||||
  specs:
 | 
			
		||||
    colorize (0.8.1)
 | 
			
		||||
    diff-lcs (1.5.0)
 | 
			
		||||
    pastel (0.8.0)
 | 
			
		||||
      tty-color (~> 0.5)
 | 
			
		||||
    tty-color (0.6.0)
 | 
			
		||||
    tty-cursor (0.7.1)
 | 
			
		||||
    tty-file (0.10.0)
 | 
			
		||||
      diff-lcs (~> 1.3)
 | 
			
		||||
      pastel (~> 0.8)
 | 
			
		||||
      tty-prompt (~> 0.22)
 | 
			
		||||
    tty-prompt (0.23.1)
 | 
			
		||||
      pastel (~> 0.8)
 | 
			
		||||
      tty-reader (~> 0.8)
 | 
			
		||||
    tty-reader (0.9.0)
 | 
			
		||||
      tty-cursor (~> 0.7)
 | 
			
		||||
      tty-screen (~> 0.8)
 | 
			
		||||
      wisper (~> 2.0)
 | 
			
		||||
    tty-screen (0.8.1)
 | 
			
		||||
    wisper (2.0.1)
 | 
			
		||||
 | 
			
		||||
PLATFORMS
 | 
			
		||||
  arm64-darwin-21
 | 
			
		||||
 | 
			
		||||
DEPENDENCIES
 | 
			
		||||
  colorize (~> 0.8.1)
 | 
			
		||||
  tty-file
 | 
			
		||||
  tty-prompt
 | 
			
		||||
 | 
			
		||||
BUNDLED WITH
 | 
			
		||||
   2.3.22
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
require "tty-prompt"
 | 
			
		||||
require_relative "tasks/new_day"
 | 
			
		||||
require_relative "tasks/part_two"
 | 
			
		||||
 | 
			
		||||
prompt = TTY::Prompt.new
 | 
			
		||||
 | 
			
		||||
day = prompt.ask("Name the day (1-24)") do |q|
 | 
			
		||||
  q.in("1-24")
 | 
			
		||||
end
 | 
			
		||||
selected = prompt.select("What do you want to do", "New day":0, "Add part 2 to a day":1)
 | 
			
		||||
 | 
			
		||||
if selected == 0
 | 
			
		||||
  new_day(prompt, day)
 | 
			
		||||
elsif selected == 1
 | 
			
		||||
  part_two(prompt, day)
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
require "tty-prompt"
 | 
			
		||||
require "tty-file"
 | 
			
		||||
require "ostruct"
 | 
			
		||||
 | 
			
		||||
def new_day(prompt, day)
 | 
			
		||||
  input = prompt.multiline("Example input").join("")
 | 
			
		||||
  print input
 | 
			
		||||
  result = prompt.ask("Example result")
 | 
			
		||||
 | 
			
		||||
  day_name = "day_#{day}"
 | 
			
		||||
  
 | 
			
		||||
  TTY::File.copy_directory("app/templates","#{day_name}")
 | 
			
		||||
 | 
			
		||||
  TTY::File.replace_in_file "#{day_name}/run.rb", /%day_name%/, day_name
 | 
			
		||||
  TTY::File.replace_in_file "#{day_name}/test.rb", /%day_name%/, day_name
 | 
			
		||||
  TTY::File.replace_in_file "#{day_name}/test.rb", /%example_result%/, result 
 | 
			
		||||
  TTY::File.replace_in_file "#{day_name}/test.rb", /%example_input%/, input 
 | 
			
		||||
 | 
			
		||||
  puts "Done - run with:"
 | 
			
		||||
  puts "ruby #{day_name}/test.rb"
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
require "tty-prompt"
 | 
			
		||||
 | 
			
		||||
def part_two(prompt, day)
 | 
			
		||||
  prompt.say("part two not yet supported")
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
#prepare the input which is a string containing new lines
 | 
			
		||||
def parse(input)
 | 
			
		||||
  data = []
 | 
			
		||||
  input.each_line do |line|
 | 
			
		||||
    data << line
 | 
			
		||||
  end
 | 
			
		||||
  data
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# result should a single string or integer
 | 
			
		||||
def calculate(data)
 | 
			
		||||
  result = ""
 | 
			
		||||
  data.each do |d|
 | 
			
		||||
    result = d
 | 
			
		||||
  end
 | 
			
		||||
  result
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
require_relative "impl"
 | 
			
		||||
 | 
			
		||||
def print(result)
 | 
			
		||||
  if result.is_a? Array
 | 
			
		||||
    result.map! {|l| "#{l}\n" } 
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  puts result
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def run
 | 
			
		||||
  puts "running your implementation"
 | 
			
		||||
  input = File.new("%day_name%/data").read
 | 
			
		||||
  data = parse(input)
 | 
			
		||||
  result = calculate(data)
 | 
			
		||||
  print(result)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
run
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
require_relative "impl"
 | 
			
		||||
 | 
			
		||||
INPUT = <<~IN
 | 
			
		||||
%example_input%
 | 
			
		||||
IN
 | 
			
		||||
 | 
			
		||||
RESULT = %example_result%
 | 
			
		||||
 | 
			
		||||
def test_example
 | 
			
		||||
  parsed = parse(INPUT)
 | 
			
		||||
  result = calculate(parsed)
 | 
			
		||||
 | 
			
		||||
  if result == RESULT
 | 
			
		||||
    puts "Test successful. Now run with real input"
 | 
			
		||||
    puts "ruby %day_name%/run.rb"
 | 
			
		||||
  else
 | 
			
		||||
    puts "Test failed"
 | 
			
		||||
    puts "expected \"#{RESULT}\" got \"#{result}\""
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
test_example
 | 
			
		||||
		Loading…
	
		Reference in New Issue