module SingaiMerge
SingaiMerge — parse AI lyric output and interleave with original lines. Public: parse_ai_lyrics, merge_lyrics Depends: (none)
Constants
- NUMBERED_LINE_PATTERN
Public Instance Methods
Source
# File lib/singai_merge.rb, line 19 def merge_lyrics(original_lines, ai_lines) original = Array(original_lines).map(&:to_s).map(&:strip).reject(&:empty?) ai = Array(ai_lines).map(&:to_s).map(&:strip).reject(&:empty?) return original if ai.empty? return ai if original.empty? merged = [] max_len = [original.length, ai.length].max max_len.times do |index| merged << original[index] if original[index] merged << ai[index] if ai[index] end merged end
Source
# File lib/singai_merge.rb, line 12 def parse_ai_lyrics(text) body = text.to_s.gsub(/\A```[^\n]*\n/m, "").gsub(/```\z/, "") body.lines.map(&:strip).reject(&:empty?).map do |line| line.sub(NUMBERED_LINE_PATTERN, "").strip end.reject(&:empty?) end