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