kigster/arduino-library

View on GitHub
lib/arduino/library/instance_methods.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'arduino/library'

module Arduino
  module Library
    # These are the DSL methods that can be imported by requiring
    # 'arduino/library/include'
    #
    module InstanceMethods
      # @param [String] file_or_url — either a local file, or URL, can be gzipped
      def db_from(file_or_url)
        Database.new(file_or_url)
      end

      def db_default
        DefaultDatabase.instance
      end

      #
      # +file_or_url+ can be a JSON file name, a .properties file name, or
      # a URL to either of the above.
      #
      # @param [String] file_or_url
      def library_from(file_or_url)
        Arduino::Library::Model.from(file_or_url)
      end

      # +opts+ is a Hash that you can use to pass attributes with values, any
      # number of them. All matching results are returned as models.
      #
      #   name: 'AudioZero'
      #   author: /konstantin/i              - regexp supported
      #   architectures: [ 'avr' ]           - array is matched if it's a subset
      #   version: proc do |value|           — or a proc for max flexibility
      #     value.start_with?('1.') )
      #   end
      #
      # @param [Database] database db instance (or skip it to use the default)
      # @param [Hash] opts hash of attribute names and values to match
      # @return Array<Model> array of models that match
      def search(database = db_default, **opts)
        Arduino::Library::Model.database = database
        database.search(**opts)
      end
    end
  end
end