Class: PDD::Source

Inherits:
Object
  • Object
show all
Defined in:
lib/pdd/source.rb

Overview

Source.

Instance Method Summary collapse

Constructor Details

#initialize(file, path) ⇒ Source

Ctor.

file

Absolute file name with source code

path

Path to show (without full file name)



34
35
36
37
# File 'lib/pdd/source.rb', line 34

def initialize(file, path)
  @file = file
  @path = path
end

Instance Method Details

#puzzlesObject

Fetch all puzzles.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/pdd/source.rb', line 40

def puzzles
  PDD.log.info "Reading #{@path}..."
  puzzles = []
  lines = File.readlines(@file, encoding: 'UTF-8')
  lines.each_with_index do |line, idx|
    begin
      check_rules(line)
      ["\x40todo", 'TODO:?'].each do |pfx|
        %r{(.*(?:^|\s))#{pfx}\s+#([\w\-\.:/]+)\s+(.+)}.match(line) do |m|
          puzzles << puzzle(lines.drop(idx + 1), m, idx)
        end
      end
    rescue Error, ArgumentError => ex
      raise Error, "puzzle at line ##{idx + 1}; #{ex.message}"
    end
  end
  puzzles
end