Sha256: df3e732fb34c76fcbf84b43d17786d61b5d2b9072dd1cc3dd789c3b36695fe46

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

# -*- encoding: utf-8 -*-

module MusicBrainz
  module Parsers
    class << self
      def get_by_name(name)
        case name
        when :artist_model
          { :const => MusicBrainz::Parsers::Artist, :method => :model }
        when :artist_search
          { :const => MusicBrainz::Parsers::Artist, :method => :search }
        when :artist_release_groups
          { :const => MusicBrainz::Parsers::Artist, :method => :release_groups }
        when :release_group_model
          { :const => MusicBrainz::Parsers::ReleaseGroup, :method => :model }
        when :release_group_releases
          { :const => MusicBrainz::Parsers::ReleaseGroup, :method => :releases }
        when :release_model
          { :const => MusicBrainz::Parsers::Release, :method => :model }
        when :release_tracks
          { :const => MusicBrainz::Parsers::Release, :method => :tracks }
        when :track_model
          { :const => MusicBrainz::Parsers::Track, :method => :model }
        end
      end
    end

    class Base
      class << self
        def safe_get_attr(xml, path, name)
          node = path.nil? ? xml : (xml.css(path).first unless xml.css(path).empty?)
          node.attr(name) unless node.nil? or node.attr(name).nil?
        end

        def safe_get_value(xml, path)
          xml.css(path).first.text unless xml.css(path).empty?
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
musicbrainz-0.7.1 lib/parsers/base.rb
musicbrainz-0.7.0 lib/parsers/base.rb