lib/ravelry/pattern.rb in ravelry-0.0.6 vs lib/ravelry/pattern.rb in ravelry-0.0.7

- old
+ new

@@ -82,10 +82,20 @@ # * `pattern.yarns` - array of {Ravelry::Yarn} objects # * `pattern.yarn_weights` - array of {Ravelry::YarnWeight} objects # # See the documentation for each object's available methods. # + # # Searching + # + # To search for patterns, use the `Pattern.search` class method, which + # returns an array of patterns: + # + # ```ruby + # Ravelry::Pattern.search('socks') + # # => [#<Pattern>, ...] + # ``` + # class Pattern < Data include Build attr_reader :author, :categories, :craft, :needles, :packs, :photos, :printings, :type, :yarns, :yarn_weights @@ -96,10 +106,37 @@ # def get @data = Utils::Request.get("patterns/#{@id}.json", :pattern) end + # Search for patterns. + # + # Corresponds to Ravelry API endpoint `Patterns#search` + # + # @param query [String] required + # @option options [Boolean] :personal_attributes + # @option options [Integer] :page + # @option options [Integer] :page_size + # @return [Array<Pattern>] an array of `Pattern`s + def self.search(query, options={}) + params = {query: query} + params.merge!(options) + + unless params[:personal_attributes].nil? + params[:personal_attributes] = (params[:personal_attributes] ? 1 : 0) + end + + patterns = Utils::Request + .get("patterns/search.json", :patterns, params) + + patterns.map do |data| + pattern = Ravelry::Pattern.new + pattern.data = data + pattern + end + end + # Creates all objects associated with your pattern; returns nothing; sets `attr_readers`. # def build @author = Build.author(data) @categories = Build.categories(data) @@ -385,6 +422,6 @@ # def yarn_weight_description data[:yarn_weight_description] end end -end \ No newline at end of file +end