# # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com) # # This file is part of Ronin. # # Ronin is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Ronin is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Ronin. If not, see . # module Ronin module Model module HasLicense # # Class methods that are added when {HasLicense} is included into a # model. # module ClassMethods # # Finds all models associated with a given license. # # @param [License, Symbol, String] license # The license which models are associated with. # # @return [Array] # The models associated with a given license. # # @example Query using a predefined {License} resource. # LicensedModel.licensed_under(License.mit) # # => [#, ...] # # @example Query using the name of a predefined {License}. # LicensedModel.licensed_under(:cc_by_nc) # # => [#, ...] # # @example Query using the name of a {License}. # LicensedModel.licensed_under('GPL-2') # # => [#, ...] # # @since 1.0.0 # # @api public # def licensed_under(license) query = case license when License {:license => license} when Symbol {:license => License.predefined_resource(license)} else {'license.name' => license.to_s} end all(query) end end end end end