Sha256: 256f010031820291be0467b13e60cbd18b852a57ae2038e93e080b6f40acfa48

Contents?: true

Size: 782 Bytes

Versions: 1

Compression:

Stored size: 782 Bytes

Contents

module MusicXML
  module Node

    # Superclass for all node types
    class Base

      include JsonExport

      # Build a Parser to parse the node based on this class' config
      def initialize(node)
        Parser.new(node: node, config: self.class.config).parse.each do |key, value|
          instance_variable_set(key, value)
        end
      end

      class << self
        # forward class methods to the config to store the configuration
        extend Forwardable
        def_delegators :config, :pattrs, :pnodes, :props, :sattrs, :snodes

        attr_accessor :config

        # when this class is subclassed build a new config
        def inherited(subclass)
          subclass.config = ::MusicXML::Node::Config.new(subclass)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
musicxml-0.0.1 lib/musicxml/node/base.rb