class DuoSplitter::Models::Section

Attributes

audio_path[RW]
number[R]

Public Class Methods

new(number:) click to toggle source
# File lib/duo_splitter/models/section.rb, line 10
def initialize(number:)
  @number = number
  @sentences = load_sentences
end

Public Instance Methods

sentences(intro: true) click to toggle source
# File lib/duo_splitter/models/section.rb, line 15
def sentences(intro: true)
  @sentences.reject {|sentence| !intro && sentence.intro? }
end

Private Instance Methods

load_sentences() click to toggle source
# File lib/duo_splitter/models/section.rb, line 21
def load_sentences
  label_path = DATA_DIR.join(format('labels/%02<number>d.txt', number: number))

  records = label_path.readlines.map {|line| line.chomp.split(/\t/) }

  records.unshift(%w[0 0 0])

  records.each_cons(2).map do |current_record, next_record|
    sentence_number = current_record.last.to_i
    start_pos = current_record.first
    end_pos = next_record.first

    Sentence.new(number: sentence_number, start_pos: start_pos, end_pos: end_pos, section: self)
  end
end