Sha256: e7c8ecf82acd404d822bc925b1f8257212c994c841102f038da738ae49a0d37b
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
require 'tagomatic/tags' module Tagomatic class FormatCompiler include Tagomatic::Tags def initialize(format_matcher_factory) @format_matcher_factory = format_matcher_factory end def compile_format(format) parts = format.split('%') prefix = parts.shift tag_mapping = [] regexp = Regexp.escape(prefix) parts.each do |tag_and_tail| tag = tag_and_tail[0, 1] tail = tag_and_tail[1..-1] tag_mapping << tag regexp << FORMAT_REGEXP_ARTIST if tag == FORMAT_ID_ARTIST regexp << FORMAT_REGEXP_ARTIST_AGAIN if tag == FORMAT_ID_ARTIST_AGAIN regexp << FORMAT_REGEXP_ALBUM if tag == FORMAT_ID_ALBUM regexp << FORMAT_REGEXP_ALBUM_AGAIN if tag == FORMAT_ID_ALBUM_AGAIN regexp << FORMAT_REGEXP_DISC if tag == FORMAT_ID_DISC regexp << FORMAT_REGEXP_GENRE if tag == FORMAT_ID_GENRE regexp << FORMAT_REGEXP_IGNORE if tag == FORMAT_ID_IGNORE regexp << FORMAT_REGEXP_TRACKNUM if tag == FORMAT_ID_TRACKNUM regexp << FORMAT_REGEXP_TITLE if tag == FORMAT_ID_TITLE regexp << FORMAT_REGEXP_WHITESPACE if tag == FORMAT_ID_WHITESPACE regexp << FORMAT_REGEXP_EXTENDED_WHITESPACE if tag == FORMAT_ID_EXTENDED_WHITESPACE regexp << FORMAT_REGEXP_YEAR if tag == FORMAT_ID_YEAR regexp << Regexp.escape(tail) end compiled = Regexp.compile(regexp, Regexp::IGNORECASE) @format_matcher_factory.create_format_matcher(compiled, tag_mapping, format) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tagomatic-0.1.6 | lib/tagomatic/format_compiler.rb |