hangry 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/README.md +1 -0
  2. data/lib/hangry.rb +1 -0
  3. data/lib/hangry/data_vocabulary_recipe_parser.rb +4 -0
  4. data/lib/hangry/hrecipe_parser.rb +20 -6
  5. data/lib/hangry/recipe_parser.rb +3 -1
  6. data/lib/hangry/schema_org_recipe_parser.rb +4 -0
  7. data/lib/hangry/version.rb +1 -1
  8. data/spec/fixtures/{bbc.co.uk.html → hrecipe/bbc.co.uk.html} +0 -0
  9. data/spec/fixtures/{bigoven.html → hrecipe/bigoven.html} +0 -0
  10. data/spec/fixtures/hrecipe/campbellskitchen.com.html +1970 -0
  11. data/spec/fixtures/{cooking.com.html → hrecipe/cooking.com.html} +0 -0
  12. data/spec/fixtures/{cooks.com.html → hrecipe/cooks.com.html} +0 -0
  13. data/spec/fixtures/hrecipe/drinksmixer.com.html +604 -0
  14. data/spec/fixtures/{epicurious.html → hrecipe/epicurious.html} +0 -0
  15. data/spec/fixtures/hrecipe/grouprecipes.com.html +982 -0
  16. data/spec/fixtures/hrecipe/homecooking.about.com.html +326 -0
  17. data/spec/fixtures/hrecipe/jamieoliver.com.html +868 -0
  18. data/spec/fixtures/hrecipe/mrfood.com.html +4642 -0
  19. data/spec/fixtures/hrecipe/southernfood.about.com.html +328 -0
  20. data/spec/fixtures/{tasteofhome.com.html → hrecipe/tasteofhome.com.html} +0 -0
  21. data/spec/fixtures/{allrecipes.html → schema_org/allrecipes.html} +0 -0
  22. data/spec/fixtures/{betty_crocker.html → schema_org/betty_crocker.html} +0 -0
  23. data/spec/fixtures/{copykat.com.html → schema_org/copykat.com.html} +0 -0
  24. data/spec/fixtures/{chow.com.html → schema_org/data-vocabulary_org/chow.com.html} +0 -0
  25. data/spec/fixtures/{myrecipes.com.html → schema_org/data-vocabulary_org/myrecipes.com.html} +0 -0
  26. data/spec/fixtures/{saveur.com.html → schema_org/data-vocabulary_org/saveur.com.html} +0 -0
  27. data/spec/fixtures/{tarladalal.com.html → schema_org/data-vocabulary_org/tarladalal.com.html} +0 -0
  28. data/spec/fixtures/{taste.com.au.html → schema_org/data-vocabulary_org/taste.com.au.html} +0 -0
  29. data/spec/fixtures/{eatingwell.com.html → schema_org/eatingwell.com.html} +0 -0
  30. data/spec/fixtures/{food.com.html → schema_org/food.com.html} +0 -0
  31. data/spec/fixtures/{food_network_schema_org.html → schema_org/food_network_schema_org.html} +0 -0
  32. data/spec/fixtures/{food_network_with_blank_ingredients.html → schema_org/food_network_with_blank_ingredients.html} +0 -0
  33. data/spec/fixtures/{foodandwine.com.html → schema_org/foodandwine.com.html} +0 -0
  34. data/spec/fixtures/{heart.org.html → schema_org/heart.org.html} +0 -0
  35. data/spec/fixtures/{pillsbury.com.html → schema_org/pillsbury.com.html} +0 -0
  36. data/spec/hangry_spec.rb +1 -0
  37. data/spec/real_examples/{bbc_co_uk_spec.rb → hrecipe/bbc_co_uk_spec.rb} +2 -1
  38. data/spec/real_examples/{big_oven_spec.rb → hrecipe/big_oven_spec.rb} +2 -1
  39. data/spec/real_examples/hrecipe/campbells_kitchen_com_spec.rb +63 -0
  40. data/spec/real_examples/{cooking_com_spec.rb → hrecipe/cooking_com_spec.rb} +3 -2
  41. data/spec/real_examples/{cooks_com_spec.rb → hrecipe/cooks_com_spec.rb} +2 -1
  42. data/spec/real_examples/hrecipe/drinks_mixer_com_spec.rb +57 -0
  43. data/spec/real_examples/{epicurious_spec.rb → hrecipe/epicurious_spec.rb} +2 -1
  44. data/spec/real_examples/hrecipe/group_recipes_com_spec.rb +65 -0
  45. data/spec/real_examples/hrecipe/home_cooking_food_com_spec.rb +79 -0
  46. data/spec/real_examples/hrecipe/jamie_oliver_com_spec.rb +61 -0
  47. data/spec/real_examples/hrecipe/mr_food_com_spec.rb +55 -0
  48. data/spec/real_examples/hrecipe/southern_food_about_com_spec.rb +64 -0
  49. data/spec/real_examples/{taste_of_home_spec.rb → hrecipe/taste_of_home_spec.rb} +4 -3
  50. data/spec/real_examples/{all_recipes_spec.rb → schema_org/all_recipes_spec.rb} +2 -1
  51. data/spec/real_examples/{betty_crocker_spec.rb → schema_org/betty_crocker_spec.rb} +2 -1
  52. data/spec/real_examples/{copykat_spec.rb → schema_org/copykat_spec.rb} +2 -1
  53. data/spec/real_examples/{chow_com_spec.rb → schema_org/data-vocabulary_org/chow_com_spec.rb} +2 -1
  54. data/spec/real_examples/{myrecipes_com_spec.rb → schema_org/data-vocabulary_org/myrecipes_com_spec.rb} +2 -1
  55. data/spec/real_examples/{saveur_com_spec.rb → schema_org/data-vocabulary_org/saveur_com_spec.rb} +2 -1
  56. data/spec/real_examples/{tarladalal_com_spec.rb → schema_org/data-vocabulary_org/tarladalal_com_spec.rb} +2 -1
  57. data/spec/real_examples/{taste_com_au_spec.rb → schema_org/data-vocabulary_org/taste_com_au_spec.rb} +2 -1
  58. data/spec/real_examples/{eating_well_spec.rb → schema_org/eating_well_spec.rb} +3 -2
  59. data/spec/real_examples/{food_and_wine_spec.rb → schema_org/food_and_wine_spec.rb} +2 -1
  60. data/spec/real_examples/{food_com_spec.rb → schema_org/food_com_spec.rb} +2 -1
  61. data/spec/real_examples/{food_network_spec.rb → schema_org/food_network_spec.rb} +4 -2
  62. data/spec/real_examples/{heart_org_spec.rb → schema_org/heart_org_spec.rb} +2 -1
  63. data/spec/real_examples/{pillsbury_spec.rb → schema_org/pillsbury_spec.rb} +2 -1
  64. metadata +124 -96
@@ -0,0 +1,328 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!--DVID=000423EE-->
2
+ <html lang="en" dir="ltr">
3
+ <head>
4
+ <meta charset="ISO-8859-1">
5
+ <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7
+ <meta name="ROBOTS" content="NOODP">
8
+ <meta name="pd" content="Friday, 05-Oct-2012 09:35:26 UTC">
9
+ <link rel="icon" href="http://0.tqn.com/f/a08.ico">
10
+ <link rel="search" type="application/opensearchdescription+xml" href="http://0.tqn.com/4/o/os.xml" title="About.com">
11
+ <script>var ziRfw=0;zobt="More Southern Food Ads";zOBT=" Ads";function zIpSS(u){zpu(0,u,280,375,"ssWin")}function zIlb(l,t,f){zT(l,'18/1Pp/wX')}function rsi(i,h,w){if(gEI(i)){if(h)gEI(i).height=h;if(w)gEI(i).width=w}}</script>
12
+ <link rel="stylesheet" href="http://0.tqn.com/0/dc/s147.css" media="all">
13
+ <!--[if lt IE 8]>
14
+ <link rel="stylesheet" href="http://0.tqn.com/8/dc/rdie.css" type="text/css" media="all">
15
+ <![endif]-->
16
+ <meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://southernfood.about.com" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0) gen true for "http://southernfood.about.com" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0))'>
17
+ <meta property="og:title" content=" Saut&eacute;ed&#160;Kale">
18
+ <meta property="og:type" content="article">
19
+ <meta property="og:image" content="http://0.tqn.com/d/southernfood/1/I/r/Q/3/kale-saute-2.jpg">
20
+ <meta property="og:url" content="http://southernfood.about.com/od/collardgreens/r/Kale-Saute-Recipe.htm">
21
+ <meta property="og:site_name" content="About.com Southern Food">
22
+ <meta property="fb:app_id" content="121030274606741">
23
+ <script>zWASL=1;zGRH=1;var zSBT='Ads'</script>
24
+ <style>.gB{line-height:1.5}.tr #oF{margin:0;color:#666}#abc #sidebar,#abc .sb{margin-top:.5em}#tt26 .entry .gB p{margin:0}@media screen and (-webkit-min-device-pixel-ratio:0){#abc #sidebar,#abc #sb1.sb,#abc #sb2.sb{margin-top:1.5em}#tt0 #abc #sidebar{margin-top:.5em}}#abw .gB .u,#abw .gB .u:hover{display:block}#tt56 #index{margin-top: 2em}</style>
25
+ <title>Saut&eacute;ed Kale - Kale With Onion, Hot Peppers, and Red Wine Vinegar</title>
26
+ <meta name="keywords" content="kale saute, kale recipe, crushed peppers, onion, easy recipe">
27
+ <meta name="description" content="Kale Recipe: This sauteed kale is a delicious way to enjoy fresh or frozen cooked kale. It's nutritious, delicious, and super easy to prepare! The crushed red pepper can either be Portuguese crushed hot red peppers or fresh minced hot peppers.">
28
+ </head>
29
+ <body id="tt28" class="gt2 food nd">
30
+ <script language="JavaScript">
31
+ <!--
32
+ zGOW=0;xd=0;zap="";zAth='2';zAthG='2';zTt='28';zir=''
33
+ zBT=4
34
+ zBTS=4
35
+ zBsT=0
36
+ zBTds=''
37
+ zBTr='4'
38
+ zCT=0
39
+ zSt='';zGz=''
40
+ ch='food';gs='southernfood';xg="Southern Food";zcs=''
41
+ zFDT='0'
42
+ zFST='0'
43
+ zKwR=''
44
+ zOr='D441I40iTrTrFIJO';zTbO=zRQO=1;zp0=zp1=zp2=zp3=zfs=0;zDc=1;
45
+ zSm=zSu=zhc=zpb=zgs=zdn='';zFS='D4410D40110D00101';zFD='D4410D40110D00101'
46
+ zDO=zis=1;zpid=zi=zRf=ztp=zpo=0;zdx=20;zfx=100;zJs=0;
47
+ zst336280=17;;zst72890=11;;zi=1;zz=';160600=2-1-1299;336280=2-1-1299;72890=2-1-1299;336155=2-1-12-1;93048=2-1-12-1;30050=2-1-12-1';zx='3-1-1399';zde=15;zdp=1440;zds=1440;zfp=0;zfs=66;zfd=100;zdd=20;zaX=new Array(11, new Array(100,830,8192,19,'342,145'),7, new Array(100,284,8196,13,'342,400'));zDc=1;;zD336=1;;zhc='';;zGTH=1;
48
+ zGo=0;zG=1;zTac=2;zDot=0;
49
+ zObT="Cooking";zRad=5;var tp=" primedia_"+(zBT?"":"non_")+"site_targeting";if(!this.zGCID)zGCID=tp
50
+ else zGCID+=tp;
51
+ if(zBT>0){zOBR=1}
52
+ zap=this.zap?"p=0;"+zap:"p=0;";if(!this.uy)uy='about.com';if(typeof document.domain!="undefined")document.domain=uy;//-->
53
+ </script>
54
+ <script language="JavaScript" src="http://0.tqn.com/0/js/cj018x1t6e9.js?rdv=j25"></script>
55
+ <script>function zob(p){if(!this.zOfs)return;var a=zOfs,t,i=0,l=a.length;if(l){w('<div id="oF"><b>'+(this.zobt?zobt:xg+' Ads')+'</b><ul>');while((i<l)&&i<zRad){t=a[i++].line1;w('<li><a href="/z/js/o'+(p?p:'')+'.htm?k='+zUriS(t.toLowerCase())+(this.zobr?zobr:'')+'&d='+zUriS(t)+'&r='+zUriS(zWl)+'" target="_'+(this.zOBNW?'new'+zr(9999):'top')+'">'+t+'</a></li>');}w('</ul></div>')}}</script><script language="JavaScript">zJs=10</script>
56
+ <script language="JavaScript1.1">zJs=11</script>
57
+ <script language="JavaScript1.2">zJs=12</script>
58
+ <script language="JavaScript1.3">zJs=13</script>
59
+ <script>zc(5,'jsc',zJs,9999999,'')</script>
60
+ <script language="JavaScript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
61
+ <script>function zSae(n,d,i,u,t,r,b){var f=this.zGRH,x=xf+x1,y=x1+'>';w('<p onMouseOver="return zhl(1,'+n+')" onMouseOut="zhl(0)">'+x2+u+(f?x1+qf+'"t':'')+'" lnp="'+n+x3+d+x4+(f?t+'</a>'+x2+u+x1+qf+'"u" lnp="'+n+x3+d+x4+r:x+'t'+y+t+xh+x+'d'+y+d+xh+x+'u'+y+r+xh)+'</a>'+x+'d'+y+d+xh+'</p>')};z160=zpreC(160,600);z336=zpreC(336,280);z728=zpreC(728,90);z155=zpreC(336,155);zItw=160</script>
62
+ <div id="abw" class="hrecipe">
63
+ <div id="abh">
64
+ <div id="adL">
65
+ <script>if(z728>0){adunit('','',uy,ch,gs,728,90,'1','lb',1)}</script>
66
+ <noscript><a href="http://ad.doubleclick.net/jump/abt.food/food_southernfood;kw=;site=southernfood;chan=food;pos=lb;sz=728x90;ord=1D441I40iTrTrFIJO" target="_new"><img src="http://ad.doubleclick.net/ad/abt.food/food_southernfood;kw=;site=southernfood;chan=food;pos=lb;sz=728x90;ord=1D441I40iTrTrFIJO"></a></noscript>
67
+ </div>
68
+ <ol class="ctr">
69
+ <li><a href="http://www.about.com/food/" zT="18/1Yd/Zz">Food</a></li>
70
+ </ol>
71
+ <div class="ma">
72
+ <div class="lg"><a href="http://www.about.com/" zT="18/1Yb/Zv"><img src="http://0.tqn.com/f/lg/a154.png" alt="About.com"></a></div>
73
+ <div class="h2"><a href="/" zT="18/1Yc/Zx" title="Southern Food">Southern Food</a></div>
74
+ </div>
75
+ <form class="gs" method="get" action="http://southernfood.about.com/sitesearch.htm" target="_top">
76
+ <fieldset><input id="sv" name="q" value="" validate="required" alert="Please enter something to search for!"><input type="hidden" name="SUName" value="southernfood"><button class="btn" type="submit">Search</button></fieldset>
77
+ </form>
78
+ <ul id="up">
79
+ <li class="h"><a href="http://southernfood.about.com/" zT="18/1ZZ/aZ"><span>Southern Food</span></a></li>
80
+ <li><a href="http://southernfood.about.com/od/recipesbycourse/u/easyrecipes.htm" zT="18/1ZZ/11o">Easy Recipes</a></li>
81
+ <li><a href="http://southernfood.about.com/od/recipesbycourse/u/favorites.htm" zT="18/1ZZ/11q">Classic Dishes</a></li>
82
+ <li><a href="http://southernfood.about.com/od/seasonalrecipes/u/Holiday-And-Seasonal-Recipes.htm" zT="18/1ZZ/11r">Holiday/Seasonal</a></li>
83
+ <li class="last "></li>
84
+ <script>if(typeof zp!='undefined'){if(zp[8].d){w('<li id="st">');Dsp(zp[8],'ip');w('</li>')}}</script>
85
+ </ul>
86
+ <ul id="pa">
87
+ <li id="ea"><a href="/gi/pages/shareurl.htm?PG=http%3a%2f%2fsouthernfood%2eabout%2ecom%2fod%2fcollardgreens%2fr%2fKale%2dSaute%2dRecipe%2ehtm&zItl=Kale%20Saute" zT="18/1Z0/[3">Share</a></li>
88
+ <li id="pra">
89
+ <script>w(x2+zWl+'?p=1" zT="18/1[N" rel="nofollow">Print</a>')</script>
90
+ </li>
91
+ </ul>
92
+ </div>
93
+ <div id="abb">
94
+ <div id="com">
95
+ <form class="nl" name="subscription" action="http://clk.about.com/" method="get" alert="Please enter a valid email address."><label for="nTxt">Free Southern Food Newsletter!</label><input type="hidden" name="zi" value="18/1a9"><input type="hidden" name="surl" value="http://southernfood.about.com/gi/pages/mmail.htm"><input type="hidden" name="eurl" value="http://southernfood.about.com/gi/pages/mmail.htm"><input type="hidden" name="cmd_southernfood" value="+:gs::southernfood"><input type="hidden" name="gs" value="1"><input type="hidden" name="sdn" value="southernfood"><input type="hidden" name="tt" value="28"><input type="hidden" name="bts" value="4"><span><input id="nTxt" type="email" name="email" placeholder="Enter email address" validate="email"></span><button type="submit" name="newsub">Sign Up</button>
96
+ </form>
97
+ <p><a href="http://forums.about.com/n/pfx/forum.aspx?nav=messages&webtag=ab-southernfood" zT="18/1Z1"><b>Discuss</b> in my forum</a></p>
98
+ </div>
99
+ <!--gc-->
100
+ <div id="abt">
101
+ <h1 class="item"> <span class="fn"> Saut&eacute;ed&#160;Kale </span> </h1>
102
+ <div id="urate" class="ur review hreview-aggregate"><span class="rating">Be the first to <b class="next"><a href="http://reviews.about.com/6843-2/75f43jW00GY7/submission.htm?bvpage=action.htm&amp;action=AddReview&amp;format=embedded&amp;user=__USERID__&amp;return=http://southernfood.about.com/od/collardgreens/r/Kale-Saute-Recipe.htm&amp;loginparams=__BVLOGINPARAMETERS__&amp;submissionparams=sdn%3Dsouthernfood&amp;campaignid=BV_RATING_SUMMARY_ZERO_REVIEWS&amp;submissionurl=__BVSUBMISSIONURL__">write a review</a></b></span></div>
103
+ <p id="by"> By <span class="author"><a href="/bio/Diana-Rattray-2.htm" rel="author">Diana Rattray</a>, About.com Guide</span></p>
104
+ </p>
105
+ </div>
106
+ <div class="tr">
107
+ <script>zobt1=zobt;zobt='Ads:';zob();zobt=zobt1</script>
108
+ </div>
109
+ <div id="abm" class="clear">
110
+ <div id="abc">
111
+ <div id="mimg" class="imgw">
112
+ <q><img class="photo" src="http://0.tqn.com/d/southernfood/1/I/r/Q/3/kale-saute-2.jpg" alt="Kale Recipe"></q>
113
+ <p class="cap">Kale Recipe: Kale Saute ---- <b><a href='http://southernfood.about.com/od/Side-Dish-and-Vegetables/ss/Photo-Of-Kale-Saute.htm'>Large Photo</a></b></p>
114
+ <cite>Photo of Kale Saute &copy; Diana Rattray</cite>
115
+ </div>
116
+ <div id="sb1" class="sb">
117
+ <script type="text/javascript">zSB(3,3)</script>
118
+ <div id="oF">
119
+ <b>See More About</b>
120
+ <ul>
121
+ <li><a href="/lr/kale/1565635/1/" zT="18/1Ys/[1" rel="nofollow">kale</a></li>
122
+ <li><a href="/lr/greens/1565635/2/" zT="18/1Ys/[1" rel="nofollow">greens</a></li>
123
+ <li><a href="/lr/side_dish_recipes/1565635/3/" zT="18/1Ys/[1" rel="nofollow">side dish recipes</a></li>
124
+ </ul>
125
+ </div>
126
+ </div>
127
+ <div id="articlebody">
128
+ <div id="intro" class="summary">This kale recipe is nutritious and delicious, and it's very easy to prepare and cook. There's very little fat in the recipe, and it can be reduced even further by using nonstick cooking spray and a little broth to saute the onion. I used the Portuguese hot crushed red peppers (wet, from jar) in this dish, but feel free to use fresh minced hot peppers for heat. <br>
129
+ Take a look at the <b><a href="http://southernfood.about.com/od/Side-Dish-and-Vegetables/ss/Photo-Of-Kale-Saute.htm">large picture of this kale recipe</a></b>.<br>
130
+ </div>
131
+ <h3>Prep Time: <span>12�minutes</span></h3>
132
+ <h3>Cook Time: <span>13�minutes</span></h3>
133
+ <h3>Total Time: <span class="duration">25�minutes<span class="value-title" title="PT25M"></span></span></h3>
134
+ <h3>Yield: <span class="yield">Serves 4 to 6</span></h3>
135
+ <h3 id="rI">Ingredients:</h3>
136
+ <ul>
137
+ <li class="ingredient">1 pound kale, large stems removed, chopped, cooked (or use frozen chopped kale)</li>
138
+ <li class="ingredient">2 teaspoons olive oil</li>
139
+ <li class="ingredient">1/2 cup finely chopped purple onion</li>
140
+ <li class="ingredient">1 medium clove garlic, pressed</li>
141
+ <li class="ingredient">1 or 2 hot peppers, minced, or 1 heaping tablespoon Portuguese crushed red peppers from a jar*</li>
142
+ <li class="ingredient">3 tablespoons red wine vinegar</li>
143
+ <li class="ingredient">1 tomato, chopped</li>
144
+ <li class="ingredient">1/2 teaspoon salt, or to taste</li>
145
+ <li class="ingredient">pepper, to taste</li>
146
+ </ul>
147
+ <h3 id="rP">Preparation:</h3>
148
+ <div class="instructions">
149
+ To cook the kale, bring a pot of salted water to a boil. Add the chopped kale and boil for 10 to 15 minutes, or until stem portions are tender. Or, follow directions on the package if using frozen kale.
150
+ <p>
151
+ Heat olive oil in a large skillet over medium heat; cook onion until just tender. Add the garlic and cook, stirring, for 1 minute. Add crushed red peppers, kale, and vinegar; cook, stirring, for 1 minute longer. Add chopped tomato, salt, and pepper; heat through.
152
+ <p>
153
+ Serves 4 to 6.
154
+ <p>
155
+ *
156
+ Portuguese style wet crushed hot red peppers might be found in the ethnic or Spanish section. I found Pastene in my area, but if you can't find the crushed peppers, use any fresh hot chile pepper, finely chopped.
157
+ <p>
158
+ </div>
159
+ <!--/gc-->
160
+ </div>
161
+ <div id="coda">
162
+ <div class="ugc detail" id="rr">
163
+ <div class="n3">User Reviews</div>
164
+ <div class="ur">
165
+ <a class="btn rvw" href="http://reviews.about.com/6843-2/75f43jW00GY7/submission.htm?bvpage=action.htm&action=AddReview&format=embedded&user=__USERID__&return=http://southernfood.about.com/od/collardgreens/r/Kale-Saute-Recipe.htm&loginparams=__BVLOGINPARAMETERS__&submissionparams=sdn%3Dsouthernfood&campaignid=BV_RATING_SUMMARY_ZERO_REVIEWS&submissionurl=__BVSUBMISSIONURL__">Write a review</a>
166
+ <p id="bvmra"><a href="http://reviews.about.com/6843-2/75f43jW00GY7/submission.htm?bvpage=action.htm&action=AddReview&format=embedded&user=__USERID__&return=http://southernfood.about.com/od/collardgreens/r/Kale-Saute-Recipe.htm&loginparams=__BVLOGINPARAMETERS__&submissionparams=sdn%3Dsouthernfood&campaignid=BV_RATING_SUMMARY_ZERO_REVIEWS&submissionurl=__BVSUBMISSIONURL__">Be the first to write a review</a></p>
167
+ </div>
168
+ </div>
169
+ <div id="resources">
170
+ <div class="lkbx">
171
+ <h5>More Kale Recipes</h5>
172
+ <ul>
173
+ <li><a href="http://southernfood.about.com/od/beansoups/r/r71128b.htm" zT="18/1Pp">Kale and White Bean Soup With Spicy Sausage</a></li>
174
+ <li><a href="http://southernfood.about.com/od/potatorecipes/r/Mashed-Potatoes-With-Kale.htm" zT="18/1Pp">Mashed Potatoes With Kale</a></li>
175
+ <li><a href="http://southernfood.about.com/od/collardgreens/r/Spicy-Kale-And-Mustard-Greens-With-Sausage.htm" zT="18/1Pp">Spicy Kale and Mustard Greens With Sausage</a></li>
176
+ </ul>
177
+ </div>
178
+ <div class="lkbx">
179
+ <h5>More Kale and Other Greens</h5>
180
+ <ul>
181
+ <li><a href="http://southernfood.about.com/od/pastabake/r/Chicken-Kale-And-Pasta-Casserole.htm" zT="18/1Pp">Chicken, Kale, and Pasta Bake With Cheese</a></li>
182
+ <li><a href="http://southernfood.about.com/od/beefsouprecipes/r/r90110c.htm" zT="18/1Pp">Hamburger Soup With Black-Eyed Peas and Kale</a></li>
183
+ <li><a href="http://southernfood.about.com/od/collardgreens/r/blbb37.htm" zT="18/1Pp">Collard Greens and Kale</a></li>
184
+ </ul>
185
+ </div>
186
+ <div class="lkbx">
187
+ <h5>Kale Recipes From Others</h5>
188
+ <ul>
189
+ <li><a href="http://kidscooking.about.com/od/sidedishes/r/crispykale.htm" zT="18/1Pp">Crispy Kale</a></li>
190
+ <li><a href="http://germanfood.about.com/od/meatbasedrecipesandmenu/r/gruenkohl.htm" zT="18/1Pp">Kale and Sausage</a></li>
191
+ <li><a href="http://vegetarian.about.com/od/sidevegetabledishes/r/creamykale.htm" zT="18/1Pp">Quick Creamy Kale Recipe</a></li>
192
+ </ul>
193
+ </div>
194
+ <div id="rel">
195
+ <div class="h5">Related Articles</div>
196
+ <ul>
197
+ <li><a href="http://www.netplaces.com/vegetarian-food/leafy-greens-and-cruciferous-vegetables/kale-with-garlic-and-thyme.htm" zT="18/1YL/Zn">Kale with Garlic and Thyme - Vegetarian Food</a></li>
198
+ <li><a href="http://localfoods.about.com/od/strifysaute/r/Kale-With-Pickled-Red-Onion.htm" zT="18/1YL/Zn">Kale With Red Onions - Recipe for Kale With Red Onions</a></li>
199
+ <li><a href="http://homecooking.about.com/od/soups/r/blss7.htm" zT="18/1YL/Zn">Pumpkin and Potato Soup with Kale Recipe</a></li>
200
+ <li><a href="http://www.netplaces.com/meals-on-a-budget/pork-by-the-pound/sausage-and-greens-with-pasta.htm" zT="18/1YL/Zn">Sausage and Greens with Pasta Recipe - Meals on a Budget</a></li>
201
+ <li><a href="http://localfoods.about.com/od/pastas/r/kaletomatopasta.htm" zT="18/1YL/Zn">Kale Tomato Pasta - Recipe for Kale Tomato Pasta</a></li>
202
+ </ul>
203
+ </div>
204
+ </div>
205
+ <div id="gi">
206
+ <div class="cr image">
207
+ <div class="img"> <a href="/bio/Diana-Rattray-2.htm" zT="18/1YK"><img src="http://0.tqn.com/d/g/2.jpg" alt="Diana Rattray"></a> </div>
208
+ <p> <a href="/bio/Diana-Rattray-2.htm" zT="18/1YO">Diana Rattray</a> <br> Southern Food Guide </p>
209
+ <ul>
210
+ <li> <a href="/gi/pages/stay.htm" zT="18/1YS"> <b>Sign up</b> for My Newsletter </a> </li>
211
+ </ul>
212
+ <ul class="so">
213
+ <li> <a href="/b/" zT="18/1YM">Headlines</a> </li>
214
+ <li><a href="http://forums.about.com/n/pfx/forum.aspx?nav=messages&webtag=ab-southernfood" zT="18/1YN">Forum</a></li>
215
+ </ul>
216
+ </div>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ <div id="aba">
221
+ <script>zSB(3,3)</script><script>if(z336>0){w('<div id="adB"><p>Advertisement</p>');adunit('','','about.com',ch,gs,336,280,'1','bb',3);w('</div>')}if(z155>0){w('<div id="adP"><p>Advertisement</p>');adunit('','','about.com',ch,gs,336,155,'1','ps',4);w('</div>')}</script><script>if(zp[7].d){Dsp(zp[7],'ip')}</script><script>if(zp[11].d){Dsp(zp[11],'ip')}</script>
222
+ </div>
223
+ <script>if(zSbL<1)zSbL=3;zSB(2);zSbL=0</script>
224
+ </div>
225
+ <div id="rs"><span id="n5">Top Related Searches</span> <a href="http://search.about.com/r.htm?q=medium clove garlic" zT="18/1lu">medium clove garlic</a> <a href="http://search.about.com/r.htm?q=red wine vinegar" zT="18/1lu">red wine vinegar</a> <a href="http://search.about.com/r.htm?q=kale recipe" zT="18/1lu">kale recipe</a> <a href="http://search.about.com/r.htm?q=chile pepper" zT="18/1lu">chile pepper</a> <a href="http://search.about.com/r.htm?q=purple onion" zT="18/1lu">purple onion</a> <a href="http://search.about.com/r.htm?q=cook onion" zT="18/1lu">cook onion</a></div>
226
+ <div id="abf">
227
+ <div id="browse" class="pane clear" >
228
+ <div class="h3">Explore Southern Food</div>
229
+ <div id="bc1">
230
+ <div class="h4">Must Reads</div>
231
+ <ul>
232
+ <li><a href="/library/crock/blcpidx.htm" zT='18/1fG/1'>Crockpot & Slow Cooker Recipes</a></li>
233
+ <li><a href="http://southernfood.about.com/cs/hamrecipes/a/hamrecipes.htm" zT='18/1fG/2'>Ham Recipes</a></li>
234
+ <li><a href="http://southernfood.about.com/od/casserolerecipes/tp/family-casserole-recipes.htm" zT='18/1fG/3'>A Dozen Everyday Casseroles</a></li>
235
+ <li><a href="/od/crockpotchicken/tp/crockpot_chicken.htm" zT='18/1fG/4'>Slow Cooker Chicken Recipes</a></li>
236
+ <li><a href="http://southernfood.about.com/library/recipes/blidx.htm" zT='18/1fG/5'>Main Recipe Index</a></li>
237
+ </ul>
238
+ <div class="h4">Most Popular</div>
239
+ <ul>
240
+ <li><a href="http://southernfood.about.com/od/frenchtoastrecipes/r/bl30118b.htm" zT="18/yV/O3">French Toast</a></li>
241
+ <li><a href="http://southernfood.about.com/od/carrots/r/bl61012a.htm" zT="18/yV/O3">Brown Sugar Glazed Carrots</a></li>
242
+ <li><a href="http://southernfood.about.com/library/crock/blcpidx.htm" zT="18/yV/O3">Crockpot Recipes - More than 1400 Recipes for the Crock Pot &hellip;</a></li>
243
+ <li><a href="http://southernfood.about.com/od/scallopedpotatoes/r/bl30129v.htm" zT="18/yV/O3">Scalloped Potatoes</a></li>
244
+ <li><a href="http://southernfood.about.com/od/bakedhamrecipes/r/bl51123d.htm" zT="18/yV/O3">Maple Glazed Ham Recipe</a></li>
245
+ </ul>
246
+ </div>
247
+ <div id="bc2">
248
+ <div class="tr">
249
+ <script>zobt1=zobt;zobt='Ads:';zob();zobt=zobt1</script>
250
+ </div>
251
+ <script>splitList(getElementsByClassName('tr',gEI('bc2'))[0].getElementsByTagName('ul')[0]);</script>
252
+ <div class="h4">By Category</div>
253
+ <ul id="bcl">
254
+ <li><a href="/od/appetizersandsnacks/Appetizers_Snack_Recipes.htm" zT='18/1hZ/1'>Appetizers and Snacks</a></li>
255
+ <li><a href="/od/beefandgroundbeef/Beef_Recipes_Ground_Beef_Recipes_and_Lamb_Recipes.htm" zT='18/1hZ/2'>Beef and Lamb Recipes</a></li>
256
+ <li><a href="/od/chickenrecipes/Chicken_Turkey_and_other_Poultry_Recipes.htm" zT='18/1hZ/3'>Chicken & Turkey Recipes</a></li>
257
+ <li><a href="/od/crockpotrecipes/Crockpot_Recipes_and_Slow_Cooker_Recipes.htm" zT='18/1hZ/4'>Crockpot Recipes</a></li>
258
+ <li><a href="/od/casserolerecipes/Casserole_Recipes.htm" zT='18/1hZ/5'>Casserole Recipes</a></li>
259
+ <li><a href="/od/porkandham/Pork_Recipes_Pork_and_Ham_and_Sausage.htm" zT='18/1hZ/6'>Pork and Ham Recipes</a></li>
260
+ <li><a href="/od/fishandseafood/Fish_and_Seafood_Recipes.htm" zT='18/1hZ/7'>Fish and Seafood Recipes</a></li>
261
+ <li><a href="/od/cookiesbarsandcandy/Cookie_Recipes_Brownies_and_Bars_and_Candy_Recipes.htm" zT='18/1hZ/8'>Cookies and Candy Recipes</a></li>
262
+ <li><a href="/od/cakespiesdesserts/Dessert_Recipes_Cakes_Pies_Cheesecakes_and_other_Desserts.htm" zT='18/1hZ/9'>Dessert and Cake Recipes</a></li>
263
+ <li><a href="/od/fruitandvegetables/Fruit_and_Vegetable_Recipes.htm" zT='18/1hZ/10'>Fruit and Vegetable Recipes</a></li>
264
+ <li><a href="/od/ricepastaeggscheese/Rice_Recipes_Pasta_Recipes_Cheese_Recipes_Grits_and_Egg_Recipes.htm" zT='18/1hZ/11'>Rice, Pasta, Eggs</a></li>
265
+ <li><a href="/od/breadrecipes/Bread_Recipes_Yeast_Breads_Bread_Machine_Pancakes_Quick_Breads.htm" zT='18/1hZ/12'>Bread Recipes</a></li>
266
+ <li><a href="/od/recipesbycourse/Recipes_by_Type.htm" zT='18/1hZ/13'>Recipes by Type</a></li>
267
+ <li><a href="/od/cookingbasics/Cooking_Basics_Cooking_Instruction_Tips_Measurements_and_More.htm" zT='18/1hZ/14'>Cooking Basics</a></li>
268
+ <li><a href="/od/southernregionalfood/Southern_Recipes_and_Regional_Specialties.htm" zT='18/1hZ/15'>Southern Regional Food</a></li>
269
+ </ul>
270
+ </div>
271
+ </div>
272
+ <script>splitList(gEI('bcl'));</script>
273
+ <script>zau(256,'341px','230px','fp','http://z.about.com/6/ip/284/29.htm?s=southernfood','','');</script>
274
+ <div class="ma">
275
+ <div class="lg"><a href="http://www.about.com/" zT="18/1Yb/Zv"><img src="http://0.tqn.com/f/lg/a154.png" alt="About.com"></a></div>
276
+ <div class="h2"><a href="/" zT="18/1Yc/Zx" title="Southern Food">Southern Food</a></div>
277
+ </div>
278
+ <ol class="ct">
279
+ <li class="h"><a href="http://www.about.com/" zT="18/1Yd/Zz">About.com</a></li>
280
+ <li><a href="http://www.about.com/food/" zT="18/1Yd/Zz">Food</a></li>
281
+ <li><a href="/" zT="18/1Yd/Zz">Southern Food</a></li>
282
+ <li><a href="http://southernfood.about.com/od/fruitandvegetables/" zT="18/1Yd/Zz">Fruit and Vegetable Recipes</a></li>
283
+ <li><a href="http://southernfood.about.com/od/vegetablerecipes/" zT="18/1Yd/Zz">Vegetable Recipes</a></li>
284
+ <li><a href="http://southernfood.about.com/od/collardgreens/" zT="18/1Yd/Zz">Collard Greens</a></li>
285
+ <li>Saut&eacute;ed Kale - Kale With Onion, Hot Peppers, and Red Wine Vinegar</li>
286
+ </ol>
287
+ </div>
288
+ </div>
289
+ <div id="abi" class="hl">
290
+ <div id="lftr">
291
+ <div id="mf">
292
+ <div class="h6">Also from About.com:</div>
293
+ <ul>
294
+ <li class="f"><a href="http://caloriecount.about.com/foods/" zT="18/1]2/c[">Calorie Count - Food &amp; Recipe Database</a></li>
295
+ <li><a href="http://www.about.com/realrecipes/" zT="11/1si">Real Recipes mobile app</a></li>
296
+ </ul>
297
+ </div>
298
+ <ul id="si">
299
+ <li class="f"><a href="http://www.advertiseonabout.com/" zT="18/1YX/Zr" rel="nofollow">Advertise on About.com</a></li>
300
+ <li><a href="http://www.advertiseonabout.com/about-us/" zT="18/1YX/Zr" rel="nofollow">Our Story</a></li>
301
+ <li><a href="http://www.advertiseonabout.com/category/press-releases/" zT="18/1YX/Zr" rel="nofollow">News &amp; Events</a></li>
302
+ <li><a href="http://spiderbites.about.com/sitemap.htm" zT="18/1YX/Zr">SiteMap</a></li>
303
+ <li><a href="http://azlist.about.com/a.htm" zT="18/1]]">All Topics</a></li>
304
+ <li><a href="http://www.about.com/gi/pages/printrequests.html" zT="18/1YX/Zr" rel="nofollow">Reprints</a></li>
305
+ <li><a href="http://www.about.com/gi/pages/hc.htm" zT="18/1YX/Zr" rel="nofollow">Help</a></li>
306
+ </ul>
307
+ <ul id="li">
308
+ <li class="f"><a href="http://beaguide.about.com/" zT="18/1YX/Zr" rel="nofollow">Write for About</a></li>
309
+ <li><a href="http://jobs.about.com/" zT="18/1YX/Zr" rel="nofollow">Careers at About</a></li>
310
+ <li><a href="http://www.about.com/gi/pages/uagree.htm" zT="18/1YX/Zr" rel="nofollow">User Agreement</a></li>
311
+ <li><a href="http://www.about.com/gi/pages/ethics.htm" zT="18/1YX/Zr" rel="nofollow">Ethics Policy</a></li>
312
+ <li><a href="http://www.about.com/gi/pages/patent.htm" zT="18/1YX/Zr" rel="nofollow">Patent Info.</a></li>
313
+ <li><a href="http://www.about.com/gi/pages/mprivacy.htm" zT="18/1YX/Zr" rel="nofollow">Privacy Policy</a></li>
314
+ <li><a href="http://www.about.com/gi/pages/mprivacy.htm#adchoices" zT="18/1YX/Zr" rel="nofollow">Your Ad Choices</a></li>
315
+ </ul>
316
+ </div>
317
+ <div id="di">
318
+ <p>&copy;2013 About.com. All rights reserved.</p>
319
+ </div>
320
+ </div>
321
+ <script>check_modal();zCi();validateForms();splitLists();</script>
322
+ </div>
323
+ <script>if(this.zKW&&gEI('sv'))gEI('sv').value=zE(zE(zKW,1),1).replace(new RegExp('\\+','g'),' ');
324
+ zPxA[zPxC]=new Image();zPxA[zPxC++].src="http://b.scorecardresearch.com/p?c1=2&c2=6036459&c7=http%3a%2f%2fsouthernfood%2eabout%2ecom%2fod%2fcollardgreens%2fr%2fKale%2dSaute%2dRecipe%2ehtm&c8=%20Saut%26eacute%3bed%26%23160%3bKale&c9=&cv=2.0&cj=1";adclose()
325
+ </script>
326
+ <noscript><img src="http://b.scorecardresearch.com/p?c1=2&c2=6036459&c7=http%3a%2f%2fsouthernfood%2eabout%2ecom%2fod%2fcollardgreens%2fr%2fKale%2dSaute%2dRecipe%2ehtm&c8=%20Saut%26eacute%3bed%26%23160%3bKale&c9=&cv=2.0&cj=1" class="hide"/></noscript>
327
+ </body>
328
+ </html>
@@ -52,6 +52,7 @@ describe Hangry do
52
52
  its(:author) { should == "John Smith" }
53
53
  its(:cook_time) { should == 60 }
54
54
  its(:description) { should == 'This classic banana bread recipe comes from my mom -- the walnuts add a nice texture and flavor to the banana bread.' }
55
+ its(:image_url) { should == "bananabread.jpg" }
55
56
  its(:ingredients) { should == ["3 or 4 ripe bananas, smashed", "1 egg", "3/4 cup of sugar"] }
56
57
  its(:instructions) { should == "Preheat the oven to 350 degrees. Mix in the ingredients in a bowl. Add the flour last. Pour the mixture into a loaf pan and bake for one hour." }
57
58
 
@@ -4,13 +4,14 @@ require 'hangry'
4
4
  describe Hangry do
5
5
 
6
6
  context "bbc.co.uk recipe" do
7
- let(:html) { File.read("spec/fixtures/bbc.co.uk.html") }
7
+ let(:html) { File.read("spec/fixtures/hrecipe/bbc.co.uk.html") }
8
8
  subject { Hangry.parse(html) }
9
9
 
10
10
  its(:author) { should == "Antony Worrall Thompson" }
11
11
  its(:canonical_url) { should == nil }
12
12
  its(:cook_time) { should == 30 }
13
13
  its(:description) { should == "An authentic seafood and chicken paella that boasts some of Spain’s finest ingredients, from calasparra rice to chorizo." }
14
+ its(:image_url) { should == 'http://ichef.bbci.co.uk/food/ic/food_16x9_448/recipes/paella_7100_16x9.jpg' }
14
15
  its(:ingredients) {
15
16
  should == [
16
17
  "170g/6oz chorizo , cut into thin slices",
@@ -4,7 +4,7 @@ require 'hangry'
4
4
  describe Hangry do
5
5
 
6
6
  context "bigoven.com recipe" do
7
- subject { Hangry.parse(File.read("spec/fixtures/bigoven.html")) }
7
+ subject { Hangry.parse(File.read("spec/fixtures/hrecipe/bigoven.html")) }
8
8
 
9
9
  its(:author) do
10
10
  # BigOven puts the author element outside of the hRecipe element...
@@ -13,6 +13,7 @@ describe Hangry do
13
13
  its(:canonical_url) { should == "http://www.bigoven.com/recipe/178920/steves-fish-tacos" }
14
14
  its(:cook_time) { should == nil }
15
15
  its(:description) { should == "I had never tried fish tacos until my son, fresh out of boot camp, asked me to make them. I found a basic recipe, then adapted it from there, and now it's one of my favorite things to eat!" }
16
+ its(:image_url) { should == 'http://mda.bigoven.com/pics/rs/256/steves-fish-tacos-2.jpg' }
16
17
  its(:ingredients) {
17
18
  should == [
18
19
  "1 package of tortillas ; small", "0.5 cup sour cream", "0.25 cup salsa ; favorite", "1 Salt", "1 Pepper",
@@ -0,0 +1,63 @@
1
+ # encoding: UTF-8
2
+ require 'hangry'
3
+
4
+ describe Hangry do
5
+
6
+ context "campbellskitchen.com recipe" do
7
+ let(:html) { File.read("spec/fixtures/hrecipe/campbellskitchen.com.html") }
8
+ subject { Hangry.parse(html) }
9
+
10
+ its(:author) { should == nil }
11
+ its(:canonical_url) { should == "http://www.campbellskitchen.com/recipes/recipedetails?recipeid=60821" }
12
+ its(:cook_time) { should == 10 }
13
+ its(:description) { should == "The beans are white, the greens are spinach...and the dish is delicious (and ready in 30 minutes)!" }
14
+ its(:image_url) { should == 'http://www.cscassets.com/recipes/large_cknew/large_60821.jpg' }
15
+ its(:ingredients) {
16
+ should == [
17
+ "1 tablespoon olive oil",
18
+ "1 medium onion , minced (about 1 cup)",
19
+ "1/4 teaspoon crushed red pepper",
20
+ "1 packet Swanson® Flavor Boost™ Concentrated Vegetable Broth",
21
+ "1 package (about 6 ounces) fresh baby spinach (about 8 cups)",
22
+ "1 can (about 15 ounces) white kidney beans (cannellini) , rinsed and drained",
23
+ "1/4 cup grated Parmesan cheese",
24
+ "1 cup ditalini pasta , cooked and drained (about 2 cups)"
25
+ ]
26
+ }
27
+ its(:name) { should == "Savory White Beans & Spinach" }
28
+ its(:nutrition) do
29
+ should == {
30
+ calories: nil,
31
+ cholesterol: nil,
32
+ fiber: nil,
33
+ protein: nil,
34
+ saturated_fat: nil,
35
+ sodium: nil,
36
+ sugar: nil,
37
+ total_carbohydrates: nil,
38
+ total_fat: nil,
39
+ trans_fat: nil,
40
+ unsaturated_fat: nil
41
+ }
42
+ end
43
+
44
+ its(:instructions) {
45
+ instructions = <<-eos
46
+ 1
47
+ Heat the oil in a 12-inch skillet over medium heat.  Add the onion and cook until tender, stirring occasionally.  Stir in the red pepper, concentrated broth and spinach.  Cover and cook until the spinach is wilted.
48
+ 2
49
+ Add the beans, cheese and pasta and toss to coat.
50
+ eos
51
+ should == instructions.strip
52
+ }
53
+
54
+ its(:prep_time) { should == 20 }
55
+ its(:published_date) { should == nil }
56
+ its(:total_time) { should == 30 }
57
+ its(:yield) { should == "4" }
58
+
59
+ end
60
+
61
+ end
62
+
63
+