hangry 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hangry.rb +3 -1
- data/lib/hangry/data_vocabulary_recipe_parser.rb +3 -3
- data/lib/hangry/hrecipe_parser.rb +23 -7
- data/lib/hangry/parser_class_selecter.rb +3 -1
- data/lib/hangry/parsers/non_standard/all_recipes_parser.rb +1 -2
- data/lib/hangry/parsers/non_standard/eating_well_parser.rb +2 -6
- data/lib/hangry/parsers/non_standard/taste_of_home_parser.rb +22 -0
- data/lib/hangry/recipe_attribute_cleaner.rb +56 -0
- data/lib/hangry/recipe_parser.rb +4 -17
- data/lib/hangry/schema_org_recipe_parser.rb +8 -11
- data/lib/hangry/version.rb +1 -1
- data/spec/fixtures/bbc.co.uk.html +713 -0
- data/spec/fixtures/chow.com.html +1016 -0
- data/spec/fixtures/cooking.com.html +3655 -0
- data/spec/fixtures/cooks.com.html +623 -0
- data/spec/fixtures/copykat.com.html +782 -0
- data/spec/fixtures/food.com.html +2334 -0
- data/spec/fixtures/foodandwine.com.html +1667 -0
- data/spec/fixtures/heart.org.html +1188 -0
- data/spec/fixtures/pillsbury.com.html +1657 -0
- data/spec/fixtures/saveur.com.html +1527 -0
- data/spec/fixtures/tarladalal.com.html +865 -0
- data/spec/fixtures/taste.com.au.html +2034 -0
- data/spec/fixtures/tasteofhome.com.html +2527 -0
- data/spec/real_examples/bbc_co_uk_spec.rb +75 -0
- data/spec/real_examples/big_oven_spec.rb +15 -1
- data/spec/real_examples/chow_com_spec.rb +78 -0
- data/spec/real_examples/cooking_com_spec.rb +60 -0
- data/spec/real_examples/cooks_com_spec.rb +67 -0
- data/spec/real_examples/copykat_spec.rb +55 -0
- data/spec/real_examples/food_and_wine_spec.rb +58 -0
- data/spec/real_examples/food_com_spec.rb +108 -0
- data/spec/real_examples/heart_org_spec.rb +46 -0
- data/spec/real_examples/pillsbury_spec.rb +59 -0
- data/spec/real_examples/saveur_com_spec.rb +41 -0
- data/spec/real_examples/tarladalal_com_spec.rb +65 -0
- data/spec/real_examples/taste_com_au_spec.rb +41 -0
- data/spec/real_examples/taste_of_home_spec.rb +70 -0
- metadata +67 -13
data/lib/hangry.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "hangry/version"
|
2
2
|
require 'hangry/parser_class_selecter'
|
3
|
+
require 'hangry/recipe_attribute_cleaner'
|
3
4
|
require 'active_support/core_ext/object/blank'
|
4
5
|
require 'date'
|
5
6
|
require 'iso8601'
|
@@ -39,7 +40,8 @@ module Hangry
|
|
39
40
|
|
40
41
|
def self.parse(html)
|
41
42
|
parser_class = ParserClassSelecter.new(html).parser_class
|
42
|
-
parser_class.new(html).parse
|
43
|
+
recipe = parser_class.new(html).parse
|
44
|
+
RecipeAttributeCleaner.new(recipe).clean
|
43
45
|
end
|
44
46
|
|
45
47
|
end
|
@@ -16,11 +16,11 @@ module Hangry
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def parse_description
|
19
|
-
|
19
|
+
node_with_itemprop(:summary).content
|
20
20
|
end
|
21
21
|
|
22
22
|
def parse_instructions
|
23
|
-
|
23
|
+
node_with_itemprop(:instructions).content
|
24
24
|
end
|
25
25
|
|
26
26
|
def parse_published_date
|
@@ -29,7 +29,7 @@ module Hangry
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def parse_yield
|
32
|
-
|
32
|
+
node_with_itemprop(:yield).content
|
33
33
|
end
|
34
34
|
|
35
35
|
end
|
@@ -20,7 +20,7 @@ module Hangry
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def parse_author
|
23
|
-
|
23
|
+
node_with_class(:author).content
|
24
24
|
end
|
25
25
|
|
26
26
|
def parse_cook_time
|
@@ -28,7 +28,7 @@ module Hangry
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def parse_description
|
31
|
-
|
31
|
+
node_with_class(:summary).content
|
32
32
|
end
|
33
33
|
|
34
34
|
def parse_ingredients
|
@@ -38,20 +38,33 @@ module Hangry
|
|
38
38
|
# This is to support BigOven's janky usage of spans with margin-lefts...
|
39
39
|
ingredient_node.children.map { |c| c.content }.join(' ')
|
40
40
|
}.map { |ingredient|
|
41
|
-
|
41
|
+
ingredient
|
42
42
|
}.reject(&:blank?)
|
43
43
|
end
|
44
44
|
|
45
45
|
def parse_instructions
|
46
|
-
|
46
|
+
nodes_with_class(:instructions).map(&:content).join("\n")
|
47
47
|
end
|
48
48
|
|
49
49
|
def parse_name
|
50
|
-
|
50
|
+
node_with_class(:fn).content
|
51
51
|
end
|
52
52
|
|
53
53
|
def parse_nutrition
|
54
54
|
#TODO
|
55
|
+
{
|
56
|
+
calories: nil,
|
57
|
+
cholesterol: nil,
|
58
|
+
fiber: nil,
|
59
|
+
protein: nil,
|
60
|
+
saturated_fat: nil,
|
61
|
+
sodium: nil,
|
62
|
+
sugar: nil,
|
63
|
+
total_carbohydrates: nil,
|
64
|
+
total_fat: nil,
|
65
|
+
trans_fat: nil,
|
66
|
+
unsaturated_fat: nil
|
67
|
+
}
|
55
68
|
end
|
56
69
|
|
57
70
|
def parse_prep_time
|
@@ -63,12 +76,15 @@ module Hangry
|
|
63
76
|
end
|
64
77
|
|
65
78
|
def parse_total_time
|
66
|
-
node =
|
79
|
+
node = maybe(
|
80
|
+
value(node_with_class(:duration)) ||
|
81
|
+
value(node_with_class(:totalTime))
|
82
|
+
)
|
67
83
|
parse_duration node.css('.value-title').first['title']
|
68
84
|
end
|
69
85
|
|
70
86
|
def parse_yield
|
71
|
-
|
87
|
+
node_with_class(:yield).content
|
72
88
|
end
|
73
89
|
|
74
90
|
end
|
@@ -5,6 +5,7 @@ require 'hangry/schema_org_recipe_parser'
|
|
5
5
|
require 'hangry/data_vocabulary_recipe_parser'
|
6
6
|
require 'hangry/parsers/non_standard/all_recipes_parser'
|
7
7
|
require 'hangry/parsers/non_standard/eating_well_parser'
|
8
|
+
require 'hangry/parsers/non_standard/taste_of_home_parser'
|
8
9
|
|
9
10
|
module Hangry
|
10
11
|
class ParserClassSelecter
|
@@ -16,7 +17,8 @@ module Hangry
|
|
16
17
|
# Prefer the more specific parsers
|
17
18
|
parser_classes = [
|
18
19
|
Parsers::NonStandard::AllRecipesParser,
|
19
|
-
Parsers::NonStandard::EatingWellParser
|
20
|
+
Parsers::NonStandard::EatingWellParser,
|
21
|
+
Parsers::NonStandard::TasteOfHomeParser
|
20
22
|
]
|
21
23
|
parser_classes += [SchemaOrgRecipeParser, HRecipeParser, DataVocabularyRecipeParser]
|
22
24
|
parser_classes << DefaultRecipeParser
|
@@ -12,8 +12,7 @@ module Hangry
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def parse_instructions
|
15
|
-
|
16
|
-
clean_string content, preserve_newlines: true
|
15
|
+
nodes_with_itemprop(:recipeinstructions).map(&:content).join("\n")
|
17
16
|
end
|
18
17
|
|
19
18
|
def parse_nutrition
|
@@ -33,10 +32,7 @@ module Hangry
|
|
33
32
|
end
|
34
33
|
|
35
34
|
def parse_yield
|
36
|
-
|
37
|
-
value(node_with_itemprop(:recipeyield).content) ||
|
38
|
-
NullObject.new
|
39
|
-
)
|
35
|
+
value(node_with_itemprop(:recipeyield).content) || NullObject.new
|
40
36
|
end
|
41
37
|
|
42
38
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Hangry
|
2
|
+
module Parsers
|
3
|
+
module NonStandard
|
4
|
+
class TasteOfHomeParser < HRecipeParser
|
5
|
+
|
6
|
+
def self.can_parse?(html)
|
7
|
+
canonical_url_matches_domain?(html, 'tasteofhome.com')
|
8
|
+
end
|
9
|
+
|
10
|
+
def nodes_with_class(klass)
|
11
|
+
super.reject { |node|
|
12
|
+
# Taste of Home has nested elements with the 'ingredient' class.
|
13
|
+
# So reject all nodes with a child that has the same class.
|
14
|
+
node.css(".#{klass}").any?
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Hangry
|
2
|
+
class RecipeAttributeCleaner
|
3
|
+
|
4
|
+
MULTILINE_ATTRIBUTES = [:instructions]
|
5
|
+
|
6
|
+
attr_reader :recipe
|
7
|
+
|
8
|
+
def initialize(recipe)
|
9
|
+
@recipe = recipe
|
10
|
+
end
|
11
|
+
|
12
|
+
def clean
|
13
|
+
RECIPE_ATTRIBUTES.each do |attribute|
|
14
|
+
recipe.public_send("#{attribute}=", clean_attribute(recipe, attribute))
|
15
|
+
end
|
16
|
+
recipe
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def clean_attribute(recipe, attribute)
|
22
|
+
value = recipe.public_send(attribute)
|
23
|
+
clean_value(value, preserve_newlines: MULTILINE_ATTRIBUTES.include?(attribute))
|
24
|
+
end
|
25
|
+
|
26
|
+
def clean_value(value, options={})
|
27
|
+
case value
|
28
|
+
when String
|
29
|
+
clean_string(value, options)
|
30
|
+
when Array
|
31
|
+
value.map { |string| clean_string(string, options) }
|
32
|
+
when Hash
|
33
|
+
value.each do |key, string|
|
34
|
+
next unless string
|
35
|
+
recipe.nutrition[key] = clean_string(string, options)
|
36
|
+
end
|
37
|
+
else
|
38
|
+
value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def clean_string(string, options={})
|
43
|
+
preserve_newlines = options.fetch(:preserve_newlines, false)
|
44
|
+
|
45
|
+
string.strip! # remove leading and trailing spaces
|
46
|
+
if preserve_newlines
|
47
|
+
string.gsub!(/\s*\n\s*/, "\n") # replace any whitespace group with a newline with a single newline
|
48
|
+
string.squeeze!(' ') # consolidate duplicate spaces into a single space
|
49
|
+
else
|
50
|
+
string.gsub!(/\s+/, ' ') # replace all consecutive whitespace with a single space
|
51
|
+
end
|
52
|
+
string
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/lib/hangry/recipe_parser.rb
CHANGED
@@ -33,13 +33,6 @@ module Hangry
|
|
33
33
|
CanonicalUrlParser.new(html).canonical_domain == domain
|
34
34
|
end
|
35
35
|
|
36
|
-
def clean_nutrition(recipe)
|
37
|
-
recipe.nutrition.each do |key, value|
|
38
|
-
next unless value
|
39
|
-
recipe.nutrition[key] = clean_string value
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
36
|
private
|
44
37
|
|
45
38
|
class NullObject
|
@@ -63,17 +56,11 @@ module Hangry
|
|
63
56
|
end
|
64
57
|
end
|
65
58
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
if preserve_newlines
|
71
|
-
string.gsub!(/\s*\n\s*/, "\n") # replace any whitespace group with a newline with a single newline
|
72
|
-
string.squeeze!(' ') # consolidate duplicate spaces into a single space
|
73
|
-
else
|
74
|
-
string.gsub!(/\s+/, ' ') # replace all consecutive whitespace with a single space
|
59
|
+
def maybe(value)
|
60
|
+
case value
|
61
|
+
when nil then NullObject.new
|
62
|
+
else value
|
75
63
|
end
|
76
|
-
string
|
77
64
|
end
|
78
65
|
|
79
66
|
def initialize_nutrition
|
@@ -37,26 +37,25 @@ module Hangry
|
|
37
37
|
else
|
38
38
|
author_node.content
|
39
39
|
end
|
40
|
-
|
40
|
+
author
|
41
41
|
end
|
42
42
|
def parse_cook_time
|
43
43
|
parse_time(:cookTime)
|
44
44
|
end
|
45
45
|
def parse_description
|
46
|
-
|
46
|
+
node_with_itemprop(:description).content
|
47
47
|
end
|
48
48
|
def parse_ingredients
|
49
49
|
nodes_with_itemprop(self.class.ingredient_itemprop).map(&:content).map { |ingredient|
|
50
50
|
# remove newlines and excess whitespace from ingredients
|
51
|
-
|
51
|
+
ingredient
|
52
52
|
}.reject(&:blank?)
|
53
53
|
end
|
54
54
|
def parse_instructions
|
55
|
-
|
56
|
-
clean_string content, preserve_newlines: true
|
55
|
+
nodes_with_itemprop(:recipeInstructions).map(&:content).join("\n")
|
57
56
|
end
|
58
57
|
def parse_name
|
59
|
-
|
58
|
+
node_with_itemprop(:name).content
|
60
59
|
end
|
61
60
|
def parse_nutrition
|
62
61
|
recipe.nutrition.tap do |nutrition|
|
@@ -93,11 +92,9 @@ module Hangry
|
|
93
92
|
parse_time(:totalTime)
|
94
93
|
end
|
95
94
|
def parse_yield
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
NullObject.new
|
100
|
-
)
|
95
|
+
value(node_with_itemprop(:recipeYield)['content']) ||
|
96
|
+
value(node_with_itemprop(:recipeYield).content) ||
|
97
|
+
NullObject.new
|
101
98
|
end
|
102
99
|
|
103
100
|
end
|
data/lib/hangry/version.rb
CHANGED
@@ -0,0 +1,713 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<meta name="description" content="An authentic seafood and chicken paella that boasts some of Spain’s finest ingredients, from calasparra rice to chorizo." />
|
6
|
+
<meta name="keywords" content="bbc, food, recipes, Paella" />
|
7
|
+
<title>Paella : BBC - Food - Recipes</title>
|
8
|
+
<meta http-equiv="X-UA-Compatible" content="IE=8" />
|
9
|
+
<link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
|
10
|
+
<link rel="index" href="http://www.bbc.co.uk/a-z/" title="A to Z" />
|
11
|
+
<link rel="help" href="http://www.bbc.co.uk/help/" title="BBC Help" />
|
12
|
+
<link rel="copyright" href="http://www.bbc.co.uk/terms/" title="Terms of Use" />
|
13
|
+
<link rel="icon" href="http://www.bbc.co.uk/favicon.ico" type="image/x-icon" />
|
14
|
+
<meta name="viewport" content="width = 996" />
|
15
|
+
<link rel="stylesheet" type="text/css" href="http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5/style/main.css" />
|
16
|
+
<script type="text/javascript">/*<![CDATA[*/ if (typeof bbccookies_flag === 'undefined') { bbccookies_flag = 'ON'; } showCTA_flag = false; cta_enabled = (showCTA_flag && (bbccookies_flag === 'ON') ); (function(){var e="ckns_policy",m="Thu, 01 Jan 1970 00:00:00 GMT",k={ads:true,personalisation:true,performance:true,necessary:true};function f(p){if(f.cache[p]){return f.cache[p]}var o=p.split("/"),q=[""];do{q.unshift((o.join("/")||"/"));o.pop()}while(q[0]!=="/");f.cache[p]=q;return q}f.cache={};function a(p){if(a.cache[p]){return a.cache[p]}var q=p.split("."),o=[];while(q.length&&"|co.uk|com|".indexOf("|"+q.join(".")+"|")===-1){if(q.length){o.push(q.join("."))}q.shift()}f.cache[p]=o;return o}a.cache={};function i(o,t,p){var z=[""].concat(a(window.location.hostname)),w=f(window.location.pathname),y="",r,x;for(var s=0,v=z.length;s<v;s++){r=z[s];for(var q=0,u=w.length;q<u;q++){x=w[q];y=o+"="+t+";"+(r?"domain="+r+";":"")+(x?"path="+x+";":"")+(p?"expires="+p+";":"");bbccookies.set(y,true)}}}window.bbccookies={_setEverywhere:i,cookiesEnabled:function(){var o="ckns_testcookie"+Math.floor(Math.random()*100000);this.set(o+"=1");if(this.get().indexOf(o)>-1){g(o);return true}return false},set:function(o){return document.cookie=o},get:function(){return document.cookie},_setPolicy:function(o){return h.apply(this,arguments)},readPolicy:function(o){return b.apply(this,arguments)},_deletePolicy:function(){i(e,"",m)},isAllowed:function(){return true},_isConfirmed:function(){return c()!==null},_acceptsAll:function(){var o=b();return o&&!(j(o).indexOf("0")>-1)},_getCookieName:function(){return d.apply(this,arguments)},_showPrompt:function(){return(!this._isConfirmed()&&window.cta_enabled&&this.cookiesEnabled()&&!window.bbccookies_disable)}};bbccookies._getPolicy=bbccookies.readPolicy;function d(p){var o=(""+p).match(/^([^=]+)(?==)/);return(o&&o.length?o[0]:"")}function j(o){return""+(o.ads?1:0)+(o.personalisation?1:0)+(o.performance?1:0)}function h(r){if(typeof r==="undefined"){r=k}if(typeof arguments[0]==="string"){var o=arguments[0],q=arguments[1];if(o==="necessary"){q=true}r=b();r[o]=q}else{if(typeof arguments[0]==="object"){r.necessary=true}}var p=new Date();p.setYear(p.getFullYear()+1);p=p.toUTCString();bbccookies.set(e+"="+j(r)+";domain=bbc.co.uk;path=/;expires="+p+";");bbccookies.set(e+"="+j(r)+";domain=bbc.com;path=/;expires="+p+";");return r}function l(o){if(o===null){return null}var p=o.split("");return{ads:!!+p[0],personalisation:!!+p[1],performance:!!+p[2],necessary:true}}function c(){var o=new RegExp("(?:^|; ?)"+e+"=(\\d\\d\\d)($|;)"),p=document.cookie.match(o);if(!p){return null}return p[1]}function b(o){var p=l(c());if(!p){p=k}if(o){return p[o]}else{return p}}function g(o){return document.cookie=o+"=;expires="+m+";"}function n(){var o='<script type="text/javascript" src="http://static.bbci.co.uk/frameworks/bbccookies/0.5.9/script/bbccookies.js"><\/script>';if(window.bbccookies_flag==="ON"&&!bbccookies._acceptsAll()&&!window.bbccookies_disable){document.write(o)}}n()})(); /*]]>*/</script> <script type="text/javascript"> if (! window.gloader) { window.gloader = [ "glow", {map: "http://node1.bbcimg.co.uk/glow/glow/map.1.7.7.js"}]; } </script> <script type="text/javascript" src="http://node1.bbcimg.co.uk/glow/gloader.0.1.6.js"></script> <script type="text/javascript" src="http://static.bbci.co.uk/frameworks/requirejs/0.12.1/sharedmodules/require.js"></script> <script type="text/javascript"> bbcRequireMap = {"jquery-1":"http://static.bbci.co.uk/frameworks/jquery/0.2.1/sharedmodules/jquery-1.7.2", "jquery-1.4":"http://static.bbci.co.uk/frameworks/jquery/0.2.1/sharedmodules/jquery-1.4", "swfobject-2":"http://static.bbci.co.uk/frameworks/swfobject/0.1.10/sharedmodules/swfobject-2", "demi-1":"http://static.bbci.co.uk/frameworks/demi/0.9.8/sharedmodules/demi-1", "gelui-1":"http://static.bbci.co.uk/frameworks/gelui/0.9.9/sharedmodules/gelui-1", "cssp!gelui-1/overlay":"http://static.bbci.co.uk/frameworks/gelui/0.9.9/sharedmodules/gelui-1/overlay.css", "istats-1":"http://static.bbci.co.uk/frameworks/istats/0.16.1/modules/istats-1", "relay-1":"http://static.bbci.co.uk/frameworks/relay/0.2.4/sharedmodules/relay-1", "clock-1":"http://static.bbci.co.uk/frameworks/clock/0.1.9/sharedmodules/clock-1", "canvas-clock-1":"http://static.bbci.co.uk/frameworks/clock/0.1.9/sharedmodules/canvas-clock-1", "cssp!clock-1":"http://static.bbci.co.uk/frameworks/clock/0.1.9/sharedmodules/clock-1.css", "jssignals-1":"http://static.bbci.co.uk/frameworks/jssignals/0.3.6/modules/jssignals-1", "jcarousel-1":"http://static.bbci.co.uk/frameworks/jcarousel/0.1.10/modules/jcarousel-1"}; require({ baseUrl: 'http://static.bbci.co.uk/', paths: bbcRequireMap, waitSeconds: 30 }); </script> <script type="text/javascript" src="http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5/script/barlesque.js"></script>
|
17
|
+
<!--[if IE 6]>
|
18
|
+
<script type="text/javascript">
|
19
|
+
try {
|
20
|
+
document.execCommand("BackgroundImageCache",false,true);
|
21
|
+
} catch(e) {}
|
22
|
+
</script>
|
23
|
+
<style type="text/css">
|
24
|
+
/* Use filters for IE6 */
|
25
|
+
#blq-blocks a {
|
26
|
+
background-image: none;
|
27
|
+
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5//img/blq-blocks_white_alpha.png', sizingMethod='image');
|
28
|
+
}
|
29
|
+
.blq-masthead-focus #blq-blocks a,
|
30
|
+
.blq-mast-text-dark #blq-blocks a {
|
31
|
+
background-image: none;
|
32
|
+
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5//img/blq-blocks_grey_alpha.png', sizingMethod='image');
|
33
|
+
}
|
34
|
+
#blq-nav-search button span {
|
35
|
+
background-image: none;
|
36
|
+
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5//img/blq-search_grey_alpha.png', sizingMethod='image');
|
37
|
+
}
|
38
|
+
#blq-nav-search button img {
|
39
|
+
position: absolute;
|
40
|
+
left: -999em;
|
41
|
+
}
|
42
|
+
</style>
|
43
|
+
<![endif]-->
|
44
|
+
<!--[if (IE 7])|(IE 8)>
|
45
|
+
<style type="text/css">
|
46
|
+
.blq-clearfix {
|
47
|
+
display: inline-block;
|
48
|
+
}
|
49
|
+
</style>
|
50
|
+
<![endif]-->
|
51
|
+
<script type="text/javascript">
|
52
|
+
blq.setEnvironment('live'); if (! /bbc\.co\.uk$/i.test(window.location.hostname) ) { document.documentElement.className += ' blq-not-bbc-co-uk'; } </script>
|
53
|
+
<link type="text/css" rel="stylesheet" media="screen" href="http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/style/id-gvl-3-5.css" /> <!--[if IE]>
|
54
|
+
<style type="text/css" media="screen"> body .panel-identity .hd h2{ background-image: url(http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/logo-bbcid.gif); /* Even 8bit alpha transparent PNGs are no good here */ } .panel-id-hint .panel-bd, .panel-id-hint .panel-hd, .panel-id-hint .panel-ft{ background-image: url(http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/bg-hint.gif); } </style>
|
55
|
+
<![endif]--> <!--[if lte IE 6]>
|
56
|
+
<style type="text/css" media="screen"> /* Secure Glow fixes */ div.panel-identity .infoPanel-pointerT { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.bbc.co.uk/glow/1.0.2/widgets/images/darkpanel/at.png', sizingMethod='crop'); } div.panel-identity .infoPanel-pointerR { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.bbc.co.uk/glow/1.0.2/widgets/images/darkpanel/ar.png', sizingMethod='crop'); } div.panel-identity .infoPanel-pointerB { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.bbc.co.uk/glow/1.0.2/widgets/images/darkpanel/ab.png', sizingMethod='crop'); } div.panel-identity .infoPanel-pointerL { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.bbc.co.uk/glow/1.0.2/widgets/images/darkpanel/al.png', sizingMethod='crop'); } /* min-height fixes */ body .panel-identity .hd h2{ height: 26px; } #blq-main a.id-cta-button{ height: 22px; } #blq-main a.id-cta-button span{ height: 12px; } /* other */ div.panel-identity .c{ zoom: 1; } /* Transparent PNG replacements */ .blq-toolbar-transp #id-status .idUsername{ background-image: url(http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/palettes/transp/status-id-logo-noprofile.gif); } .blq-toolbar-transp #id-status .idSignin, .blq-toolbar-transp #id-status .idUsernameWithProfile{ background-image: url(http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/palettes/dark/status-id-logo.gif); } </style>
|
57
|
+
<![endif]--> <!--[if lte IE 7]>
|
58
|
+
<style type="text/css" media="screen"> .panel-identity form .text, .panel-identity form .password { zoom: 1; } .panel-identity form .text p { margin: 0; } .panel-identity form .password p { margin: 0 0 18px 0; } .panel-identity p.id-registerlink a.id-register { zoom: 1; padding-top: 3px; padding-bottom: 3px; top: 3px; } </style>
|
59
|
+
<![endif]--> <!--[if lte IE 8]>
|
60
|
+
<style type="text/css" media="screen"> /* Custom PNG corners for lightbox */ div.panel-identity .pc .tr { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/ctr.png', sizingMethod='crop'); } div.panel-identity .pc .tl { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/ctl.png', sizingMethod='crop'); } div.panel-identity .pc .bl { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/cbl.png', sizingMethod='crop'); } div.panel-identity .pc .br { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/img/panel/cbr.png', sizingMethod='crop'); } </style>
|
61
|
+
<![endif]--> <script type="text/javascript"> if(typeof identity == 'undefined'){ identity = {}; } idProperties = { 'env': 'live', 'staticServer': 'http://', 'dynamicServer': 'http://id.bbc.co.uk', 'secureServer': 'https://id.bbc.co.uk', 'assetVersion': '3.27.2', 'assetPath': 'http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/' }; </script> <script type="text/javascript" src="http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/script/id-core.js"></script> <script type="text/javascript" src="http://static.bbci.co.uk/modules/identity/statusbar/3.27.2/script/id.js"></script>
|
62
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/frameworks/pulsesurvey/0.9.3/script/pulse.js"></script> <script type="text/javascript" src="http://www.bbc.co.uk/survey/pulse/conf.js"></script> <script type="text/javascript"> pulse.translations.intro = "We are always looking to improve the site and your opinions count."; pulse.translations.question = "Do you have a few minutes to tell us what you think about this site?"; pulse.translations.accept = "Yes"; pulse.translations.reject = "No"; </script>
|
63
|
+
<link rel="stylesheet" href="http://static.bbci.co.uk/frameworks/pulsesurvey/0.9.3/style/pulse.css" type="text/css"/>
|
64
|
+
<!--[if gte IE 6]>
|
65
|
+
<style type="text/css"> .pulse-pop li{display:inline;width:40px} </style>
|
66
|
+
<![endif]--> <!--[if IE 6]>
|
67
|
+
<style type="text/css"> .pulse-pop li{display:inline;width:40px} .pulse-pop #pulse-q{background:url(http://static.bbci.co.uk/frameworks/pulsesurvey/0.9.3/img/pulse_bg.gif) no-repeat} .pulse-pop #pulse-a{background:url(http://static.bbci.co.uk/frameworks/pulsesurvey/0.9.3/img/pulse_bg.gif) bottom no-repeat;} </style>
|
68
|
+
<![endif]--> <!--[if IE 7]>
|
69
|
+
<style type="text/css"> .pulse-pop #pulse-a{zoom:1} </style>
|
70
|
+
<![endif]--> <script type="text/javascript"> if (! window.gloader) { window.gloader = [ "glow", {map: "http://node1.bbcimg.co.uk/glow/glow/map.1.7.7.js"}]; } </script>
|
71
|
+
<!-- BBCDOTCOM template:server-side journalismVariant: false ipIsAdvertiseCombined: false adsEnabled: true showDotcom: true flagpole: ON -->
|
72
|
+
<meta name="application-name" content="BBC"/>
|
73
|
+
<meta name="msapplication-tooltip" content="Explore the BBC, for latest news, sport and weather, TV & radio schedules and highlights, with nature, food, comedy, children's programmes and much more"/>
|
74
|
+
<meta name="msapplication-starturl" content="http://www.bbc.com/?ocid=global-food-pinned-ie9"/>
|
75
|
+
<meta name="msapplication-window" content="width=1024;height=768"/>
|
76
|
+
<meta name="msapplication-task" content="name=BBC Home;action-uri=http://www.bbc.com/?ocid=global-homepage-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
77
|
+
<meta name="msapplication-task" content="name=BBC News;action-uri=http://www.bbc.com/news/?ocid=global-news-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
78
|
+
<meta name="msapplication-task" content="name=BBC Sport;action-uri=http://www.bbc.com/sport/0/?ocid=global-sport-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
79
|
+
<meta name="msapplication-task" content="name=BBC Future;action-uri=http://www.bbc.com/future?ocid=global-future-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
80
|
+
<meta name="msapplication-task" content="name=BBC Travel;action-uri=http://www.bbc.com/travel?ocid=global-travel-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
81
|
+
<meta name="msapplication-task" content="name=BBC Weather;action-uri=http://www.bbc.com/weather/?ocid=global-weather-pinned-ie9;icon-uri=http://static.bbci.co.uk/bbcdotcom/0.3.175/img/favicon_16.ico" />
|
82
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/bbcdotcom/0.3.175/script/includes/object.js"></script>
|
83
|
+
<link href="http://static.bbci.co.uk/food/1.34.0/css/main.css" media="screen" rel="stylesheet" type="text/css" />
|
84
|
+
<link href="http://static.bbci.co.uk/food/1.34.0/css/recipes/recipes-show.css" media="screen" rel="stylesheet" type="text/css" />
|
85
|
+
<link href="http://static.bbci.co.uk/food/1.34.0/css/widgets/quick-recipe-finder.css" media="screen" rel="stylesheet" type="text/css" />
|
86
|
+
<link href="http://static.bbci.co.uk/food/1.34.0/css/widgets/cps-promo-module.css" media="screen" rel="stylesheet" type="text/css" />
|
87
|
+
<link href="http://static.bbci.co.uk/food/1.34.0/css/print.css" media="print" rel="stylesheet" type="text/css" />
|
88
|
+
<style type="text/css" media="screen">
|
89
|
+
<!--
|
90
|
+
body{
|
91
|
+
background-image:url('http://static.bbci.co.uk/food/1.34.0/css/seasons/spring/f/bgs/body.png');
|
92
|
+
}
|
93
|
+
#heading span{
|
94
|
+
background-image:url('http://static.bbci.co.uk/food/1.34.0/css/seasons/spring/f/headers/food.jpg');
|
95
|
+
}
|
96
|
+
#banner-image{
|
97
|
+
background-image:url('http://static.bbci.co.uk/food/1.34.0/css/seasons/spring/f/banners/banner_1.jpg');
|
98
|
+
}
|
99
|
+
.campaigns-get-baking #sub-heading span{
|
100
|
+
background-image:url('');
|
101
|
+
}
|
102
|
+
#campaign-link.campaign span{
|
103
|
+
background-image:url('');
|
104
|
+
}
|
105
|
+
.campaigns-get-baking .get-baking span{
|
106
|
+
background-image:url('');
|
107
|
+
}
|
108
|
+
.accordion-header-open{
|
109
|
+
background-image:url('http://static.bbci.co.uk/food/1.34.0/css/seasons/spring/f/bgs/resource_list_open.png');
|
110
|
+
}
|
111
|
+
.accordion-header-open-hover{
|
112
|
+
background-image:url('http://static.bbci.co.uk/food/1.34.0/css/seasons/spring/f/bgs/resource_list_open_hover.png');
|
113
|
+
}
|
114
|
+
|
115
|
+
-->
|
116
|
+
</style>
|
117
|
+
</head>
|
118
|
+
<body id="paella_7100" class="spring recipes-show chef-antony_worrall_thompson Halloween">
|
119
|
+
<!-- BBCDOTCOM body first spectrum -->
|
120
|
+
<script type="text/javascript">/*<![CDATA[*/ bbcFlagpoles_istats = 'ON'; istatsTrackingUrl = '//sa.bbc.co.uk/bbc/bbc/s?name=food.recipes.paella_7100.page&pal_route=resourceShow&ml_name=barlesque&app_type=web&language=en-GB&ml_version=0.16.1&pal_webapp=food&prod_name=food&app_name=food'; if (window.istats_countername) { istatsTrackingUrl = istatsTrackingUrl.replace(/([?&]name=)[^&]+/ig, '$1' + istats_countername); } (function() { if ( /\bIDENTITY=/.test(document.cookie) ) { istatsTrackingUrl += '&bbc_identity=1'; } var c = (document.cookie.match(/\bckns_policy=(\d\d\d)/)||[]).pop() || ''; istatsTrackingUrl += '&bbc_mc=' + (c? 'ad'+c.charAt(0)+'ps'+c.charAt(1)+'pf'+c.charAt(2) : 'not_set'); if ( /\bckns_policy=\d\d0/.test(document.cookie) ) { istatsTrackingUrl += '&ns_nc=1'; } var screenWidthAndHeight = 'unavailable'; if (window.screen && screen.width && screen.height) { screenWidthAndHeight = screen.width + 'x' + screen.height; } istatsTrackingUrl += ('&screen_resolution=' + screenWidthAndHeight); istatsTrackingUrl += '&blq_s=3.5&blq_r=3.5&blq_v=default-worldwide'; })(); /*]]>*/</script> <!-- Begin iStats 20100118 (UX-CMC 1.1009.3) --> <script type="text/javascript">/*<![CDATA[*/ (function() { window.istats || (istats = {}); var cookieDisabled = (document.cookie.indexOf('NO-SA=') != -1), hasCookieLabels = (document.cookie.indexOf('sa_labels=') != -1), hasClickThrough = /^#sa-(.*?)(?:-sa(.*))?$/.test(document.location.hash), runSitestat = !cookieDisabled && !hasCookieLabels && !hasClickThrough && !istats._linkTracked; if (runSitestat && bbcFlagpoles_istats === 'ON') { sitestat(istatsTrackingUrl); } else { window.ns_pixelUrl = istatsTrackingUrl; /* used by Flash library to track */ } function sitestat(n){var j=document,f=j.location,b="";if(j.cookie.indexOf("st_ux=")!=-1){var k=j.cookie.split(";");var e="st_ux",h=document.domain,a="/";if(typeof ns_!="undefined"&&typeof ns_.ux!="undefined"){e=ns_.ux.cName||e;h=ns_.ux.cDomain||h;a=ns_.ux.cPath||a}for(var g=0,f=k.length;g<f;g++){var m=k[g].indexOf("st_ux=");if(m!=-1){b="&"+unescape(k[g].substring(m+6))}}document.cookie=e+"=; expires="+new Date(new Date().getTime()-60).toGMTString()+"; path="+a+"; domain="+h}ns_pixelUrl=n;n=ns_pixelUrl+"&ns__t="+(new Date().getTime())+"&ns_c="+((j.characterSet)?j.characterSet:j.defaultCharset)+"&ns_ti="+escape(j.title)+b+"&ns_jspageurl="+escape(f&&f.href?f.href:j.URL)+"&ns_referrer="+escape(j.referrer);if(n.length>2000&&n.lastIndexOf("&")){n=n.substring(0,n.lastIndexOf("&")+1)+"ns_cut="+n.substring(n.lastIndexOf("&")+1,n.lastIndexOf("=")).substring(0,40)}(j.images)?new Image().src=n:j.write('<p><i'+'mg src="'+n+'" height="1" width="1" alt="" /></p>')}; })(); /*]]>*/</script>
|
121
|
+
<noscript>
|
122
|
+
<p style="position: absolute; top: -999em;"><img src="//sa.bbc.co.uk/bbc/bbc/s?name=food.recipes.paella_7100.page&pal_route=resourceShow&ml_name=barlesque&app_type=web&language=en-GB&ml_version=0.16.1&pal_webapp=food&prod_name=food&app_name=food&blq_s=3.5&blq_r=3.5&blq_v=default-worldwide" height="1" width="1" alt="" /></p>
|
123
|
+
</noscript>
|
124
|
+
<!-- End iStats (UX-CMC) -->
|
125
|
+
<div id="blq-global">
|
126
|
+
<div id="blq-pre-mast" lang="en-GB">
|
127
|
+
<!-- Pre mast -->
|
128
|
+
<!-- BBCDOTCOM leaderboard template:server-side journalismVariant: false ipIsAdvertiseCombined: false adsEnabled: true showDotcom: true flagpole: ON showAdAboveBlq: true blqLeaderboardAd: true -->
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
<script type="text/html" id="blq-bbccookies-tmpl"><![CDATA[ <div id="bbccookies-prompt"> <h2> Cookies on the BBC website </h2> <p> We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we'll assume that you are happy to receive all cookies on the BBC website. However, if you would like to, you can <a href="/privacy/cookies/managing/cookie-settings.html">change your cookie settings</a> at any time. </p> <ul> <li id="bbccookies-continue"> <button type="button" id="bbccookies-continue-button">Continue</button> </li> <li id="bbccookies-more"><a href="/privacy/cookies/bbc">Find out more</a></li></ul> </div> ]]></script> <script type="text/javascript">/*<![CDATA[*/ (function(){if(bbccookies._showPrompt()){var i=document,b=i.getElementById("blq-pre-mast"),f=i.getElementById("blq-global"),h=i.getElementById("blq-container"),c=i.getElementById("blq-bbccookies-tmpl"),a,g,e;if(b&&i.createElement){a=i.createElement("div");a.id="bbccookies";e=c.innerHTML;e=e.replace("<"+"![CDATA[","").replace("]]"+">","");a.innerHTML=e;if(f){f.insertBefore(a,b)}else{h.insertBefore(a,b)}g=i.getElementById("bbccookies-continue-button");g.onclick=function(){a.parentNode.removeChild(a);return false};bbccookies._setPolicy()}}})(); /*]]>*/</script>
|
132
|
+
<div id="blq-masthead" class="blq-clearfix blq-mast-bg-transparent-dark blq-lang-en-GB blq-ltr">
|
133
|
+
<span id="blq-mast-background"><span></span></span>
|
134
|
+
<div id="blq-mast" class="blq-rst">
|
135
|
+
<div id="blq-mast-bar" class="blq-masthead-container blq-default-worldwide">
|
136
|
+
<div id="blq-blocks"> <a href="/" hreflang="en-GB"> <abbr title="British Broadcasting Corporation" class="blq-home"> <img src="http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5/img/blq-blocks_grey_alpha.png" alt="BBC" width="84" height="24" /> </abbr> </a> </div>
|
137
|
+
<div id="blq-acc-links">
|
138
|
+
<h2 id="page-top">Accessibility links</h2>
|
139
|
+
<ul>
|
140
|
+
<li><a href="#blq-content">Skip to content</a></li>
|
141
|
+
<li><a href="/accessibility/">Accessibility Help</a></li>
|
142
|
+
</ul>
|
143
|
+
</div>
|
144
|
+
<div id="blq-sign-in" class="blq-gel">
|
145
|
+
<div id="id-status">
|
146
|
+
<div class="id-out id-gel">
|
147
|
+
<h2 class="blq-hide">BBC iD</h2>
|
148
|
+
<a href="https://id.bbc.co.uk/users/signin?s=sb" class="blq-nogo has-ptrt idSignin"><span class="id-icon"><span></span></span>Sign in<span class="id-spinner"></span></a>
|
149
|
+
</div>
|
150
|
+
</div>
|
151
|
+
</div>
|
152
|
+
<div id="blq-nav">
|
153
|
+
<h2>bbc.co.uk navigation</h2>
|
154
|
+
<ul id="blq-nav-main">
|
155
|
+
<li id="blq-nav-news"> <a href="http://www.bbc.com/news/">News</a> </li>
|
156
|
+
<li id="blq-nav-sport"> <a href="http://www.bbc.co.uk/sport/">Sport</a> </li>
|
157
|
+
<li id="blq-nav-weather"> <a href="http://www.bbc.co.uk/weather/">Weather</a> </li>
|
158
|
+
<li id="blq-nav-travel"> <a href="http://www.bbc.com/travel/">Travel</a> </li>
|
159
|
+
<li id="blq-nav-future"> <a href="http://www.bbc.com/future/">Future</a> </li>
|
160
|
+
<li id="blq-nav-autos"> <a href="http://www.bbc.com/autos/">Autos</a> </li>
|
161
|
+
<li id="blq-nav-tv"> <a href="/tv/">TV</a> </li>
|
162
|
+
<li id="blq-nav-radio"> <a href="/radio/">Radio</a> </li>
|
163
|
+
<li id="blq-nav-more"> <a href="/a-z/">More…</a> </li>
|
164
|
+
</ul>
|
165
|
+
<div id="blq-nav-search">
|
166
|
+
<form method="get" action="http://search.bbc.co.uk/search" accept-charset="utf-8" id="blq-search-form">
|
167
|
+
<div> <input type="hidden" name="go" value="toolbar" /> <input type="hidden" name="uri" value="/food/recipes/paella_7100" /> <label for="blq-search-q" class="blq-hide">Search term:</label> <input id="blq-search-q" type="text" name="q" value="" maxlength="128" /> <button id="blq-search-btn" type="submit"><span><img src="http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5/img/blq-search_grey_alpha.png" width="13" height="13" alt="Search"/></span></button> </div>
|
168
|
+
</form>
|
169
|
+
</div>
|
170
|
+
</div>
|
171
|
+
</div>
|
172
|
+
</div>
|
173
|
+
</div>
|
174
|
+
<div id="blq-container-outer" class="blq-default-worldwide blq-ltr" >
|
175
|
+
<div id="blq-container" class="blq-lang-en-GB blq-dotcom">
|
176
|
+
<div id="blq-container-inner" lang="en-GB">
|
177
|
+
<div id="blq-main" class="blq-clearfix">
|
178
|
+
<div class="gBanner" id="gBanner">
|
179
|
+
<p><img alt="BBC" src="http://static.bbci.co.uk/food/1.34.0/css/f/print/bbc_food_logo.gif"/></p>
|
180
|
+
</div>
|
181
|
+
<div id="banner">
|
182
|
+
<p id="heading"><a href="/food/">Food<span></span></a></p>
|
183
|
+
<p id="sub-heading">Recipes</p>
|
184
|
+
<div id="banner-image"></div>
|
185
|
+
</div>
|
186
|
+
<ol id="site-nav">
|
187
|
+
<li class="unselected first-child">
|
188
|
+
<a class = "" href="/food/">Home</a>
|
189
|
+
</li>
|
190
|
+
<li class="selected">
|
191
|
+
<a class = " with-more" href="/food/recipes/">Recipes</a>
|
192
|
+
<ul class="sub-nav">
|
193
|
+
<li class="sub-nav-item first-child"><a class="sub-nav-item first-child" href="/food/seasons">In Season</a></li>
|
194
|
+
<li class="sub-nav-item"><a class="sub-nav-item" href="/food/occasions">Occasions</a></li>
|
195
|
+
<li class="sub-nav-item"><a class="sub-nav-item" href="/food/cuisines">Cuisines</a></li>
|
196
|
+
<li class="sub-nav-item"><a class="sub-nav-item" href="/food/dishes">Dishes</a></li>
|
197
|
+
</ul>
|
198
|
+
</li>
|
199
|
+
<li class="unselected">
|
200
|
+
<a class = "" href="/food/chefs">Chefs</a>
|
201
|
+
</li>
|
202
|
+
<li class="unselected">
|
203
|
+
<a class = "" href="/food/programmes">Programmes</a>
|
204
|
+
</li>
|
205
|
+
<li class="unselected">
|
206
|
+
<a class = "" href="/food/ingredients">Ingredients</a>
|
207
|
+
</li>
|
208
|
+
<li class="unselected">
|
209
|
+
<a class = "" href="/food/techniques">Techniques</a>
|
210
|
+
</li>
|
211
|
+
<li class="unselected">
|
212
|
+
<a class = "" href="/food/about">FAQs</a>
|
213
|
+
</li>
|
214
|
+
<li class="binder"><span></span><a href="/food/binder/help">Recipe binder</a></li>
|
215
|
+
</ol>
|
216
|
+
<div id="site-sub-nav-helper"></div>
|
217
|
+
<div class="page hrecipe">
|
218
|
+
<div id="column-1" class="column">
|
219
|
+
<div class="article-title">
|
220
|
+
<h1 class="fn ">Paella</h1>
|
221
|
+
</div>
|
222
|
+
<div id="subcolumn-1" class="subcolumn">
|
223
|
+
<img id="food-image" class="photo" src="http://ichef.bbci.co.uk/food/ic/food_16x9_448/recipes/paella_7100_16x9.jpg" width="448" height="252" alt="Paella" />
|
224
|
+
<div id="description" class="module padded summary">
|
225
|
+
<p><span class="summary">An authentic seafood and chicken paella that boasts some of Spain’s finest ingredients, from calasparra rice to chorizo.</span></p>
|
226
|
+
</div>
|
227
|
+
<div id="ingredients" class="module bordered module padded">
|
228
|
+
<h2>Ingredients</h2>
|
229
|
+
<ul>
|
230
|
+
<li>
|
231
|
+
<p class="ingredient">170g/6oz <a href="/food/chorizo" class="name food">chorizo</a>, cut into thin slices</p>
|
232
|
+
</li>
|
233
|
+
<li>
|
234
|
+
<p class="ingredient">110g/4oz <a href="/food/pancetta" class="name food">pancetta</a>, cut into small dice</p>
|
235
|
+
</li>
|
236
|
+
<li>
|
237
|
+
<p class="ingredient">2 cloves <a href="/food/garlic" class="name food">garlic</a> finely chopped</p>
|
238
|
+
</li>
|
239
|
+
<li>
|
240
|
+
<p class="ingredient">1 large Spanish <a href="/food/onion" class="name food">onion</a>, finely diced</p>
|
241
|
+
</li>
|
242
|
+
<li>
|
243
|
+
<p class="ingredient">1 red pepper, diced</p>
|
244
|
+
</li>
|
245
|
+
<li>
|
246
|
+
<p class="ingredient">1 tsp soft <a href="/food/thyme" class="name food">thyme</a> leaves</p>
|
247
|
+
</li>
|
248
|
+
<li>
|
249
|
+
<p class="ingredient">¼ tsp dried red chilli flakes</p>
|
250
|
+
</li>
|
251
|
+
<li>
|
252
|
+
<p class="ingredient">570ml/1pint calasparra (Spanish short-grain) rice</p>
|
253
|
+
</li>
|
254
|
+
<li>
|
255
|
+
<p class="ingredient">1 tsp <a href="/food/paprika" class="name food">paprika</a></p>
|
256
|
+
</li>
|
257
|
+
<li>
|
258
|
+
<p class="ingredient">125ml/4fl oz dry <a href="/food/white_wine" class="name food">white wine</a></p>
|
259
|
+
</li>
|
260
|
+
<li>
|
261
|
+
<p class="ingredient">1.2 litres/2 pints <a href="/food/chicken_stock" class="name food">chicken stock</a>, heated with ¼ tsp saffron strands</p>
|
262
|
+
</li>
|
263
|
+
<li>
|
264
|
+
<p class="ingredient">8 <a href="/food/chicken" class="name food">chicken</a> thighs, each chopped in half and browned</p>
|
265
|
+
</li>
|
266
|
+
<li>
|
267
|
+
<p class="ingredient">18 small <a href="/food/clams" class="name food">clams</a>, cleaned</p>
|
268
|
+
</li>
|
269
|
+
<li>
|
270
|
+
<p class="ingredient">110g/4oz fresh or frozen <a href="/food/pea" class="name food">peas</a></p>
|
271
|
+
</li>
|
272
|
+
<li>
|
273
|
+
<p class="ingredient">4 large <a href="/food/tomato" class="name food">tomatoes</a>, de-seeded and diced</p>
|
274
|
+
</li>
|
275
|
+
<li>
|
276
|
+
<p class="ingredient">125ml/4fl oz good <a href="/food/olive_oil" class="name food">olive oil</a></p>
|
277
|
+
</li>
|
278
|
+
<li>
|
279
|
+
<p class="ingredient">1 head <a href="/food/garlic" class="name food">garlic</a>, cloves separated and peeled</p>
|
280
|
+
</li>
|
281
|
+
<li>
|
282
|
+
<p class="ingredient">12 jumbo raw <a href="/food/prawn" class="name food">prawns</a>, in shells</p>
|
283
|
+
</li>
|
284
|
+
<li>
|
285
|
+
<p class="ingredient">450g/1lb <a href="/food/squid" class="name food">squid</a>, cleaned and chopped into bite-sized pieces</p>
|
286
|
+
</li>
|
287
|
+
<li>
|
288
|
+
<p class="ingredient">5 tbsp chopped flatleaf <a href="/food/parsley" class="name food">parsley</a></p>
|
289
|
+
</li>
|
290
|
+
<li>
|
291
|
+
<p class="ingredient">Salt and freshly ground <a href="/food/black_pepper" class="name food">black pepper</a></p>
|
292
|
+
</li>
|
293
|
+
</ul>
|
294
|
+
</div>
|
295
|
+
<div id="preparation" class="module bordered">
|
296
|
+
<h2>Preparation method</h2>
|
297
|
+
<ol class="instructions">
|
298
|
+
<li class="instruction">
|
299
|
+
<p>Heat half the olive oil in a paella dish or heavy-based saucepan. Add the chorizo and pancetta and fry until crisp. Add the garlic, onion and pepper and heat until softened. Add the thyme, chilli flakes and calasparra rice, and stir until all the grains of rice are nicely coated and glossy. Now add the paprika and dry white wine and when it is bubbling, pour in the hot chicken stock, add the chicken thighs and cook for 5-10 minutes.</p>
|
300
|
+
</li>
|
301
|
+
<li class="instruction">
|
302
|
+
<p>Now place the clams into the dish with the join facing down so that the edges open outwards. Sprinkle in the peas and chopped tomatoes and continue to cook gently for another 10 minutes.</p>
|
303
|
+
</li>
|
304
|
+
<li class="instruction">
|
305
|
+
<p>Meanwhile, heat the remaining oil with the garlic cloves in a separate pan and add the prawns. Fry quickly for a minute or two then add them to the paella. Now do the same with the squid and add them to the paella too.</p>
|
306
|
+
</li>
|
307
|
+
<li class="instruction">
|
308
|
+
<p>Scatter the chopped parsley over the paella and serve immediately.</p>
|
309
|
+
</li>
|
310
|
+
</ol>
|
311
|
+
</div>
|
312
|
+
<div id="related-tips-list-module" class="inline-accordion module">
|
313
|
+
<h2 class="accordion-header tip"><span></span>Top recipe tip</h2>
|
314
|
+
<div>
|
315
|
+
<p>If you don't have a pan large enough to hold all of the rice and paella ingredients, use two pans and divide the rice between them.</p>
|
316
|
+
</div>
|
317
|
+
<h2 class="accordion-header techniques"><span></span>Required techniques</h2>
|
318
|
+
<ul>
|
319
|
+
<li class="">
|
320
|
+
<a href="/food/techniques/chopping_vegetables">Learning to chop: finely chopping celery</a>
|
321
|
+
</li>
|
322
|
+
<li class="">
|
323
|
+
<a href="/food/techniques/de-seeding_tomatoes">De-seeding tomatoes</a>
|
324
|
+
</li>
|
325
|
+
<li class="last-child">
|
326
|
+
<a href="/food/techniques/cleaning_squid">Cleaning and preparing squid</a>
|
327
|
+
</li>
|
328
|
+
</ul>
|
329
|
+
</div>
|
330
|
+
</div>
|
331
|
+
<div id="subcolumn-2" class="subcolumn">
|
332
|
+
<div id="chef-details" class=" module">
|
333
|
+
<h2>
|
334
|
+
By
|
335
|
+
<a href="/food/chefs/antony_worrall_thompson">
|
336
|
+
<span class="author">Antony Worrall Thompson</span>
|
337
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_1x1_72/chefs/antony_worrall_thompson_1x1.jpg" width="72" height="72" alt="Antony Worrall Thompson" />
|
338
|
+
</a>
|
339
|
+
</h2>
|
340
|
+
</div>
|
341
|
+
<div id="article-details" class="module bordered">
|
342
|
+
<h3><span class="prepTime"><span class="value-title" title="PT1H"></span>30 mins to 1 hour</span> preparation time</h3>
|
343
|
+
<h3><span class="cookTime"><span class="value-title" title="PT30M"></span>10 to 30 mins</span> cooking time</h3>
|
344
|
+
<h3 class="yield">Serves 6-8</h3>
|
345
|
+
</div>
|
346
|
+
<div id="binder-module" class="module coloured padded">
|
347
|
+
<h2>
|
348
|
+
Recipe binder
|
349
|
+
</h2>
|
350
|
+
<a id="sign-in" class="sign-in" href="https://ssl.bbc.co.uk/id/signin?ptrt=http%3A%2F%2Fwww.bbc.co.uk%2Ffood%2Frecipes%2Fpaella_7100"><span></span>Sign in to save this recipe in your binder</a>
|
351
|
+
</div>
|
352
|
+
<div class="bbc-st bbc-st-slim bbc-st-colour bbc-st-dark">
|
353
|
+
<p class="bbc-st-basic">
|
354
|
+
<a href="/sharetools/share?url=http://www.bbc.co.uk/food/recipes/paella_7100&appId=Food&env=int">Share this page</a>
|
355
|
+
</p>
|
356
|
+
</div>
|
357
|
+
<div id="user-actions" class="module coloured padded">
|
358
|
+
<ul>
|
359
|
+
<li><a class="print-link" href="/food/recipes/paella_7100.pdf"><span></span>Print version</a></li>
|
360
|
+
<li><a rel="nofollow" class="shopping-list-link" href="/food/recipes/paella_7100/shopping-list"><span></span>Shopping list</a></li>
|
361
|
+
<li><a class="mobile-link" href="/food/recipes/paella_7100/share"><span></span>Send to a mobile</a></li>
|
362
|
+
</ul>
|
363
|
+
</div>
|
364
|
+
<div id="recommend" class="module coloured padded">
|
365
|
+
<h2 class="description"><span>75</span> people have recommended this recipe</h2>
|
366
|
+
<a href="https://ssl.bbc.co.uk/id/signin?ptrt=http://www.bbc.co.uk/food/recipes/paella_7100" id="sign-in">Sign in to recommend</a>
|
367
|
+
</div>
|
368
|
+
<div id="related-diets-list-module" class="inline-accordion module">
|
369
|
+
<h2 class="accordion-header coloured">Special Diets</h2>
|
370
|
+
<ul>
|
371
|
+
<li class=""><a href="/food/diets/dairy_free"><span class="tag">Dairy-free</span> recipes</a></li>
|
372
|
+
<li class=""><a href="/food/diets/egg_free"><span class="tag">Egg-free</span> recipes</a></li>
|
373
|
+
<li class=""><a href="/food/diets/gluten_free"><span class="tag">Gluten-free</span> recipes</a></li>
|
374
|
+
<li class="last-child"><a href="/food/diets/healthy"><span class="tag">Healthy</span> recipes</a></li>
|
375
|
+
</ul>
|
376
|
+
</div>
|
377
|
+
</div>
|
378
|
+
</div>
|
379
|
+
<div id="column-2" class="column">
|
380
|
+
<div id="quick-recipe-finder" class="module coloured">
|
381
|
+
<h2>Quick recipe finder</h2>
|
382
|
+
<div class="search-help">
|
383
|
+
<p>Type the ingredients you want to use, then click <strong class="search-text">Go</strong>. For better results you can use quotation marks around phrases (e.g. "chicken breast"). Alternatively you can search by chef, programme, cuisine, diet, or dish (e.g. Lasagne).</p>
|
384
|
+
</div>
|
385
|
+
<form method="get" action="/food/recipes/search">
|
386
|
+
<fieldset>
|
387
|
+
<label for="search-keywords" id="search-keywords-label">Type ingredients, chef or programme</label>
|
388
|
+
<input type="text" id="search-keywords" name="keywords" />
|
389
|
+
<input type="image" id="search-submit" alt="Go" src="http://static.bbci.co.uk/food/1.34.0/css/f/buttons/quick_search.png" />
|
390
|
+
<label for="search-quick-filter" id="search-quick-filter-label" class="filter-label">
|
391
|
+
<input type="checkbox" id="search-quick-filter" class="filter" name="quickAndEasy" value="true" />
|
392
|
+
Quick & Easy
|
393
|
+
</label>
|
394
|
+
<label for="search-vegetarian-filter" id="search-vegetarian-filter-label" class="filter-label">
|
395
|
+
<input type="checkbox" id="search-vegetarian-filter" class="filter" name="diets[]" value="vegetarian" />
|
396
|
+
Vegetarian
|
397
|
+
</label>
|
398
|
+
</fieldset>
|
399
|
+
</form>
|
400
|
+
<a id="advanced-search-link" href="/food/recipes#quick-recipe-finder">Advanced search options</a>
|
401
|
+
</div>
|
402
|
+
<div id="related-recipes-list-module" class="module grouped-resource-list-module">
|
403
|
+
<h2>Related recipes</h2>
|
404
|
+
<h3 class="accordion-header initial">Recipes for paella</h3>
|
405
|
+
<div class="accordion resource-list">
|
406
|
+
<ul class="resources">
|
407
|
+
<li>
|
408
|
+
<h4>
|
409
|
+
<a href="/food/recipes/seafood_paella_79673">
|
410
|
+
Seafood paella </a>
|
411
|
+
</h4>
|
412
|
+
<h5>By <span class="chef-name">The Hairy Bikers</span></h5>
|
413
|
+
</li>
|
414
|
+
<li class="with-image">
|
415
|
+
<h4>
|
416
|
+
<a href="/food/recipes/our_paella_92328">
|
417
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/our_paella_92328_16x9.jpg" width="88" height="50" alt="Our paella " />
|
418
|
+
Our paella </a>
|
419
|
+
</h4>
|
420
|
+
<h5>By <span class="chef-name">The Hairy Bikers</span></h5>
|
421
|
+
</li>
|
422
|
+
<li class=" last-child">
|
423
|
+
<h4>
|
424
|
+
<a href="/food/recipes/beachside_paella_41859">
|
425
|
+
Beachside paella </a>
|
426
|
+
</h4>
|
427
|
+
<h5>By <span class="chef-name">The Hairy Bikers</span></h5>
|
428
|
+
</li>
|
429
|
+
</ul>
|
430
|
+
<p class="see-all">See more <a href="/food/paella">paella recipes</a></p>
|
431
|
+
</div>
|
432
|
+
<h3 class="accordion-header">Antony Worrall Thompson recipes</h3>
|
433
|
+
<div class="accordion resource-list">
|
434
|
+
<ul class="resources">
|
435
|
+
<li class="with-image">
|
436
|
+
<h4>
|
437
|
+
<a href="/food/recipes/moroccanlambtagine_6696">
|
438
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/moroccanlambtagine_6696_16x9.jpg" width="88" height="50" alt="Moroccan lamb tagine" />
|
439
|
+
Moroccan lamb tagine </a>
|
440
|
+
</h4>
|
441
|
+
<h5>By <span class="chef-name">Antony Worrall Thompson</span></h5>
|
442
|
+
</li>
|
443
|
+
<li class="with-image">
|
444
|
+
<h4>
|
445
|
+
<a href="/food/recipes/beefwellington_2063">
|
446
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/beefwellington_2063_16x9.jpg" width="88" height="50" alt="Beef Wellington" />
|
447
|
+
Beef Wellington </a>
|
448
|
+
</h4>
|
449
|
+
<h5>By <span class="chef-name">Antony Worrall Thompson</span></h5>
|
450
|
+
</li>
|
451
|
+
<li class="with-image last-child">
|
452
|
+
<h4>
|
453
|
+
<a href="/food/recipes/thaisteamedsalmon_7254">
|
454
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/thaisteamedsalmon_7254_16x9.jpg" width="88" height="50" alt="Thai steamed salmon" />
|
455
|
+
Thai steamed salmon </a>
|
456
|
+
</h4>
|
457
|
+
<h5>By <span class="chef-name">Antony Worrall Thompson</span></h5>
|
458
|
+
</li>
|
459
|
+
</ul>
|
460
|
+
<p class="see-all">See more <a href="/food/chefs/antony_worrall_thompson">Antony Worrall Thompson recipes</a></p>
|
461
|
+
</div>
|
462
|
+
<h3 class="accordion-header">Tapas recipes</h3>
|
463
|
+
<div class="accordion resource-list">
|
464
|
+
<ul class="resources last-of-type">
|
465
|
+
<li class="with-image">
|
466
|
+
<h4>
|
467
|
+
<a href="/food/recipes/troutcroquettes_91864">
|
468
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/troutcroquettes_91864_16x9.jpg" width="88" height="50" alt="Trout croquettes" />
|
469
|
+
Trout croquettes </a>
|
470
|
+
</h4>
|
471
|
+
<h5>By <span class="chef-name">Valentine Warner</span></h5>
|
472
|
+
</li>
|
473
|
+
<li class="with-image">
|
474
|
+
<h4>
|
475
|
+
<a href="/food/recipes/sangria_93847">
|
476
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/sangria_93847_16x9.jpg" width="88" height="50" alt="Sangria" />
|
477
|
+
Sangria </a>
|
478
|
+
</h4>
|
479
|
+
<h5>By <span class="chef-name">Jill Dupleix</span></h5>
|
480
|
+
</li>
|
481
|
+
<li class="with-image last-child">
|
482
|
+
<h4>
|
483
|
+
<a href="/food/recipes/stuffedbabypeppers_67844">
|
484
|
+
<img src="http://ichef.bbci.co.uk/food/ic/food_16x9_88/recipes/stuffedbabypeppers_67844_16x9.jpg" width="88" height="50" alt="Stuffed baby peppers" />
|
485
|
+
Stuffed baby peppers </a>
|
486
|
+
</h4>
|
487
|
+
<h5>By <span class="chef-name">Gennaro Contaldo</span></h5>
|
488
|
+
</li>
|
489
|
+
</ul>
|
490
|
+
<p class="see-all">See <a href="/food/collections/tapas">more Tapas recipes recipes</a> <span class="recipe-count">(13)</span></p>
|
491
|
+
</div>
|
492
|
+
</div>
|
493
|
+
<div id="cps-promo" class="module coloured">
|
494
|
+
<h2>Food Features</h2>
|
495
|
+
<div class="cps-promo-articles-container">
|
496
|
+
<ul>
|
497
|
+
<li class="cps-promo-article">
|
498
|
+
<a href="http://www.bbc.co.uk/food/0/21881077" title="Roast leg of lamb">
|
499
|
+
<div class="cps-promo-overlay">
|
500
|
+
<h3 class="cps-promo-title">Easter lamb</h3>
|
501
|
+
<p class="cps-promo-summary">Should you buy NZ lamb for your Sunday roast?
|
502
|
+
</h3>
|
503
|
+
</div>
|
504
|
+
<img src="http://ichef.bbci.co.uk/food/ic/newsimg/food_16x9_320/66601000/jpg/_66601283_roastlegoflambwithga_90252_16x9.jpg" alt="Roast leg of lamb"/>
|
505
|
+
</a>
|
506
|
+
</li>
|
507
|
+
<li class="cps-promo-article">
|
508
|
+
<a href="http://www.bbc.co.uk/food/0/21745425" title="Paul A. Young chocolates">
|
509
|
+
<div class="cps-promo-overlay">
|
510
|
+
<h3 class="cps-promo-title">Top of the chocs</h3>
|
511
|
+
<p class="cps-promo-summary">The importance of pairing chocolate well
|
512
|
+
</h3>
|
513
|
+
</div>
|
514
|
+
<img src="http://ichef.bbci.co.uk/food/ic/newsimg/food_16x9_320/66329000/jpg/_66329969_timeline.jpg" alt="Paul A. Young chocolates"/>
|
515
|
+
</a>
|
516
|
+
</li>
|
517
|
+
<li class="cps-promo-article">
|
518
|
+
<a href="http://www.bbc.co.uk/food/0/21745424" title="Paul A. Young's Easter Simnel truffles">
|
519
|
+
<div class="cps-promo-overlay">
|
520
|
+
<h3 class="cps-promo-title">Nice spice</h3>
|
521
|
+
<p class="cps-promo-summary">How to make Paul A. Young's Easter simnel truffles
|
522
|
+
</h3>
|
523
|
+
</div>
|
524
|
+
<img src="http://ichef.bbci.co.uk/food/ic/newsimg/food_16x9_320/66329000/jpg/_66329918_truffles.jpg" alt="Paul A. Young's Easter Simnel truffles"/>
|
525
|
+
</a>
|
526
|
+
</li>
|
527
|
+
<li class="cps-promo-article">
|
528
|
+
<a href="http://www.bbc.co.uk/food/0/21881076" title="Indian spices">
|
529
|
+
<div class="cps-promo-overlay">
|
530
|
+
<h3 class="cps-promo-title">Festival of colours</h3>
|
531
|
+
<p class="cps-promo-summary">Food eaten on Hindu Holi celebration 'tastes of spring'
|
532
|
+
</h3>
|
533
|
+
</div>
|
534
|
+
<img src="http://ichef.bbci.co.uk/food/ic/newsimg/food_16x9_320/66592000/jpg/_66592895_p1010256.jpg" alt="Indian spices"/>
|
535
|
+
</a>
|
536
|
+
</li>
|
537
|
+
</ul>
|
538
|
+
</div>
|
539
|
+
<div class="prev"><span class="arrow"> </span></div>
|
540
|
+
<div class="next"><span class="arrow"> </span></div>
|
541
|
+
</div>
|
542
|
+
</div>
|
543
|
+
</div>
|
544
|
+
</div>
|
545
|
+
<!--[if IE 6]>
|
546
|
+
<div id="blq-ie6-upgrade">
|
547
|
+
<p> <span>You're using the Internet Explorer 6 browser to view the BBC website. Our site will work much better if you change to a more modern browser. It's free, quick and easy.</span> <a href="http://www.browserchoice.eu/">Find out more <span>about upgrading your browser</span> here…</a> </p>
|
548
|
+
</div>
|
549
|
+
<![endif]-->
|
550
|
+
<div id="blq-foot" lang="en-GB" class="blq-rst blq-clearfix blq-foot-grey">
|
551
|
+
<div id="blq-footlinks">
|
552
|
+
<h2 class="blq-hide">BBC links</h2>
|
553
|
+
<ul>
|
554
|
+
<li class="blq-footlinks-row">
|
555
|
+
<ul class="blq-footlinks-row-list">
|
556
|
+
<li><a href="http://m.bbc.co.uk/" id="blq-footer-mobile">Mobile site</a></li>
|
557
|
+
<li><a href="/terms/">Terms of Use</a></li>
|
558
|
+
<li><a href="/aboutthebbc/">About the BBC</a></li>
|
559
|
+
</ul>
|
560
|
+
</li>
|
561
|
+
<li class="blq-footlinks-row">
|
562
|
+
<ul class="blq-footlinks-row-list">
|
563
|
+
<li><a href="http://advertising.bbcworldwide.com">Advertise With Us</a></li>
|
564
|
+
<li><a href="/privacy/">Privacy</a></li>
|
565
|
+
<li><a href="/help/">BBC Help</a></li>
|
566
|
+
</ul>
|
567
|
+
</li>
|
568
|
+
<li class="blq-footlinks-row">
|
569
|
+
<ul class="blq-footlinks-row-list">
|
570
|
+
<li><a href="/bbc.com/ad-choices/">Ad Choices</a></li>
|
571
|
+
<li><a href="/privacy/bbc-cookies-policy.shtml">Cookies</a></li>
|
572
|
+
<li><a href="/accessibility/">Accessibility Help</a></li>
|
573
|
+
</ul>
|
574
|
+
</li>
|
575
|
+
<li class="blq-footlinks-row">
|
576
|
+
<ul class="blq-footlinks-row-list">
|
577
|
+
<li><a href="/guidance/">Parental Guidance</a></li>
|
578
|
+
<li><a href="/food/feedback">Contact Us</a></li>
|
579
|
+
</ul>
|
580
|
+
</li>
|
581
|
+
</ul>
|
582
|
+
<script type="text/javascript">/*<![CDATA[*/ (function() { var mLink = document.getElementById('blq-footer-mobile'), stick = function() { var d = new Date (); d.setYear(d.getFullYear() + 1); d = d.toUTCString(); window.bbccookies.set('ckps_d=m;domain=.bbc.co.uk;path=/;expires=' + d ); window.bbccookies.set('ckps_d=m;domain=.bbc.com;path=/;expires=' + d ); }; if (mLink) { if (mLink.addEventListener) { mLink.addEventListener('click', stick, false); } else if (mLink.attachEvent) { mLink.attachEvent('onclick', stick); } } })(); /*]]>*/</script>
|
583
|
+
</div>
|
584
|
+
<div id="blq-foot-blocks" class="blq-footer-image-light"><img src="http://static.bbci.co.uk/frameworks/barlesque/2.44.2/desktop/3.5/img/blocks/light.png" width="84" height="24" alt="BBC" /></div>
|
585
|
+
<p id="blq-disclaim"><span id="blq-copy">BBC © 2013</span> <a href="/help/web/links/">The BBC is not responsible for the content of external sites. Read more.</a></p>
|
586
|
+
<div id="blq-obit">
|
587
|
+
<p><strong>This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.</strong></p>
|
588
|
+
</div>
|
589
|
+
</div>
|
590
|
+
</div>
|
591
|
+
<!-- BBCDOTCOM analytics template:server-side journalismVariant: false ipIsAdvertiseCombined: false adsEnabled: true showDotcom: true flagpole: ON -->
|
592
|
+
<script type="text/javascript">
|
593
|
+
/*<![CDATA[*/
|
594
|
+
if('undefined' != typeof(bbcdotcom) && 'undefined' != typeof(bbcdotcom.stats)) {
|
595
|
+
bbcdotcom.stats.adEnabled = "no";
|
596
|
+
bbcdotcom.stats.contentType = "HTML";
|
597
|
+
}
|
598
|
+
/*]]>*/
|
599
|
+
</script>
|
600
|
+
<script type="text/javascript" src="http://js.revsci.net/gateway/gw.js?csid=J08781"></script>
|
601
|
+
<script type="text/javascript">
|
602
|
+
DM_tag();
|
603
|
+
</script>
|
604
|
+
<!-- SiteCatalyst code version: H.21.
|
605
|
+
Copyright 1996-2010 Adobe, Inc. All Rights Reserved
|
606
|
+
More info available at http://www.omniture.com -->
|
607
|
+
<script type="text/javascript">
|
608
|
+
var s_account = "bbcwglobalprod";
|
609
|
+
</script>
|
610
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/bbcdotcom/0.3.175/script/s_code.js"></script>
|
611
|
+
<script type="text/javascript"><!--
|
612
|
+
/* You may give each page an identifying name, server, and channel on
|
613
|
+
the next lines. */
|
614
|
+
|
615
|
+
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
|
616
|
+
var s_code=scw.t();if(s_code)document.write(s_code)//--></script>
|
617
|
+
<script type="text/javascript"><!--
|
618
|
+
if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
|
619
|
+
//--></script>
|
620
|
+
<noscript>
|
621
|
+
<div><a href="http://www.omniture.com" title="Web Analytics"><img
|
622
|
+
src="http://sa.bbc.com/b/ss/bbcwglobalprod/1/H.21--NS/0" height="1" width="1" alt="" /></a></div>
|
623
|
+
</noscript>
|
624
|
+
<!--/DO NOT REMOVE/-->
|
625
|
+
<!-- End SiteCatalyst code version: H.21. -->
|
626
|
+
<!-- Begin comScore Tag -->
|
627
|
+
<script type="text/javascript">
|
628
|
+
document.write(unescape("%3Cscript src='" + (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js' %3E%3C/script%3E"));
|
629
|
+
</script>
|
630
|
+
<script type="text/javascript">
|
631
|
+
/*<![CDATA[*/
|
632
|
+
COMSCORE.beacon({
|
633
|
+
c1:2,
|
634
|
+
c2:"6035051",
|
635
|
+
c3:"",
|
636
|
+
c4:"www.bbc.co.uk/food/recipes/paella_7100",
|
637
|
+
c5:"",
|
638
|
+
c6:"",
|
639
|
+
c15:""
|
640
|
+
});
|
641
|
+
/*]]>*/
|
642
|
+
</script>
|
643
|
+
<noscript>
|
644
|
+
<div>
|
645
|
+
<img src="http://b.scorecardresearch.com/b?c1=2&c2=6035051&c3=&c4=www.bbc.co.uk/food/recipes/paella_7100&c5=&c6=&c15=&cv=1.3&cj=1" style="display:none" width="0" height="0" alt="" />
|
646
|
+
</div>
|
647
|
+
</noscript>
|
648
|
+
<!-- End comScore Tag -->
|
649
|
+
<!-- START Nielsen Online SiteCensus V6.0 -->
|
650
|
+
<!-- COPYRIGHT 2010 Nielsen Online -->
|
651
|
+
<script type="text/javascript">
|
652
|
+
/*<![CDATA[*/
|
653
|
+
(function () {
|
654
|
+
var d = new Image(1, 1);
|
655
|
+
d.onerror = d.onload = function () {
|
656
|
+
d.onerror = d.onload = null;
|
657
|
+
};
|
658
|
+
d.src = [('https:' == document.location.protocol ? 'https:' : 'http:') + "//secure-us.imrworldwide.com/cgi-bin/m?ci=us-804789h&cg=0&cc=1&si=", escape(window.location.href), "&rp=",
|
659
|
+
escape(document.referrer), "&ts=compact&rnd=", (new Date()).getTime()].join('');
|
660
|
+
})();
|
661
|
+
/*]]>*/
|
662
|
+
</script>
|
663
|
+
<noscript>
|
664
|
+
<div>
|
665
|
+
<img src="http://secure-us.imrworldwide.com/cgi-bin/m?ci=us-804789h&cg=0&cc=1&ts=noscript"
|
666
|
+
width="1" height="1" alt="" />
|
667
|
+
</div>
|
668
|
+
</noscript>
|
669
|
+
<!-- END Nielsen Online SiteCensus V6.0 -->
|
670
|
+
<!-- Effective Measure BBCCOM-1195 -->
|
671
|
+
<script type="text/javascript">
|
672
|
+
/*<![CDATA[*/
|
673
|
+
(function() {
|
674
|
+
var em = document.createElement('script'); em.type = 'text/javascript'; em.async = true;
|
675
|
+
em.src = ('https:' == document.location.protocol ? 'https://me-ssl' : 'http://me-cdn') + '.effectivemeasure.net/em.js';
|
676
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(em, s);
|
677
|
+
})();
|
678
|
+
/*]]>*/
|
679
|
+
</script>
|
680
|
+
<noscript>
|
681
|
+
<div>
|
682
|
+
<img src="http://me.effectivemeasure.net/em_image" alt="" style="position:absolute; left:-5px;" />
|
683
|
+
</div>
|
684
|
+
</noscript>
|
685
|
+
<!-- End Effective Measure -->
|
686
|
+
</div>
|
687
|
+
</div>
|
688
|
+
<script type="text/javascript"> if (typeof require !== 'undefined') { require(['istats-1'], function(istats){ istats.track('external', { region: document.getElementById('blq-main') }); istats.track('download', { region: document.getElementById('blq-main') }); }); } </script> <script type="text/html" id="blq-panel-template-promo"><![CDATA[ <div id="blq-panel-promo" class="blq-masthead-container"></div> ]]></script> <script type="text/html" id="blq-panel-template-more"><![CDATA[ <div id="blq-panel-more" class="blq-masthead-container blq-clearfix" lang="en-GB" dir="ltr"> <div class="blq-panel-container panel-paneltype-more"> <div class="panel-header"> <h2> <a href="/a-z/"> More… </a> </h2> <a href="/a-z/" class="panel-header-links panel-header-link">Full A-Z<span class="blq-hide"> of BBC sites</span></a> </div> <div class="panel-component panel-links"> <ul> <li> <a href="/cbbc/" >CBBC</a> </li> <li> <a href="/cbeebies/" >CBeebies</a> </li> <li> <a href="/comedy/" >Comedy</a> </li> </ul> <ul> <li> <a href="/food/" >Food</a> </li> <li> <a href="/health/" >Health</a> </li> <li> <a href="/history/" >History</a> </li> </ul> <ul> <li> <a href="/learning/" >Learning</a> </li> <li> <a href="/music/" >Music</a> </li> <li> <a href="/science/" >Science</a> </li> </ul> <ul> <li> <a href="/nature/" >Nature</a> </li> <li> <a href="/local/" >Local</a> </li> <li> <a href="/travelnews/" >Travel News</a> </li> </ul> </div> </div> ]]></script> <script type="text/javascript"> pulse.init( 'food', true ); </script> <script type="text/javascript">
|
689
|
+
//<![CDATA[
|
690
|
+
try{
|
691
|
+
gloader.load(
|
692
|
+
['glow', '1', 'glow.anim', 'glow.dom', 'glow.events', 'glow.forms', 'glow.widgets', 'glow.embed', 'glow.widgets.Carousel', 'glow.widgets.InfoPanel', 'glow.widgets.AutoSuggest']
|
693
|
+
);
|
694
|
+
}
|
695
|
+
catch(e){}
|
696
|
+
|
697
|
+
var PAL_IMAGECHEF_HOST = 'http://ichef.bbci.co.uk';
|
698
|
+
var PAL_STATIC_HOST = 'http://static.bbci.co.uk';
|
699
|
+
|
700
|
+
var STATIC_ASSETS_VERSION = '1.34.0';
|
701
|
+
|
702
|
+
|
703
|
+
//]]>
|
704
|
+
</script>
|
705
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/food/1.34.0/js/main.js"></script>
|
706
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/food/1.34.0/js/recipes/recipes-show.js"></script>
|
707
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/food/1.34.0/js/widgets/accordion.js"></script>
|
708
|
+
<script type="text/javascript" src="http://static.bbc.co.uk/modules/sharetools/v1/script/sharetools.js"></script>
|
709
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/food/1.34.0/js/widgets/quick-recipe-finder.js"></script>
|
710
|
+
<script type="text/javascript" src="http://static.bbci.co.uk/food/1.34.0/js/widgets/cps-promo-module.js"></script>
|
711
|
+
</body>
|
712
|
+
</html>
|
713
|
+
|