ravelry 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +1 -0
  6. data/CODE_OF_CONDUCT.md +22 -0
  7. data/Gemfile +16 -0
  8. data/Gemfile.lock +42 -0
  9. data/LICENSE.txt +20 -0
  10. data/README.md +112 -0
  11. data/VERSION +1 -0
  12. data/lib/ravelry.rb +39 -0
  13. data/lib/ravelry/author.rb +27 -0
  14. data/lib/ravelry/category.rb +57 -0
  15. data/lib/ravelry/configuration.rb +11 -0
  16. data/lib/ravelry/craft.rb +19 -0
  17. data/lib/ravelry/data.rb +25 -0
  18. data/lib/ravelry/pack.rb +135 -0
  19. data/lib/ravelry/pattern.rb +390 -0
  20. data/lib/ravelry/pattern_needle.rb +54 -0
  21. data/lib/ravelry/pattern_type.rb +34 -0
  22. data/lib/ravelry/photo.rb +69 -0
  23. data/lib/ravelry/printing.rb +70 -0
  24. data/lib/ravelry/utils/build.rb +128 -0
  25. data/lib/ravelry/utils/utilities.rb +14 -0
  26. data/lib/ravelry/version.rb +3 -0
  27. data/lib/ravelry/yarn.rb +39 -0
  28. data/lib/ravelry/yarn_weight.rb +48 -0
  29. data/ravelry.gemspec +27 -0
  30. data/spec/helpers/helpers.rb +106 -0
  31. data/spec/helpers/pack_helpers.rb +107 -0
  32. data/spec/helpers/pattern_helpers.rb +190 -0
  33. data/spec/helpers/yarn_helpers.rb +27 -0
  34. data/spec/helpers/yarn_weight_helpers.rb +25 -0
  35. data/spec/ravelry/author_spec.rb +33 -0
  36. data/spec/ravelry/category_spec.rb +46 -0
  37. data/spec/ravelry/craft_spec.rb +22 -0
  38. data/spec/ravelry/data_spec.rb +27 -0
  39. data/spec/ravelry/pack_spec.rb +114 -0
  40. data/spec/ravelry/pattern_needle_spec.rb +52 -0
  41. data/spec/ravelry/pattern_spec.rb +301 -0
  42. data/spec/ravelry/pattern_type_spec.rb +28 -0
  43. data/spec/ravelry/photo_spec.rb +56 -0
  44. data/spec/ravelry/printing_spec.rb +65 -0
  45. data/spec/ravelry/utils/build_spec.rb +187 -0
  46. data/spec/ravelry/yarn_spec.rb +30 -0
  47. data/spec/ravelry/yarn_weight_spec.rb +42 -0
  48. data/spec/ravelry_spec.rb +3 -0
  49. data/spec/spec_helper.rb +30 -0
  50. metadata +154 -0
@@ -0,0 +1,107 @@
1
+ module PackHelpers
2
+
3
+ # Helpers for Ravelry::Pack only
4
+ # Multi-pack pattern ID: 228861
5
+
6
+ # Data seeded 2013-12-22
7
+
8
+ def single_pack
9
+ multi_pack[0]
10
+ end
11
+
12
+ def multi_pack
13
+ [
14
+ {
15
+ :quantity_description=>nil,
16
+ :yarn_id=>18714,
17
+ :yarn_weight=>
18
+ {
19
+ :name=>"Sport",
20
+ :min_gauge=>nil,
21
+ :wpi=>"12",
22
+ :id=>10,
23
+ :crochet_gauge=>nil,
24
+ :ply=>"5",
25
+ :knit_gauge=>"24-26",
26
+ :max_gauge=>nil
27
+ },
28
+ :yarn=>
29
+ {
30
+ :permalink=>"miss-babs-yummy-superwash-sport---3-ply",
31
+ :yarn_company_name=>"Miss Babs",
32
+ :yarn_company_id=>1119,
33
+ :name=>"Yummy Superwash Sport - 3 Ply",
34
+ :id=>18714
35
+ },
36
+ :total_grams=>nil,
37
+ :project_id=>nil,
38
+ :shop_id=>nil,
39
+ :prefer_metric_weight=>true,
40
+ :prefer_metric_length=>false,
41
+ :ounces_per_skein=>nil,
42
+ :dye_lot=>nil,
43
+ :skeins=>nil,
44
+ :id=>15665503,
45
+ :grams_per_skein=>nil,
46
+ :color_family_id=>nil,
47
+ :shop_name=>nil,
48
+ :total_meters=>nil,
49
+ :stash_id=>nil,
50
+ :total_ounces=>nil,
51
+ :primary_pack_id=>nil,
52
+ :personal_name=>nil,
53
+ :colorway=>nil,
54
+ :meters_per_skein=>nil,
55
+ :yarn_name=>"Miss Babs Yummy Superwash Sport - 3 Ply",
56
+ :yards_per_skein=>nil,
57
+ :total_yards=>nil
58
+ },
59
+ {
60
+ :quantity_description=>nil,
61
+ :yarn_id=>51688,
62
+ :yarn_weight=>
63
+ {
64
+ :name=>"Fingering",
65
+ :min_gauge=>nil,
66
+ :wpi=>"14",
67
+ :id=>5,
68
+ :crochet_gauge=>"",
69
+ :ply=>"4",
70
+ :knit_gauge=>"28",
71
+ :max_gauge=>nil
72
+ },
73
+ :yarn=>
74
+ {
75
+ :permalink=>"little-red-bicycle-hipster-sock",
76
+ :yarn_company_name=>"Little Red Bicycle",
77
+ :yarn_company_id=>6977,
78
+ :name=>"Hipster sock",
79
+ :id=>51688
80
+ },
81
+ :total_grams=>nil,
82
+ :project_id=>nil,
83
+ :shop_id=>nil,
84
+ :prefer_metric_weight=>true,
85
+ :prefer_metric_length=>false,
86
+ :ounces_per_skein=>nil,
87
+ :dye_lot=>nil,
88
+ :skeins=>nil,
89
+ :id=>33655884,
90
+ :grams_per_skein=>nil,
91
+ :color_family_id=>nil,
92
+ :shop_name=>nil,
93
+ :total_meters=>nil,
94
+ :stash_id=>nil,
95
+ :total_ounces=>nil,
96
+ :primary_pack_id=>nil,
97
+ :personal_name=>nil,
98
+ :colorway=>nil,
99
+ :meters_per_skein=>nil,
100
+ :yarn_name=>"Little Red Bicycle Hipster sock",
101
+ :yards_per_skein=>nil,
102
+ :total_yards=>nil
103
+ }
104
+ ]
105
+ end
106
+
107
+ end
@@ -0,0 +1,190 @@
1
+ module PatternHelpers
2
+
3
+ # Helpers for Ravelry::Pattern
4
+
5
+ def p_initialize_empty_pattern
6
+ Ravelry::Pattern.new
7
+ end
8
+
9
+ def p_initialize_with_data
10
+ pattern = Ravelry::Pattern.new
11
+ pattern.data = paid_pattern_stub
12
+ pattern
13
+ end
14
+
15
+ def p_initialize_paid_with_fetch
16
+ # Volatile Magic Shawl
17
+ pattern = Ravelry::Pattern.new("379890")
18
+ pattern.get
19
+ pattern
20
+ end
21
+
22
+ def p_initialize_free_with_fetch
23
+ # Wish I Was Weaving This Cowl
24
+ pattern = Ravelry::Pattern.new("379890")
25
+ pattern.get
26
+ pattern
27
+ end
28
+
29
+ def paid_pattern_stub
30
+ # Volatile Magic Shawl, updated 2013-12-21
31
+ {:pattern_categories=>
32
+ [{
33
+ :permalink=>"shawl-wrap", :name=>"Shawl / Wrap", :id=>350,
34
+ :parent=>
35
+ {
36
+ :permalink=>"neck-torso", :name=>"Neck / Torso", :id=>338,
37
+ :parent=>
38
+ {
39
+ :permalink=>"accessories", :name=>"Accessories", :id=>337,
40
+ :parent=>
41
+ {
42
+ :permalink=>"categories", :name=>"Categories", :id=>301
43
+ }
44
+ }
45
+ }
46
+ }],
47
+ :notes_html=>"<p>I am a voracious reader. When I think of heroines, I think of my favorite books.",
48
+ :download_location=>
49
+ {
50
+ :type=>"ravelry", :url=>"http://www.ravelry.com/purchase/feministy/185601", :free=>false
51
+ },
52
+ :row_gauge=>40.0,
53
+ :queued_projects_count=>56,
54
+ :price=>6.0,
55
+ :permalink=>"volatile-magic-shawl",
56
+ :name=>"Volatile Magic Shawl",
57
+ :pattern_needle_sizes=>
58
+ [
59
+ {
60
+ :hook=>"E", :us_steel=>"00", :name=>"US 4 - 3.5 mm",
61
+ :crochet=>false, :metric=>3.5, :knitting=>true, :us=>"4 ", :id=>4
62
+ }
63
+ ],
64
+ :yardage_max=>435,
65
+ :gauge_pattern=>"stockinette stitch",
66
+ :printings=>
67
+ [
68
+ {:pattern_source=>
69
+ {
70
+ :price=>nil, :permalink=>"liz-abinantes-ravelry-store",
71
+ :out_of_print=>false, :name=>"Liz Abinante's Ravelry Store",
72
+ :author=>nil, :url=>"http://www.ravelry.com/stores/feministy",
73
+ :amazon_rating=>nil, :pattern_count=>3, :amazon_url=>nil,
74
+ :shelf_image_path=>nil, :list_price=>nil
75
+ },
76
+ :primary_source=>true
77
+ },
78
+ {:pattern_source=>
79
+ {
80
+ :price=>nil, :permalink=>"feministy", :out_of_print=>false,
81
+ :name=>"Feministy.com", :author=>"", :url=>"http://feministy.com/",
82
+ :amazon_rating=>nil, :pattern_count=>47, :amazon_url=>nil,
83
+ :shelf_image_path=>nil, :list_price=>nil
84
+ },
85
+ :primary_source=>false
86
+ }
87
+ ],
88
+ :pdf_in_library=>false,
89
+ :downloadable=>true,
90
+ :difficulty_count=>3,
91
+ :notes=>"I am a voracious reader. When I think of heroines, I think of my favorite books.",
92
+ :published=>"2013/07/01",
93
+ :projects_count=>6,
94
+ :gauge=>26.0,
95
+ :difficulty_average=>2.66666666666667,
96
+ :yarn_weight=>
97
+ {
98
+ :name=>"Fingering", :min_gauge=>nil, :wpi=>"14", :id=>5,
99
+ :crochet_gauge=>"", :ply=>"4", :knit_gauge=>"28", :max_gauge=>nil
100
+ },
101
+ :photos=>
102
+ [
103
+ {:flickr_url=>nil, :small_url=>"http://images4.ravelrycache.com/uploads/feministy/197032385/_D7C0070-Edit-Edit_small_best_fit.JPG", :x_offset=>-82, :shelved_url=>"http://images4.ravelrycache.com/uploads/feministy/197032385/_D7C0070-Edit-Edit_shelved.JPG", :y_offset=>0, :sort_order=>1, :id=>35912328, :square_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032385/_D7C0070-Edit-Edit_square.JPG", :medium_url=>"http://images4.ravelrycache.com/uploads/feministy/197032385/_D7C0070-Edit-Edit_medium.JPG", :thumbnail_url=>"h"},
104
+ {:flickr_url=>nil, :small_url=>"http://images4-d.ravelrycache.com/uploads/feministy/197032384/_D7C0066-Edit_small_best_fit.JPG", :x_offset=>-43, :shelved_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032384/_D7C0066-Edit_shelved.JPG", :y_offset=>0, :sort_order=>2, :id=>35912326, :square_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032384/_D7C0066-Edit_square.JPG", :medium_url=>"http://images4-d.ravelrycache.com/uploads/feministy/197032384/_D7C0066-Edit_medium.JPG", :thumbnail_url=>"h"},
105
+ {:flickr_url=>nil, :small_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032381/_D7C0059-Edit_small_best_fit.JPG", :x_offset=>-43, :shelved_url=>"http://images4-d.ravelrycache.com/uploads/feministy/197032381/_D7C0059-Edit_shelved.JPG", :y_offset=>0, :sort_order=>3, :id=>35912327, :square_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032381/_D7C0059-Edit_square.JPG", :medium_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032381/_D7C0059-Edit_medium.JPG", :thumbnail_url=>"h"},
106
+ {:flickr_url=>nil, :small_url=>"http://images4.ravelrycache.com/uploads/feministy/197032382/_D7C0053-Edit_small_best_fit.JPG", :x_offset=>-43, :shelved_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032382/_D7C0053-Edit_shelved.JPG", :y_offset=>0, :sort_order=>4, :id=>35912325, :square_url=>"http://images4-b.ravelrycache.com/uploads/feministy/197032382/_D7C0053-Edit_square.JPG", :medium_url=>"http://images4.ravelrycache.com/uploads/feministy/197032382/_D7C0053-Edit_medium.JPG", :thumbnail_url=>"h"}
107
+ ],
108
+ :pattern_type=>
109
+ {
110
+ :permalink=>"shawl", :name=>"Shawl/Wrap", :clothing=>true, :id=>10
111
+ },
112
+ :volumes_in_library=>[],
113
+ :url=>"",
114
+ :gauge_divisor=>4,
115
+ :sizes_available=>"8.5\"/21.5cm at deepest point, 50\"/127cm wingspan",
116
+ :yardage=>425,
117
+ :rating_average=>4.66666666666667,
118
+ :id=>419443,
119
+ :free=>false,
120
+ :gauge_description=>"26 stitches and 40 rows = 4 inches in stockinette stitch",
121
+ :rating_count=>3,
122
+ :pdf_url=>"",
123
+ :pattern_author=>
124
+ {
125
+ :permalink=>"liz-abinante", :name=>"Liz Abinante", :id=>19297,
126
+ :favorites_count=>1314, :pattern_count=>48
127
+ },
128
+ :product_id=>185601,
129
+ :favorites_count=>281,
130
+ :craft=>
131
+ {
132
+ :permalink=>"knitting", :name=>"Knitting", :id=>2
133
+ },
134
+ :yarn_weight_description=>"Fingering / 4 ply (14 wpi)",
135
+ :currency=>"USD",
136
+ :comments_count=>4,
137
+ :ravelry_download=>true,
138
+ :currency_symbol=>"$",
139
+ :packs=>
140
+ [
141
+ {
142
+ :yarn_id=>93171,
143
+ :yarn=>
144
+ {
145
+ :permalink=>"wooly-wonka-fibers-artio-sock",
146
+ :yarn_company_id=>969,
147
+ :yarn_company_name=>"Wooly Wonka Fibers",
148
+ :name=>"Artio Sock", :id=>93171
149
+ },
150
+ :yarn_name=>"Wooly Wonka Fibers Artio Sock",
151
+ :total_grams=>nil,
152
+ :project_id=>nil,
153
+ :yarn_weight=>
154
+ {
155
+ :name=>"Fingering",
156
+ :min_gauge=>nil,
157
+ :wpi=>"14",
158
+ :id=>5,
159
+ :crochet_gauge=>"",
160
+ :ply=>"4",
161
+ :knit_gauge=>"28",
162
+ :max_gauge=>nil
163
+ },
164
+ :shop_id=>nil,
165
+ :prefer_metric_weight=>true,
166
+ :prefer_metric_length=>false,
167
+ :ounces_per_skein=>nil,
168
+ :dye_lot=>nil,
169
+ :skeins=>nil,
170
+ :id=>31065185,
171
+ :shop_name=>nil,
172
+ :grams_per_skein=>nil,
173
+ :color_family_id=>nil,
174
+ :total_meters=>nil,
175
+ :stash_id=>nil,
176
+ :colorway=>nil,
177
+ :total_ounces=>nil,
178
+ :primary_pack_id=>nil,
179
+ :personal_name=>nil,
180
+ :meters_per_skein=>nil,
181
+ :quantity_description=>nil,
182
+ :yards_per_skein=>nil,
183
+ :total_yards=>nil
184
+ }
185
+ ],
186
+ :yardage_description=>"425 - 435 yards"
187
+ }
188
+ end
189
+
190
+ end
@@ -0,0 +1,27 @@
1
+ module YarnHelpers
2
+
3
+ # Helpers for Ravelry::Yarn
4
+
5
+ def y_initialize_empty_yarn
6
+ yarn = Ravelry::Yarn.new
7
+ end
8
+
9
+ def y_initialize_with_id
10
+ yarn = Ravelry::Yarn.new
11
+ yarn.data = yarn_hash[:id]
12
+ yarn
13
+ end
14
+
15
+ def y_initialize_with_data_and_id
16
+ yarn = Ravelry::Yarn.new(yarn_hash[:id])
17
+ yarn.data = yarn_hash
18
+ yarn
19
+ end
20
+
21
+ def y_initialize_with_data
22
+ yarn = Ravelry::Yarn.new
23
+ yarn.data = yarn_hash
24
+ yarn
25
+ end
26
+
27
+ end
@@ -0,0 +1,25 @@
1
+ module YarnWeightHelpers
2
+
3
+ # Helpers for Ravelry::YarnWeight
4
+
5
+ def yw_initialize_empty_yarn
6
+ Ravelry::YarnWeight.new
7
+ end
8
+
9
+ def yw_initialize_with_id
10
+ Ravelry::YarnWeight.new(yarn_weight_hash[:id])
11
+ end
12
+
13
+ def yw_initialize_with_data_and_id
14
+ yarn = Ravelry::YarnWeight.new(yarn_weight_hash[:id])
15
+ yarn.data = yarn_weight_hash
16
+ yarn
17
+ end
18
+
19
+ def yw_initialize_with_data
20
+ yarn = Ravelry::YarnWeight.new
21
+ yarn.data = yarn_weight_hash
22
+ yarn
23
+ end
24
+
25
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Ravelry::Author do
4
+ before do
5
+ @author = Ravelry::Author.new(pattern_author)
6
+ end
7
+
8
+ it 'creates an instance of Author' do
9
+ expect(@author).to be_instance_of(Ravelry::Author)
10
+ end
11
+
12
+ context 'has and sets reader attributes for' do
13
+ it 'id' do
14
+ expect(@author.id).to eq(@author.id)
15
+ end
16
+
17
+ it 'name' do
18
+ expect(@author.name).to eq(@author.name)
19
+ end
20
+
21
+ it 'permalink' do
22
+ expect(@author.permalink).to eq(@author.permalink)
23
+ end
24
+
25
+ it 'patterns_count' do
26
+ expect(@author.patterns_count).to eq(@author.patterns_count)
27
+ end
28
+
29
+ it 'favorites_count' do
30
+ expect(@author.favorites_count).to eq(@author.favorites_count)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,46 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Ravelry::Category do
4
+ before do
5
+ @category = Ravelry::Category.new(categories)
6
+ @data = categories
7
+ end
8
+
9
+ it 'creates an instance of Category' do
10
+ expect(@category).to be_instance_of(Ravelry::Category)
11
+ end
12
+
13
+ context 'has and sets reader attributes for' do
14
+ it 'name' do
15
+ expect(@category.name).to eq(@data[:name])
16
+ end
17
+
18
+ it 'permalink' do
19
+ expect(@category.permalink).to eq(@data[:permalink])
20
+ end
21
+
22
+ it 'parent_name' do
23
+ expect(@category.parent_name).to eq(@data[:parent][:name])
24
+ end
25
+
26
+ it 'parent_permalink' do
27
+ expect(@category.parent_permalink).to eq(@data[:parent][:permalink])
28
+ end
29
+
30
+ it 'grandparent_name' do
31
+ expect(@category.grandparent_name).to eq(@data[:parent][:parent][:name])
32
+ end
33
+
34
+ it 'grandparent_permalink' do
35
+ expect(@category.grandparent_permalink).to eq(@data[:parent][:parent][:permalink])
36
+ end
37
+
38
+ it 'greatgrandparent_name' do
39
+ expect(@category.greatgrandparent_name).to eq(@data[:parent][:parent][:parent][:name])
40
+ end
41
+
42
+ it 'greatgrandparent_permalink' do
43
+ expect(@category.greatgrandparent_permalink).to eq(@data[:parent][:parent][:parent][:permalink])
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Ravelry::Craft do
4
+ before do
5
+ @craft = Ravelry::Craft.new(craft)
6
+ @data = craft
7
+ end
8
+
9
+ it 'creates an instance of Craft' do
10
+ expect(@craft).to be_instance_of(Ravelry::Craft)
11
+ end
12
+
13
+ context 'has and sets reader attributes for' do
14
+ it 'name' do
15
+ expect(@craft.name).to eq(@data[:name])
16
+ end
17
+
18
+ it 'permalink' do
19
+ expect(@craft.permalink).to eq(@data[:permalink])
20
+ end
21
+ end
22
+ end