Class: PDD::Source
- Inherits:
-
Object
- Object
- PDD::Source
- Defined in:
- lib/pdd/source.rb
Overview
Source.
Instance Method Summary collapse
-
#initialize(file, path) ⇒ Source
constructor
Ctor.
- #match_markers(line) ⇒ Object
-
#puzzles ⇒ Object
Fetch all puzzles.
Constructor Details
#initialize(file, path) ⇒ Source
Ctor.
file
-
Absolute file name with source code
path
-
Path to show (without full file name)
35 36 37 38 |
# File 'lib/pdd/source.rb', line 35 def initialize(file, path) @file = file @path = path end |
Instance Method Details
#match_markers(line) ⇒ Object
40 41 42 43 44 |
# File 'lib/pdd/source.rb', line 40 def match_markers(line) MARKERS.map do |mkr| %r{(.*(?:^|\s))#{mkr}\s+#([\w\-.:/]+)\s+(.+)}.match(line) end.compact end |
#puzzles ⇒ Object
Fetch all puzzles.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/pdd/source.rb', line 47 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) match_markers(line).each do |m| puzzles << puzzle(lines.drop(idx + 1), m, idx) end rescue Error, ArgumentError => ex = "#{@path}:#{idx + 1} #{ex.}" raise Error, unless PDD.opts && PDD.opts['skip-errors'] PDD.log.warn end end puzzles end |