actsasflinn-ruby-tokyotyrant 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ #ifndef RUBY_TOKYOTYRANT_MODULE
2
+ #define RUBY_TOKYOTYRANT_MODULE
3
+
4
+ #include <tokyo_tyrant.h>
5
+
6
+ void init_mod();
7
+
8
+ #endif
@@ -0,0 +1,149 @@
1
+ #include <tokyo_tyrant_query.h>
2
+
3
+ static VALUE cQuery_initialize(VALUE vself, VALUE vrdb){
4
+ VALUE vqry;
5
+ TCRDB *db;
6
+ RDBQRY *qry;
7
+ Check_Type(vrdb, T_OBJECT);
8
+ vrdb = rb_iv_get(vrdb, RDBVNDATA);
9
+ Data_Get_Struct(vrdb, TCRDB, db);
10
+ qry = tcrdbqrynew(db);
11
+ vqry = Data_Wrap_Struct(rb_cObject, 0, tcrdbqrydel, qry);
12
+ rb_iv_set(vself, RDBQRYVNDATA, vqry);
13
+ rb_iv_set(vself, RDBVNDATA, vrdb);
14
+ return Qnil;
15
+ }
16
+
17
+ static VALUE cQuery_addcond(VALUE vself, VALUE vname, VALUE vop, VALUE vexpr){
18
+ VALUE vqry;
19
+ RDBQRY *qry;
20
+ vname = StringValueEx(vname);
21
+ vexpr = StringValueEx(vexpr);
22
+
23
+ if (TYPE(vop) == T_SYMBOL) vop = rb_str_new2(rb_id2name(SYM2ID(vop)));
24
+
25
+ if (TYPE(vop) == T_STRING){
26
+ vop = StringValueEx(vop);
27
+ vop = tctdbqrystrtocondop(RSTRING_PTR(toupper(vop)));
28
+ vop = INT2NUM(vop);
29
+ }
30
+
31
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
32
+ Data_Get_Struct(vqry, RDBQRY, qry);
33
+ tcrdbqryaddcond(qry, RSTRING_PTR(vname), NUM2INT(vop), RSTRING_PTR(vexpr));
34
+ return vself;
35
+ }
36
+
37
+ static VALUE cQuery_setorder(VALUE vself, VALUE vname, VALUE vtype){
38
+ VALUE vqry;
39
+ RDBQRY *qry;
40
+ vname = StringValueEx(vname);
41
+
42
+ if (TYPE(vtype) == T_SYMBOL) vtype = rb_str_new2(rb_id2name(SYM2ID(vtype)));
43
+
44
+ if (TYPE(vtype) == T_STRING){
45
+ vtype = StringValueEx(vtype);
46
+ vtype = tctdbqrystrtoordertype(RSTRING_PTR(toupper(vtype)));
47
+ vtype = INT2NUM(vtype);
48
+ }
49
+
50
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
51
+ Data_Get_Struct(vqry, RDBQRY, qry);
52
+ tcrdbqrysetorder(qry, RSTRING_PTR(vname), NUM2INT(vtype));
53
+ return vself;
54
+ }
55
+
56
+ static VALUE cQuery_setmax(VALUE vself, VALUE vmax){
57
+ VALUE vqry;
58
+ RDBQRY *qry;
59
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
60
+ Data_Get_Struct(vqry, RDBQRY, qry);
61
+ tcrdbqrysetmax(qry, NUM2INT(vmax));
62
+ return vself;
63
+ }
64
+
65
+ static VALUE cQuery_search(VALUE vself){
66
+ VALUE vqry, vary;
67
+ RDBQRY *qry;
68
+ TCLIST *res;
69
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
70
+ Data_Get_Struct(vqry, RDBQRY, qry);
71
+ res = tcrdbqrysearch(qry);
72
+ vary = listtovary(res);
73
+ tclistdel(res);
74
+ return vary;
75
+ }
76
+
77
+ static VALUE cQuery_searchout(VALUE vself){
78
+ VALUE vqry;
79
+ RDBQRY *qry;
80
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
81
+ Data_Get_Struct(vqry, RDBQRY, qry);
82
+ return tcrdbqrysearchout(qry) ? Qtrue : Qfalse;
83
+ }
84
+
85
+ static VALUE cQuery_get(VALUE vself){
86
+ int i, num, ksiz;
87
+ const char *name, *col;
88
+ VALUE vqry, vary, vcols;
89
+ RDBQRY *qry;
90
+ TCLIST *res;
91
+ TCMAP *cols;
92
+ vqry = rb_iv_get(vself, RDBQRYVNDATA);
93
+ Data_Get_Struct(vqry, RDBQRY, qry);
94
+
95
+ res = tcrdbqrysearchget(qry);
96
+ num = tclistnum(res);
97
+ vary = rb_ary_new2(num);
98
+ for(i = 0; i < num; i++){
99
+ vcols = rb_hash_new();
100
+ cols = tcrdbqryrescols(res, i);
101
+ if(cols){
102
+ tcmapiterinit(cols);
103
+ while((name = tcmapiternext(cols, &ksiz)) != NULL){
104
+ col = tcmapget2(cols, name);
105
+ if (ksiz == 0) name = "__id";
106
+ rb_hash_aset(vcols, ID2SYM(rb_intern(name)), rb_str_new2(col));
107
+ }
108
+ }
109
+ tcmapdel(cols);
110
+ rb_ary_push(vary, vcols);
111
+ }
112
+ tclistdel(res);
113
+ return vary;
114
+ }
115
+
116
+ void init_query(){
117
+ rb_define_const(cQuery, "CSTREQ", INT2NUM(RDBQCSTREQ));
118
+ rb_define_const(cQuery, "CSTRINC", INT2NUM(RDBQCSTRINC));
119
+ rb_define_const(cQuery, "CSTRBW", INT2NUM(RDBQCSTRBW));
120
+ rb_define_const(cQuery, "CSTREW", INT2NUM(RDBQCSTREW));
121
+ rb_define_const(cQuery, "CSTRAND", INT2NUM(RDBQCSTRAND));
122
+ rb_define_const(cQuery, "CSTROR", INT2NUM(RDBQCSTROR));
123
+ rb_define_const(cQuery, "CSTROREQ", INT2NUM(RDBQCSTROREQ));
124
+ rb_define_const(cQuery, "CSTRRX", INT2NUM(RDBQCSTRRX));
125
+ rb_define_const(cQuery, "CNUMEQ", INT2NUM(RDBQCNUMEQ));
126
+ rb_define_const(cQuery, "CNUMGT", INT2NUM(RDBQCNUMGT));
127
+ rb_define_const(cQuery, "CNUMGE", INT2NUM(RDBQCNUMGE));
128
+ rb_define_const(cQuery, "CNUMLT", INT2NUM(RDBQCNUMLT));
129
+ rb_define_const(cQuery, "CNUMLE", INT2NUM(RDBQCNUMLE));
130
+ rb_define_const(cQuery, "CNUMBT", INT2NUM(RDBQCNUMBT));
131
+ rb_define_const(cQuery, "CNUMOREQ", INT2NUM(RDBQCNUMOREQ));
132
+ rb_define_const(cQuery, "CNEGATE", INT2NUM(RDBQCNEGATE));
133
+ rb_define_const(cQuery, "CNOIDX", INT2NUM(RDBQCNOIDX));
134
+ rb_define_const(cQuery, "OSTRASC", INT2NUM(RDBQOSTRASC));
135
+ rb_define_const(cQuery, "OSTRDESC", INT2NUM(RDBQOSTRDESC));
136
+ rb_define_const(cQuery, "ONUMASC", INT2NUM(RDBQONUMASC));
137
+ rb_define_const(cQuery, "ONUMDESC", INT2NUM(RDBQONUMDESC));
138
+
139
+ rb_define_private_method(cQuery, "initialize", cQuery_initialize, 1);
140
+ rb_define_method(cQuery, "addcond", cQuery_addcond, 3);
141
+ rb_define_alias(cQuery, "condition", "addcond");
142
+ rb_define_method(cQuery, "setorder", cQuery_setorder, 2);
143
+ rb_define_alias(cQuery, "order_by", "setorder");
144
+ rb_define_method(cQuery, "setmax", cQuery_setmax, 1);
145
+ rb_define_alias(cQuery, "limit", "setmax");
146
+ rb_define_method(cQuery, "search", cQuery_search, 0);
147
+ rb_define_method(cQuery, "searchout", cQuery_searchout, 0);
148
+ rb_define_method(cQuery, "get", cQuery_get, 0);
149
+ }
@@ -0,0 +1,9 @@
1
+ #ifndef RUBY_TOKYOTYRANT_QUERY
2
+ #define RUBY_TOKYOTYRANT_QUERY
3
+
4
+ #include <tokyo_tyrant.h>
5
+ #include <ctype.h>
6
+
7
+ void init_query();
8
+
9
+ #endif
@@ -0,0 +1,259 @@
1
+ #include <tokyo_tyrant_table.h>
2
+
3
+ static VALUE cTable_put_method(VALUE vself, VALUE vkey, VALUE vcols, int method){
4
+ int ecode;
5
+ bool res;
6
+ TCMAP *cols;
7
+ TCRDB *db;
8
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
9
+
10
+ vkey = StringValueEx(vkey);
11
+ Check_Type(vcols, T_HASH);
12
+ cols = vhashtomap(vcols);
13
+
14
+ // there's probably a more elegant way yo do this
15
+ switch(method){
16
+ case TTPUT:
17
+ res = tcrdbtblput(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey), cols);
18
+ break;
19
+ case TTPUTKEEP:
20
+ res = tcrdbtblputkeep(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey), cols);
21
+ break;
22
+ case TTPUTCAT:
23
+ res = tcrdbtblputcat(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey), cols);
24
+ break;
25
+ default :
26
+ res = false;
27
+ break;
28
+ }
29
+
30
+ if(!res){
31
+ ecode = tcrdbecode(db);
32
+ rb_raise(eTokyoTyrantError, "put error: %s\n", tcrdberrmsg(ecode));
33
+ }
34
+ tcmapdel(cols);
35
+
36
+ return Qtrue;
37
+ }
38
+
39
+ static VALUE cTable_put(VALUE vself, VALUE vkey, VALUE vcols){
40
+ return cTable_put_method(vself, vkey, vcols, TTPUT);
41
+ }
42
+
43
+ static VALUE cTable_mput(VALUE vself, VALUE vhash){
44
+ int i, num, j;
45
+ VALUE vary, vkeys, vkey, vval;
46
+ TCRDB *db;
47
+ TCLIST *list;
48
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
49
+
50
+ vkeys = rb_funcall(vhash, rb_intern("keys"), 0);
51
+ num = RARRAY_LEN(vkeys);
52
+ list = tclistnew2(num * 2);
53
+ for(i = 0; i < num; i++){
54
+ vkey = rb_ary_entry(vkeys, i);
55
+ vval = rb_hash_aref(vhash, vkey);
56
+
57
+ vkey = StringValueEx(vkey);
58
+ tclistpush2(list, RSTRING_PTR(vkey));
59
+
60
+ TCLIST *cols = vhashtolist(vval);
61
+ TCXSTR *xstr = tcxstrnew();
62
+
63
+ for(j = 0; j < tclistnum(cols); j++){
64
+ int rsiz;
65
+ const char *rbuf = tclistval(cols, j, &rsiz);
66
+ if (j > 0) tcxstrcat(xstr, "\0", 1);
67
+ tcxstrcat(xstr, rbuf, rsiz);
68
+ }
69
+ tclistpush(list, tcxstrptr(xstr), tcxstrsize(xstr));
70
+ tcxstrdel(xstr);
71
+ }
72
+ list = tcrdbmisc(db, "putlist", 0, list);
73
+ vary = listtovary(list);
74
+ tclistdel(list);
75
+ return vary;
76
+ }
77
+
78
+ static VALUE cTable_putkeep(VALUE vself, VALUE vkey, VALUE vcols){
79
+ return cTable_put_method(vself, vkey, vcols, TTPUTKEEP);
80
+ }
81
+
82
+ static VALUE cTable_putcat(VALUE vself, VALUE vkey, VALUE vcols){
83
+ return cTable_put_method(vself, vkey, vcols, TTPUTCAT);
84
+ }
85
+
86
+ static VALUE cTable_out(VALUE vself, VALUE vkey){
87
+ TCRDB *db;
88
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
89
+ vkey = StringValueEx(vkey);
90
+
91
+ return tcrdbtblout(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey)) ? Qtrue : Qfalse;
92
+ }
93
+
94
+ static VALUE cTable_get(VALUE vself, VALUE vkey){
95
+ VALUE vcols;
96
+ TCRDB *db;
97
+ TCMAP *cols;
98
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
99
+ vkey = StringValueEx(vkey);
100
+
101
+ if(!(cols = tcrdbtblget(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey)))) return Qnil;
102
+ vcols = maptovhashsym(cols);
103
+ tcmapdel(cols);
104
+ return vcols;
105
+ }
106
+
107
+ static VALUE cTable_mget(int argc, VALUE *argv, VALUE vself){
108
+ const char *kbuf, *vbuf;
109
+ int ksiz, vsiz;
110
+ VALUE vkeys, vhash, vcols, vvalue;
111
+ TCRDB *db;
112
+ TCMAP *recs, *cols;
113
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
114
+ rb_scan_args(argc, argv, "*", &vkeys);
115
+
116
+ // I really hope there is a better way to do this
117
+ if (RARRAY_LEN(vkeys) == 1) {
118
+ vvalue = rb_ary_entry(vkeys, 0);
119
+ switch (TYPE(vvalue)){
120
+ case T_STRING:
121
+ case T_FIXNUM:
122
+ break;
123
+ case T_ARRAY:
124
+ vkeys = vvalue;
125
+ break;
126
+ case T_OBJECT:
127
+ vkeys = rb_convert_type(vvalue, T_ARRAY, "Array", "to_a");
128
+ break;
129
+ }
130
+ }
131
+ Check_Type(vkeys, T_ARRAY);
132
+
133
+ recs = varytomap(vkeys);
134
+ if(!tcrdbget3(db, recs)) return Qnil;
135
+ vhash = rb_hash_new();
136
+ tcmapiterinit(recs);
137
+ while((kbuf = tcmapiternext(recs, &ksiz)) != NULL){
138
+ vbuf = tcmapiterval(kbuf, &vsiz);
139
+ cols = tcstrsplit4(vbuf, vsiz);
140
+ vcols = maptovhashsym(cols);
141
+ rb_hash_aset(vhash, rb_str_new(kbuf, ksiz), vcols);
142
+ }
143
+ tcmapdel(recs);
144
+ return vhash;
145
+ }
146
+
147
+ static VALUE cTable_setindex(VALUE vself, VALUE vname, VALUE vtype){
148
+ TCRDB *db;
149
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
150
+ Check_Type(vname, T_STRING);
151
+ return tcrdbtblsetindex(db, RSTRING_PTR(vname), NUM2INT(vtype)) ? Qtrue : Qfalse;
152
+ }
153
+
154
+ static VALUE cTable_genuid(VALUE vself){
155
+ TCRDB *db;
156
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
157
+ return LL2NUM(tcrdbtblgenuid(db));
158
+ }
159
+
160
+ static VALUE cTable_fetch(int argc, VALUE *argv, VALUE vself){
161
+ VALUE vkey, vdef, vval;
162
+ TCRDB *db;
163
+ TCMAP *cols;
164
+ rb_scan_args(argc, argv, "11", &vkey, &vdef);
165
+ vkey = StringValueEx(vkey);
166
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
167
+ if((cols = tcrdbtblget(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey))) != NULL){
168
+ vval = maptovhashsym(cols);
169
+ tcmapdel(cols);
170
+ } else {
171
+ vval = vdef;
172
+ }
173
+ return vval;
174
+ }
175
+
176
+ static VALUE cTable_each(VALUE vself){
177
+ VALUE vrv;
178
+ TCRDB *db;
179
+ TCMAP *cols;
180
+ char *kbuf;
181
+ int ksiz;
182
+ if(rb_block_given_p() != Qtrue) rb_raise(rb_eArgError, "no block given");
183
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
184
+ vrv = Qnil;
185
+ tcrdbiterinit(db);
186
+ while((kbuf = tcrdbiternext(db, &ksiz)) != NULL){
187
+ if((cols = tcrdbtblget(db, kbuf, ksiz)) != NULL){
188
+ vrv = rb_yield_values(2, rb_str_new(kbuf, ksiz), maptovhashsym(cols));
189
+ tcmapdel(cols);
190
+ } else {
191
+ vrv = rb_yield_values(2, rb_str_new(kbuf, ksiz), Qnil);
192
+ }
193
+ tcfree(kbuf);
194
+ }
195
+ return vrv;
196
+ }
197
+
198
+ static VALUE cTable_each_value(VALUE vself){
199
+ VALUE vrv;
200
+ TCRDB *db;
201
+ TCMAP *cols;
202
+ char *kbuf;
203
+ int ksiz;
204
+ if(rb_block_given_p() != Qtrue) rb_raise(rb_eArgError, "no block given");
205
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
206
+ vrv = Qnil;
207
+ tcrdbiterinit(db);
208
+ while((kbuf = tcrdbiternext(db, &ksiz)) != NULL){
209
+ if((cols = tcrdbtblget(db, kbuf, ksiz)) != NULL){
210
+ vrv = rb_yield(maptovhashsym(cols));
211
+ tcmapdel(cols);
212
+ } else {
213
+ vrv = rb_yield(Qnil);
214
+ }
215
+ tcfree(kbuf);
216
+ }
217
+ return vrv;
218
+ }
219
+
220
+ static VALUE cTable_values(VALUE vself){
221
+ VALUE vary;
222
+ TCRDB *db;
223
+ TCMAP *cols;
224
+ char *kxstr;
225
+ int ksiz;
226
+ Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db);
227
+ vary = rb_ary_new2(tcrdbrnum(db));
228
+ tcrdbiterinit(db);
229
+ while((kxstr = tcrdbiternext(db, &ksiz)) != NULL){
230
+ cols = tcrdbtblget(db, kxstr, ksiz);
231
+ rb_ary_push(vary, maptovhashsym(cols));
232
+ tcmapdel(cols);
233
+ }
234
+ return vary;
235
+ }
236
+
237
+ static VALUE cTable_query(VALUE vself){
238
+ return rb_class_new_instance(1, &vself, rb_path2class("TokyoTyrant::Query"));
239
+ }
240
+
241
+ void init_table(){
242
+ rb_define_method(cTable, "mput", cTable_mput, 1);
243
+ rb_define_method(cTable, "put", cTable_put, 2);
244
+ rb_define_alias(cTable, "[]=", "put");
245
+ rb_define_method(cTable, "putkeep", cTable_putkeep, 2);
246
+ rb_define_method(cTable, "putcat", cTable_putcat, 2);
247
+ rb_define_method(cTable, "out", cTable_out, 1);
248
+ rb_define_method(cTable, "get", cTable_get, 1);
249
+ rb_define_method(cTable, "mget", cTable_mget, -1);
250
+ rb_define_alias(cTable, "[]", "get");
251
+ rb_define_method(cTable, "setindex", cTable_setindex, 2);
252
+ rb_define_method(cTable, "genuid", cTable_genuid, 0);
253
+ rb_define_method(cTable, "fetch", cTable_fetch, -1);
254
+ rb_define_method(cTable, "each", cTable_each, 0);
255
+ rb_define_alias(cTable, "each_pair", "each");
256
+ rb_define_method(cTable, "each_value", cTable_each_value, 0);
257
+ rb_define_method(cTable, "values", cTable_values, 0);
258
+ rb_define_method(cTable, "query", cTable_query, 0);
259
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef RUBY_TOKYOTYRANT_TABLE
2
+ #define RUBY_TOKYOTYRANT_TABLE
3
+
4
+ #include <tokyo_tyrant.h>
5
+
6
+ void init_table();
7
+
8
+ #endif
data/spec/plu_db.rb ADDED
@@ -0,0 +1,538 @@
1
+ $codes = {
2
+ '3000' => { :code => '3000', :type => 'Apple', :variety => 'Alkmene' },
3
+ '3001' => { :code => '3001', :type => 'Apple', :variety => 'Aurora / Southern Rose, small' },
4
+ '3002' => { :code => '3002', :type => 'Apple', :variety => 'Cantared' },
5
+ '3003' => { :code => '3003', :type => 'Apple', :variety => 'D\'Estivale' },
6
+ '3004' => { :code => '3004', :type => 'Apple', :variety => 'Discovery' },
7
+ '3005' => { :code => '3005', :type => 'Apple', :variety => 'Golden Delicious Blush' },
8
+ '3006' => { :code => '3006', :type => 'Apple', :variety => 'Ingrid Marie' },
9
+ '3007' => { :code => '3007', :type => 'Apple', :variety => 'Lochbuie' },
10
+ '3008' => { :code => '3008', :type => 'Apple', :variety => 'Rubinette' },
11
+ '3009' => { :code => '3009', :type => 'Apple', :variety => 'Russet' },
12
+ '3011' => { :code => '3011', :type => 'Apple', :variety => 'Worcester' },
13
+ '3012' => { :code => '3012', :type => 'Pear', :variety => 'Abate Fetel' },
14
+ '3013' => { :code => '3013', :type => 'Pear', :variety => 'Beurre Hardy' },
15
+ '3014' => { :code => '3014', :type => 'Pear', :variety => 'Bon Rouge' },
16
+ '3015' => { :code => '3015', :type => 'Pear', :variety => 'Clara Friis' },
17
+ '3016' => { :code => '3016', :type => 'Pear', :variety => 'Concorde' },
18
+ '3017' => { :code => '3017', :type => 'Pear', :variety => 'Conference' },
19
+ '3018' => { :code => '3018', :type => 'Pear', :variety => 'Durondeau' },
20
+ '3019' => { :code => '3019', :type => 'Pear', :variety => 'Flamingo' },
21
+ '3020' => { :code => '3020', :type => 'Pear', :variety => 'General Leclerc' },
22
+ '3021' => { :code => '3021', :type => 'Pear', :variety => 'Guyot' },
23
+ '3022' => { :code => '3022', :type => 'Pear', :variety => 'Josephine' },
24
+ '3024' => { :code => '3024', :type => 'Pear', :variety => 'Rocha' },
25
+ '3025' => { :code => '3025', :type => 'Pear', :variety => 'Rosemarie' },
26
+ '3026' => { :code => '3026', :type => 'Pear', :variety => 'Triumph de Vienne' },
27
+ '3027' => { :code => '3027', :type => 'Orange', :variety => 'Shamouti' },
28
+ '3030' => { :code => '3030', :type => 'Tangerine / Mandarin', :variety => 'Nova' },
29
+ '3031' => { :code => '3031', :type => 'Tangerine / Mandarin', :variety => 'Jamaican Tangor' },
30
+ '3037' => { :code => '3037', :type => 'Pineapple', :variety => 'Queen' },
31
+ '3038' => { :code => '3038', :type => 'Passion Fruit', :variety => 'Granadilla / Grenadilla Orange' },
32
+ '3039' => { :code => '3039', :type => 'Berries', :variety => 'Gooseberry / Ground Cherry / Physalis / Cape' },
33
+ '3041' => { :code => '3041', :type => 'Rambutan', :variety => '' },
34
+ '3042' => { :code => '3042', :type => 'Mangosteen', :variety => '' },
35
+ '3043' => { :code => '3043', :type => 'Grape', :variety => 'Italian, seeded' },
36
+ '3046' => { :code => '3046', :type => 'Date', :variety => 'Fresh / Frozen' },
37
+ '3047' => { :code => '3047', :type => 'Date', :variety => 'Medjool' },
38
+ '3048' => { :code => '3048', :type => 'Bean', :variety => 'Helda / Flat' },
39
+ '3049' => { :code => '3049', :type => 'Bean', :variety => 'Fine' },
40
+ '3050' => { :code => '3050', :type => 'Cabbage', :variety => 'Dutch White / Winter White' },
41
+ '3051' => { :code => '3051', :type => 'Cabbage', :variety => 'Spring Cabbage / Spring Greens' },
42
+ '3052' => { :code => '3052', :type => 'Garlic', :variety => 'String' },
43
+ '3053' => { :code => '3053', :type => 'Parsnip', :variety => 'Baby' },
44
+ '3059' => { :code => '3059', :type => 'Squash', :variety => 'Crown Prince' },
45
+ '3060' => { :code => '3060', :type => 'Squash', :variety => 'Vegetable Marrow' },
46
+ '3061' => { :code => '3061', :type => 'Tomato', :variety => 'Beef / Beefsteak' },
47
+ '3062' => { :code => '3062', :type => 'Herbs', :variety => 'Bay Leaves' },
48
+ '3063' => { :code => '3063', :type => 'Herbs', :variety => 'Fennel Leaves' },
49
+ '3064' => { :code => '3064', :type => 'Herbs', :variety => 'Aloe Vera Leaves' },
50
+ '3072' => { :code => '3072', :type => 'Apple', :variety => 'Lady' },
51
+ '3073' => { :code => '3073', :type => 'Apple', :variety => 'Macoun' },
52
+ '3074' => { :code => '3074', :type => 'Apple', :variety => 'Greening / Rhode Island' },
53
+ '3075' => { :code => '3075', :type => 'Apple', :variety => 'Baldwin' },
54
+ '3076' => { :code => '3076', :type => 'Apple', :variety => 'Melrose' },
55
+ '3077' => { :code => '3077', :type => 'Apple', :variety => 'Northern Spy' },
56
+ '3078' => { :code => '3078', :type => 'Apple', :variety => 'Liberty' },
57
+ '3080' => { :code => '3080', :type => 'Avocado', :variety => 'Pinkerton' },
58
+ '3081' => { :code => '3081', :type => 'Berries', :variety => 'Saskatoons' },
59
+ '3082' => { :code => '3082', :type => 'Broccoli', :variety => 'Crowns' },
60
+ '3083' => { :code => '3083', :type => 'Brussels Sprout', :variety => 'Stalk' },
61
+ '3084' => { :code => '3084', :type => 'Herbs', :variety => 'Chervil' },
62
+ '3088' => { :code => '3088', :type => 'Currant', :variety => 'Red' },
63
+ '3089' => { :code => '3089', :type => 'Eggplant', :variety => 'Chinese' },
64
+ '3090' => { :code => '3090', :type => 'Eggplant', :variety => 'Thai' },
65
+ '3091' => { :code => '3091', :type => 'Gobo Root', :variety => 'Gobo Root / Burdock Root' },
66
+ '3092' => { :code => '3092', :type => 'Grapefruit', :variety => 'Blanco / Sweetie' },
67
+ '3099' => { :code => '3099', :type => 'Lotus Root', :variety => '' },
68
+ '3100' => { :code => '3100', :type => 'Melon', :variety => 'Gold Honeydew' },
69
+ '3101' => { :code => '3101', :type => 'Melon', :variety => 'Piel de Sapo' },
70
+ '3102' => { :code => '3102', :type => 'Mushroom', :variety => 'Morel' },
71
+ '3103' => { :code => '3103', :type => 'Mushroom', :variety => 'Enoki' },
72
+ '3105' => { :code => '3105', :type => 'Nuts', :variety => 'Cashews' },
73
+ '3106' => { :code => '3106', :type => 'Nuts', :variety => 'Macadamia' },
74
+ '3109' => { :code => '3109', :type => 'Orange', :variety => 'Seville / Marmalade type' },
75
+ '3111' => { :code => '3111', :type => 'Papaya / Pawpaw', :variety => 'Red-Fleshed / Solo Sunrise' },
76
+ '3112' => { :code => '3112', :type => 'Papaya / Pawpaw', :variety => 'Meridol' },
77
+ '3113' => { :code => '3113', :type => 'Peach', :variety => 'Donut / Flat Chinese' },
78
+ '3118' => { :code => '3118', :type => 'Pear', :variety => 'Starkrimson' },
79
+ '3125' => { :code => '3125', :type => 'Pepper', :variety => 'Habanero' },
80
+ '3126' => { :code => '3126', :type => 'Plumcot', :variety => '' },
81
+ '3130' => { :code => '3130', :type => 'Pumpkin', :variety => 'Jumbo' },
82
+ '3131' => { :code => '3131', :type => 'Pumpkin', :variety => 'Decorative / Painted' },
83
+ '3132' => { :code => '3132', :type => 'Pumpkin', :variety => 'White' },
84
+ '3134' => { :code => '3134', :type => 'Pumpkin', :variety => 'Pie Pumpkin' },
85
+ '3135' => { :code => '3135', :type => 'Pumpkin', :variety => 'Ornamental' },
86
+ '3136' => { :code => '3136', :type => 'Sapote', :variety => 'Sapodillo / Nispero' },
87
+ '3139' => { :code => '3139', :type => 'Herbs', :variety => 'Savory' },
88
+ '3140' => { :code => '3140', :type => 'Squash', :variety => 'Cucuzza' },
89
+ '3141' => { :code => '3141', :type => 'Squash', :variety => 'Opo' },
90
+ '3142' => { :code => '3142', :type => 'Squash', :variety => 'Carnival' },
91
+ '3144' => { :code => '3144', :type => 'Tangerine / Mandarin', :variety => 'Fall Glo' },
92
+ '3152' => { :code => '3152', :type => 'Grapefruit', :variety => 'Melogold' },
93
+ '3160' => { :code => '3160', :type => 'Choy', :variety => 'Gai Lan / Chinese Broccoli' },
94
+ '3162' => { :code => '3162', :type => 'Choy', :variety => 'On Choy / Water Spinach' },
95
+ '3163' => { :code => '3163', :type => 'Choy', :variety => 'Bok Choy / Pak Choy / Shanghai' },
96
+ '3164' => { :code => '3164', :type => 'Choy', :variety => 'Yu Choy' },
97
+ '3165' => { :code => '3165', :type => 'Radicchio', :variety => 'Treviso' },
98
+ '3166' => { :code => '3166', :type => 'Cabbage', :variety => 'Tuscan' },
99
+ '3167' => { :code => '3167', :type => 'Endive / Chicory', :variety => 'Frisee' },
100
+ '3168' => { :code => '3168', :type => 'Radicchio', :variety => 'Castlelfranco' },
101
+ '3169' => { :code => '3169', :type => 'Lettuce', :variety => 'Catalogna' },
102
+ '3271' => { :code => '3271', :type => 'Apple', :variety => 'Virginia Gold' },
103
+ '3272' => { :code => '3272', :type => 'Apple', :variety => 'Sommerfeld' },
104
+ '3273' => { :code => '3273', :type => 'Beet', :variety => 'Golden' },
105
+ '3277' => { :code => '3277', :type => 'Broccoli', :variety => 'Baby' },
106
+ '3278' => { :code => '3278', :type => 'Plum', :variety => 'InterSpecific' },
107
+ '3279' => { :code => '3279', :type => 'Kiwi Fruit', :variety => 'Golden' },
108
+ '3283' => { :code => '3283', :type => 'Apple', :variety => 'Honeycrisp' },
109
+ '3286' => { :code => '3286', :type => 'Onion', :variety => 'Sweet, red, Italian, [flat]' },
110
+ '3287' => { :code => '3287', :type => 'Banana', :variety => 'Hawaiian Plantain' },
111
+ '3289' => { :code => '3289', :type => 'Melon', :variety => 'Sprite' },
112
+ '3291' => { :code => '3291', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, small' },
113
+ '3292' => { :code => '3292', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, large' },
114
+ '3297' => { :code => '3297', :type => 'Apple', :variety => 'Scired / Pacific Queen' },
115
+ '3303' => { :code => '3303', :type => 'Papaya / Pawpaw', :variety => 'Babaco' },
116
+ '3304' => { :code => '3304', :type => 'Berries', :variety => 'Loganberries' },
117
+ '3305' => { :code => '3305', :type => 'Currant', :variety => 'Black' },
118
+ '3309' => { :code => '3309', :type => 'Orange', :variety => 'Lima' },
119
+ '3310' => { :code => '3310', :type => 'Orange', :variety => 'Pera' },
120
+ '3311' => { :code => '3311', :type => 'Passion Fruit', :variety => 'Curuba / Banana' },
121
+ '3312' => { :code => '3312', :type => 'Passion Fruit', :variety => 'Granadilla Yellow / Maracuya' },
122
+ '3320' => { :code => '3320', :type => 'Broccoli', :variety => 'Romanesco / Broccoflower / Caulibroc' },
123
+ '3325' => { :code => '3325', :type => 'Lettuce', :variety => 'Lollo Bionda / Coral Green' },
124
+ '3326' => { :code => '3326', :type => 'Lettuce', :variety => 'Lollo Rossa / Coral Red' },
125
+ '3327' => { :code => '3327', :type => 'Lettuce', :variety => 'Mignonette, compact red-tinged butterhead varieties' },
126
+ '3328' => { :code => '3328', :type => 'Lettuce', :variety => 'Mixed, small-leaf, salad [eg, Sucrine / Mesclun / Rocket / Arugula]' },
127
+ '3332' => { :code => '3332', :type => 'Spinach', :variety => 'Baby' },
128
+ '3336' => { :code => '3336', :type => 'Tomato', :variety => 'Cocktail / Intermediate Red / Plum / Italian / Saladette / Roma, on the vine [Truss]' },
129
+ '3337' => { :code => '3337', :type => 'Fig', :variety => 'dried' },
130
+ '3338' => { :code => '3338', :type => 'Herbs', :variety => 'Anise' },
131
+ '3339' => { :code => '3339', :type => 'Apple', :variety => 'Belchard / Chantecler' },
132
+ '3340' => { :code => '3340', :type => 'Apple', :variety => 'Bertanne / Golden Russet' },
133
+ '3341' => { :code => '3341', :type => 'Apple', :variety => 'Charles Ross' },
134
+ '3342' => { :code => '3342', :type => 'Apple', :variety => 'Delblush / Tentation' },
135
+ '3343' => { :code => '3343', :type => 'Apple', :variety => 'Dessert' },
136
+ '3346' => { :code => '3346', :type => 'Apple', :variety => 'Holstein' },
137
+ '3347' => { :code => '3347', :type => 'Apple', :variety => 'Laxtons Fortune' },
138
+ '3348' => { :code => '3348', :type => 'Apple', :variety => 'Lord Lambourne' },
139
+ '3349' => { :code => '3349', :type => 'Apple', :variety => 'Michaelmas Red' },
140
+ '3352' => { :code => '3352', :type => 'Apple', :variety => 'Reinettes and Heritage varieties' },
141
+ '3353' => { :code => '3353', :type => 'Apple', :variety => 'St. Edmunds Pippin' },
142
+ '3359' => { :code => '3359', :type => 'Grape', :variety => 'Chasselas' },
143
+ '3360' => { :code => '3360', :type => 'Grape', :variety => 'Muscat de Hambourg' },
144
+ '3363' => { :code => '3363', :type => 'Mango', :variety => 'Bowen & Kensington Pride, extra large' },
145
+ '3364' => { :code => '3364', :type => 'Mango', :variety => 'R2E2,ArtwoEetwo, extra large' },
146
+ '3366' => { :code => '3366', :type => 'Madro?a', :variety => '' },
147
+ '3368' => { :code => '3368', :type => 'Melon', :variety => 'Ogen' },
148
+ '3369' => { :code => '3369', :type => 'Nectarine', :variety => 'Nectavigne, red flesh' },
149
+ '3370' => { :code => '3370', :type => 'Orange', :variety => 'Maltaise' },
150
+ '3371' => { :code => '3371', :type => 'Orange', :variety => 'Salustiana' },
151
+ '3372' => { :code => '3372', :type => 'Orange', :variety => 'Navelate / other late Navel varieties' },
152
+ '3373' => { :code => '3373', :type => 'Orange', :variety => 'Navelina, including Newhall' },
153
+ '3375' => { :code => '3375', :type => 'Peach', :variety => 'Peche de Vigne / Sanguine, red flesh' },
154
+ '3376' => { :code => '3376', :type => 'Pear', :variety => 'Alexander Lucas' },
155
+ '3377' => { :code => '3377', :type => 'Pear', :variety => 'Louise Bonne' },
156
+ '3378' => { :code => '3378', :type => 'Pear', :variety => 'Santa Maria' },
157
+ '3379' => { :code => '3379', :type => 'Pineapple', :variety => 'Mini' },
158
+ '3380' => { :code => '3380', :type => 'Pineapple', :variety => 'Perola' },
159
+ '3381' => { :code => '3381', :type => 'Soursop', :variety => '' },
160
+ '3382' => { :code => '3382', :type => 'Apple', :variety => 'Sugar Apple' },
161
+ '3390' => { :code => '3390', :type => 'Arracach', :variety => '' },
162
+ '3391' => { :code => '3391', :type => 'Artichoke', :variety => 'Rouge Salambo, red' },
163
+ '3397' => { :code => '3397', :type => 'Cabbage', :variety => 'Summer, pointed type' },
164
+ '3398' => { :code => '3398', :type => 'Pea', :variety => 'Chick Pea / Garbanzo' },
165
+ '3401' => { :code => '3401', :type => 'Garlic', :variety => 'One-clove types' },
166
+ '3404' => { :code => '3404', :type => 'Mushroom', :variety => 'Cep' },
167
+ '3405' => { :code => '3405', :type => 'Mushroom', :variety => 'Fairy Ring Champignon' },
168
+ '3406' => { :code => '3406', :type => 'Mushroom', :variety => 'Grey Tricholoma' },
169
+ '3407' => { :code => '3407', :type => 'Mushroom', :variety => 'Grisette' },
170
+ '3408' => { :code => '3408', :type => 'Mushroom', :variety => 'Horn of Plenty / Black Trumpet' },
171
+ '3409' => { :code => '3409', :type => 'Mushroom', :variety => 'Pioppino' },
172
+ '3410' => { :code => '3410', :type => 'Mushroom', :variety => 'Saffron Milk-Cap' },
173
+ '3411' => { :code => '3411', :type => 'Mushroom', :variety => 'Sheep Polypore' },
174
+ '3413' => { :code => '3413', :type => 'Pepper', :variety => 'Tabasco' },
175
+ '3419' => { :code => '3419', :type => 'Herbs', :variety => 'Borage' },
176
+ '3421' => { :code => '3421', :type => 'Melon', :variety => 'Mini, seedless [3-7 pounds]' },
177
+ '3422' => { :code => '3422', :type => 'Apricot', :variety => 'InterSpecific' },
178
+ '3423' => { :code => '3423', :type => 'Tomato', :variety => 'Heirloom' },
179
+ '3424' => { :code => '3424', :type => 'Carrot', :variety => 'Purple / Red / Beta Sweet' },
180
+ '4033' => { :code => '4033', :type => 'LEMON', :variety => 'Lemons' },
181
+ '4034' => { :code => '4034', :type => 'MELON', :variety => 'Honeydew' },
182
+ '4035' => { :code => '4035', :type => 'CITRUS', :variety => 'Nectarines' },
183
+ '4036' => { :code => '4036', :type => 'NECTARINE', :variety => 'California Nectarines' },
184
+ '4040' => { :code => '4040', :type => 'PLUM', :variety => 'Black Plums' },
185
+ '4041' => { :code => '4041', :type => 'PLUM', :variety => 'Plums' },
186
+ '4042' => { :code => '4042', :type => 'PLUM', :variety => 'Large Plums' },
187
+ '4045' => { :code => '4045', :type => 'BERRIES', :variety => 'Cherries' },
188
+ '4048' => { :code => '4048', :type => 'MELON', :variety => 'Lime' },
189
+ '4050' => { :code => '4050', :type => 'MELON', :variety => 'Cantelope' },
190
+ '4051' => { :code => '4051', :type => 'MANGO', :variety => '' },
191
+ '4053' => { :code => '4053', :type => 'LEMON', :variety => 'lemons' },
192
+ '4054' => { :code => '4054', :type => 'Berries', :variety => 'Raspberries, red' },
193
+ '4055' => { :code => '4055', :type => 'Tangerine / Mandarin', :variety => '' },
194
+ '4060' => { :code => '4060', :type => 'BROCOLLI', :variety => 'Broccoli' },
195
+ '4061' => { :code => '4061', :type => 'LETTUCE', :variety => 'Iceberg lettuce' },
196
+ '4062' => { :code => '4062', :type => 'CUCUMBER', :variety => 'Cucumbers' },
197
+ '4064' => { :code => '4064', :type => 'TOMATO', :variety => 'Tomatoes' },
198
+ '4065' => { :code => '4065', :type => 'PEPPER', :variety => 'Green Peppers' },
199
+ '4066' => { :code => '4066', :type => 'BEAN', :variety => 'Green Beans' },
200
+ '4067' => { :code => '4067', :type => 'SQUASH', :variety => 'green squash' },
201
+ '4068' => { :code => '4068', :type => 'ONION', :variety => 'Green Scallions (bunch)' },
202
+ '4069' => { :code => '4069', :type => 'CABBAGE', :variety => 'Green Cabbage' },
203
+ '4070' => { :code => '4070', :type => 'CELERY', :variety => '' },
204
+ '4071' => { :code => '4071', :type => 'POTATO', :variety => 'Red Potatoes' },
205
+ '4072' => { :code => '4072', :type => 'POTATO', :variety => 'Russet Potatoes' },
206
+ '4075' => { :code => '4075', :type => 'LETTUCE', :variety => 'Red Leaf Lettuce' },
207
+ '4076' => { :code => '4076', :type => 'LETTUCE', :variety => 'Green Leaf Lettuce' },
208
+ '4078' => { :code => '4078', :type => 'CORN', :variety => '' },
209
+ '4079' => { :code => '4079', :type => 'Cauliflower', :variety => '' },
210
+ '4080' => { :code => '4080', :type => 'ASPARAGUS', :variety => '' },
211
+ '4081' => { :code => '4081', :type => 'EGGPLANT', :variety => '' },
212
+ '4082' => { :code => '4082', :type => 'ONION', :variety => 'Red Onions' },
213
+ '4084' => { :code => '4084', :type => 'Artichoke', :variety => 'Artichokes' },
214
+ '4086' => { :code => '4086', :type => 'Squash', :variety => 'Yellow Zucchini / Gold Bar / Yellow Courgette' },
215
+ '4087' => { :code => '4087', :type => 'TOMATO', :variety => 'Plum Tomatoes' },
216
+ '4088' => { :code => '4088', :type => 'PEPPER', :variety => 'Red peppers' },
217
+ '4089' => { :code => '4089', :type => 'RADISH', :variety => 'Radishes (bunch)' },
218
+ '4090' => { :code => '4090', :type => 'SPINICH', :variety => 'Spinach Bunch' },
219
+ '4092' => { :code => '4092', :type => 'Pea', :variety => 'Chinese Snow Pea / Pea Pod / Mange Tout' },
220
+ '4094' => { :code => '4094', :type => 'Carrot', :variety => 'Bunch' },
221
+ '4095' => { :code => '4095', :type => 'Turnip / Rutabaga / Swede', :variety => 'Yellow' },
222
+ '4098' => { :code => '4098', :type => 'Apple', :variety => 'Akane, small' },
223
+ '4099' => { :code => '4099', :type => 'Apple', :variety => 'Akane, large' },
224
+ '4101' => { :code => '4101', :type => 'Apple', :variety => 'Braeburn, small' },
225
+ '4103' => { :code => '4103', :type => 'APPLE', :variety => 'Braeburn Apples' },
226
+ '4105' => { :code => '4105', :type => 'Apple', :variety => 'Cox Orange Pippin' },
227
+ '4107' => { :code => '4107', :type => 'Apple', :variety => 'Crab' },
228
+ '4120' => { :code => '4120', :type => 'APPLE', :variety => 'Idared Apples/Fiesta' },
229
+ '4124' => { :code => '4124', :type => 'APPLE', :variety => 'Empire Apples' },
230
+ '4133' => { :code => '4133', :type => 'APPLE', :variety => 'Small Gala Apple' },
231
+ '4152' => { :code => '4152', :type => 'APPLE', :variety => 'Macintosh Apples' },
232
+ '4159' => { :code => '4159', :type => 'Onion', :variety => 'Vidalia' },
233
+ '4161' => { :code => '4161', :type => 'Onion', :variety => 'Texas Sweet' },
234
+ '4163' => { :code => '4163', :type => 'Onion', :variety => 'Walla Walla' },
235
+ '4164' => { :code => '4164', :type => 'Onion', :variety => 'Maui' },
236
+ '4165' => { :code => '4165', :type => 'Onion', :variety => 'California Sweet' },
237
+ '4166' => { :code => '4166', :type => 'Onion', :variety => 'Other Sweet' },
238
+ '4176' => { :code => '4176', :type => 'Apple', :variety => 'Southern Snap' },
239
+ '4182' => { :code => '4182', :type => 'Apple', :variety => 'Sturmer Pippin' },
240
+ '4218' => { :code => '4218', :type => 'APRICOT', :variety => 'Apricots' },
241
+ '4220' => { :code => '4220', :type => 'Atemoya', :variety => '' },
242
+ '4225' => { :code => '4225', :type => 'AVACADO', :variety => '' },
243
+ '4226' => { :code => '4226', :type => 'Avocado', :variety => 'Cocktail / Seedless' },
244
+ '4229' => { :code => '4229', :type => 'Banana', :variety => 'Burro' },
245
+ '4230' => { :code => '4230', :type => 'Banana', :variety => 'Dominique' },
246
+ '4231' => { :code => '4231', :type => 'Banana', :variety => 'Green' },
247
+ '4232' => { :code => '4232', :type => 'Banana', :variety => 'Banana Leaves' },
248
+ '4233' => { :code => '4233', :type => 'Banana', :variety => 'Manzano / Apple Banana' },
249
+ '4234' => { :code => '4234', :type => 'Banana', :variety => 'Nino' },
250
+ '4235' => { :code => '4235', :type => 'BANANA', :variety => 'Plantains/Macho' },
251
+ '4236' => { :code => '4236', :type => 'Banana', :variety => 'Red' },
252
+ '4239' => { :code => '4239', :type => 'Berries', :variety => 'Blackberries' },
253
+ '4240' => { :code => '4240', :type => 'Berries', :variety => 'Blueberries' },
254
+ '4241' => { :code => '4241', :type => 'Berries', :variety => 'Boysenberries' },
255
+ '4242' => { :code => '4242', :type => 'Berries', :variety => 'Cranberries' },
256
+ '4243' => { :code => '4243', :type => 'Berries', :variety => 'Gooseberries' },
257
+ '4244' => { :code => '4244', :type => 'Berries', :variety => 'Black Raspberries' },
258
+ '4245' => { :code => '4245', :type => 'Berries', :variety => 'Golden Raspberries' },
259
+ '4248' => { :code => '4248', :type => 'Berries', :variety => 'Quart' },
260
+ '4251' => { :code => '4251', :type => 'Berries', :variety => 'Long-stemmed' },
261
+ '4254' => { :code => '4254', :type => 'Breadfruit', :variety => '' },
262
+ '4255' => { :code => '4255', :type => 'Cactus', :variety => 'Cactus Pear / Prickly Pear' },
263
+ '4256' => { :code => '4256', :type => 'Carambola / Starfruit', :variety => '' },
264
+ '4257' => { :code => '4257', :type => 'Cherimoya', :variety => '' },
265
+ '4258' => { :code => '4258', :type => 'Cherry', :variety => 'Golden / Ranier / White' },
266
+ '4260' => { :code => '4260', :type => 'Coconut', :variety => 'In Husk / Waternut' },
267
+ '4261' => { :code => '4261', :type => 'Coconut', :variety => 'Husked' },
268
+ '4265' => { :code => '4265', :type => 'Feijoa', :variety => '' },
269
+ '4266' => { :code => '4266', :type => 'Fig', :variety => 'Black' },
270
+ '4267' => { :code => '4267', :type => 'Fig', :variety => 'Brown' },
271
+ '4268' => { :code => '4268', :type => 'Fig', :variety => 'White / Green' },
272
+ '4271' => { :code => '4271', :type => 'Grape', :variety => 'Champagne' },
273
+ '4272' => { :code => '4272', :type => 'Grape', :variety => 'Concord' },
274
+ '4299' => { :code => '4299', :type => 'Guava', :variety => '' },
275
+ '4300' => { :code => '4300', :type => 'Homli Fruit', :variety => '' },
276
+ '4302' => { :code => '4302', :type => 'Melon', :variety => 'Horned Melon / Kiwano' },
277
+ '4303' => { :code => '4303', :type => 'Kumquat', :variety => '' },
278
+ '4305' => { :code => '4305', :type => 'Lime', :variety => 'Key, including Mexican / West Indian' },
279
+ '4307' => { :code => '4307', :type => 'Longan', :variety => '' },
280
+ '4308' => { :code => '4308', :type => 'Loquat', :variety => '' },
281
+ '4309' => { :code => '4309', :type => 'Lychee', :variety => '' },
282
+ '4310' => { :code => '4310', :type => 'Mamey', :variety => '' },
283
+ '4311' => { :code => '4311', :type => 'Mango', :variety => 'Green' },
284
+ '4312' => { :code => '4312', :type => 'Mango', :variety => 'Yellow' },
285
+ '4317' => { :code => '4317', :type => 'Melon', :variety => 'Canary / Yellow Honeydew' },
286
+ '4320' => { :code => '4320', :type => 'Melon', :variety => 'Casaba' },
287
+ '4321' => { :code => '4321', :type => 'Melon', :variety => 'Cinnabar' },
288
+ '4322' => { :code => '4322', :type => 'Melon', :variety => 'Crenshaw' },
289
+ '4324' => { :code => '4324', :type => 'Melon', :variety => 'French Afternoon' },
290
+ '4325' => { :code => '4325', :type => 'Melon', :variety => 'French Breakfast' },
291
+ '4326' => { :code => '4326', :type => 'Melon', :variety => 'Galia' },
292
+ '4327' => { :code => '4327', :type => 'Melon', :variety => 'Orange Flesh / Cantaline' },
293
+ '4328' => { :code => '4328', :type => 'Limequat', :variety => '' },
294
+ '4329' => { :code => '4329', :type => 'MELON', :variety => 'Honeydew Melon' },
295
+ '4330' => { :code => '4330', :type => 'Melon', :variety => 'Mayan' },
296
+ '4331' => { :code => '4331', :type => 'Melon', :variety => 'Mickey Lee / Sugarbaby' },
297
+ '4332' => { :code => '4332', :type => 'Melon', :variety => 'Muskmelon' },
298
+ '4333' => { :code => '4333', :type => 'Melon', :variety => 'Pepino' },
299
+ '4334' => { :code => '4334', :type => 'Melon', :variety => 'Persian' },
300
+ '4335' => { :code => '4335', :type => 'Melon', :variety => 'Prince' },
301
+ '4336' => { :code => '4336', :type => 'Melon', :variety => 'Santa Claus' },
302
+ '4337' => { :code => '4337', :type => 'Melon', :variety => 'Saticoy' },
303
+ '4338' => { :code => '4338', :type => 'Melon', :variety => 'Sharlin' },
304
+ '4339' => { :code => '4339', :type => 'Melon', :variety => 'Spanish / Tendral' },
305
+ '4381' => { :code => '4381', :type => 'Orange', :variety => 'Blood' },
306
+ '4382' => { :code => '4382', :type => 'Orange', :variety => 'Juice' },
307
+ '4383' => { :code => '4383', :type => 'Orange', :variety => 'Tangelo Minneola' },
308
+ '4395' => { :code => '4395', :type => 'Papaya / Pawpaw', :variety => 'Cooking / Mexican' },
309
+ '4397' => { :code => '4397', :type => 'Passion Fruit', :variety => 'Purple' },
310
+ '4399' => { :code => '4399', :type => 'Peach', :variety => 'Indian' },
311
+ '4401' => { :code => '4401', :type => 'PEACH', :variety => 'White Peaches' },
312
+ '4402' => { :code => '4402', :type => 'PEACH', :variety => 'Peaches' },
313
+ '4409' => { :code => '4409', :type => 'PEAR', :variety => 'Bartlett Pears' },
314
+ '4410' => { :code => '4410', :type => 'Pear', :variety => 'Bartlett Red / Red Sensation' },
315
+ '4412' => { :code => '4412', :type => 'PEAR', :variety => 'Bosc Pears' },
316
+ '4415' => { :code => '4415', :type => 'Pear', :variety => 'Red' },
317
+ '4418' => { :code => '4418', :type => 'Pear', :variety => 'Forelle / Corella' },
318
+ '4419' => { :code => '4419', :type => 'Pear', :variety => 'French' },
319
+ '4420' => { :code => '4420', :type => 'Pear', :variety => 'King Royal' },
320
+ '4422' => { :code => '4422', :type => 'Pear', :variety => 'Seckel' },
321
+ '4423' => { :code => '4423', :type => 'Pear', :variety => 'Tree Ripened' },
322
+ '4424' => { :code => '4424', :type => 'Pear', :variety => 'Winter Nelis / Honey' },
323
+ '4427' => { :code => '4427', :type => 'Persimmon', :variety => 'Regular / American Persimmon' },
324
+ '4428' => { :code => '4428', :type => 'Persimmon', :variety => 'Japanese / Sharonfruit [Kaki]' },
325
+ '4436' => { :code => '4436', :type => 'Plum', :variety => 'Italian Prune / Sugar' },
326
+ '4447' => { :code => '4447', :type => 'Quince', :variety => '' },
327
+ '4448' => { :code => '4448', :type => 'Tamarindo', :variety => '' },
328
+ '4449' => { :code => '4449', :type => 'Tangerine / Mandarin', :variety => 'Sunburst' },
329
+ '4451' => { :code => '4451', :type => 'Tangerine / Mandarin', :variety => 'Dancy' },
330
+ '4452' => { :code => '4452', :type => 'Tangerine / Mandarin', :variety => 'Fairchild' },
331
+ '4454' => { :code => '4454', :type => 'Tangerine / Mandarin', :variety => 'Kinnow' },
332
+ '4455' => { :code => '4455', :type => 'Tangerine / Mandarin', :variety => 'Mandarin / Royal' },
333
+ '4470' => { :code => '4470', :type => 'Salad Bar', :variety => '' },
334
+ '4497' => { :code => '4497', :type => 'Grape', :variety => 'Sugarone / Autumn, seedless' },
335
+ '4499' => { :code => '4499', :type => 'Grape', :variety => 'Crimson / Majestic' },
336
+ '4514' => { :code => '4514', :type => 'Alfalfa Sprouts', :variety => '' },
337
+ '4515' => { :code => '4515', :type => 'ANISE', :variety => 'Fennel / Florence / Sweet Fennel / Fennel Bulb' },
338
+ '4519' => { :code => '4519', :type => 'Artichoke', :variety => 'Baby / Cocktail' },
339
+ '4524' => { :code => '4524', :type => 'Asparagus', :variety => 'Tips' },
340
+ '4527' => { :code => '4527', :type => 'Bean', :variety => 'Chinese Long / Snake' },
341
+ '4528' => { :code => '4528', :type => 'Bean', :variety => 'Fava / Broad' },
342
+ '4529' => { :code => '4529', :type => 'Bean', :variety => 'Lima' },
343
+ '4530' => { :code => '4530', :type => 'Bean', :variety => 'Pole / Runner / Stick' },
344
+ '4531' => { :code => '4531', :type => 'Bean', :variety => 'Purple Hull' },
345
+ '4532' => { :code => '4532', :type => 'Bean', :variety => 'Shell' },
346
+ '4533' => { :code => '4533', :type => 'Bean', :variety => 'Wax / Yellow' },
347
+ '4534' => { :code => '4534', :type => 'Bean', :variety => 'Winged' },
348
+ '4536' => { :code => '4536', :type => 'Bean', :variety => 'Bean Sprouts / Mung Bean Sprouts' },
349
+ '4537' => { :code => '4537', :type => 'Beet', :variety => 'Baby Golden' },
350
+ '4538' => { :code => '4538', :type => 'Beet', :variety => 'Baby Red' },
351
+ '4539' => { :code => '4539', :type => 'Beet', :variety => 'Bunch' },
352
+ '4540' => { :code => '4540', :type => 'Beet', :variety => 'Loose' },
353
+ '4542' => { :code => '4542', :type => 'Beet', :variety => 'Beet Greens' },
354
+ '4543' => { :code => '4543', :type => 'ENDIVE', :variety => 'Belgium endive' },
355
+ '4545' => { :code => '4545', :type => 'CHOY', :variety => 'Bok Choy' },
356
+ '4546' => { :code => '4546', :type => 'Potato', :variety => 'Boniato / Sweet Potato' },
357
+ '4547' => { :code => '4547', :type => 'Broccoli', :variety => 'Broccoli Rabe / Italian Rapini / Chinese Broccoli / Gai Lan' },
358
+ '4548' => { :code => '4548', :type => 'BROCOLLI', :variety => 'Broccoli Crowns' },
359
+ '4550' => { :code => '4550', :type => 'Brussels Sprout', :variety => '' },
360
+ '4552' => { :code => '4552', :type => 'Cabbage', :variety => 'Chinese / Napa / Wong Bok' },
361
+ '4553' => { :code => '4553', :type => 'Pear', :variety => 'Taylors Gold' },
362
+ '4554' => { :code => '4554', :type => 'Cabbage', :variety => 'Red' },
363
+ '4558' => { :code => '4558', :type => 'Cactus', :variety => 'Cactus Leaves / Nopales / Cactus Pads' },
364
+ '4559' => { :code => '4559', :type => 'Cardoon / Cardoni', :variety => '' },
365
+ '4560' => { :code => '4560', :type => 'Carrot', :variety => 'Baby' },
366
+ '4561' => { :code => '4561', :type => 'Carrot', :variety => 'French' },
367
+ '4562' => { :code => '4562', :type => 'Carrot', :variety => 'Loose' },
368
+ '4563' => { :code => '4563', :type => 'Carrot', :variety => 'Carrot Sticks' },
369
+ '4566' => { :code => '4566', :type => 'Cauliflower', :variety => 'Florettes' },
370
+ '4567' => { :code => '4567', :type => 'Cauliflower', :variety => 'Green' },
371
+ '4568' => { :code => '4568', :type => 'Cauliflower', :variety => 'Purple' },
372
+ '4573' => { :code => '4573', :type => 'Cauliflower', :variety => 'Baby' },
373
+ '4575' => { :code => '4575', :type => 'Celery', :variety => 'Hearts' },
374
+ '4576' => { :code => '4576', :type => 'CELERY', :variety => 'Celery Sticks' },
375
+ '4592' => { :code => '4592', :type => 'Cucumber', :variety => 'Armenian' },
376
+ '4593' => { :code => '4593', :type => 'Cucumber', :variety => 'English / Hot House / Long Seedless / Telegraph / Continental' },
377
+ '4594' => { :code => '4594', :type => 'Cucumber', :variety => 'Japanese / White' },
378
+ '4595' => { :code => '4595', :type => 'Cucumber', :variety => 'Lemon' },
379
+ '4596' => { :code => '4596', :type => 'Cucumber', :variety => 'Pickling / Gherkin' },
380
+ '4598' => { :code => '4598', :type => 'RADISH', :variety => 'Daikon / Radish' },
381
+ '4599' => { :code => '4599', :type => 'KUMQUAT', :variety => '' },
382
+ '4601' => { :code => '4601', :type => 'Eggplant', :variety => 'Japanese' },
383
+ '4602' => { :code => '4602', :type => 'Eggplant', :variety => 'White' },
384
+ '4604' => { :code => '4604', :type => 'ENDIVE', :variety => 'Endive / Chicory' },
385
+ '4606' => { :code => '4606', :type => 'Fiddlehead Ferns', :variety => '' },
386
+ '4608' => { :code => '4608', :type => 'GARLIC', :variety => 'Loose Garlic' },
387
+ '4609' => { :code => '4609', :type => 'Garlic', :variety => 'Elephant' },
388
+ '4612' => { :code => '4612', :type => 'GINGER', :variety => 'Ginger Root' },
389
+ '4614' => { :code => '4614', :type => 'Greens', :variety => 'Collards' },
390
+ '4615' => { :code => '4615', :type => 'Greens', :variety => 'Dandelion' },
391
+ '4616' => { :code => '4616', :type => 'Greens', :variety => 'Mustard' },
392
+ '4617' => { :code => '4617', :type => 'Greens', :variety => 'Polk Greens' },
393
+ '4618' => { :code => '4618', :type => 'Greens', :variety => 'Texas Mustard' },
394
+ '4619' => { :code => '4619', :type => 'Greens', :variety => 'Turnip' },
395
+ '4625' => { :code => '4625', :type => 'Horseradish Root', :variety => '' },
396
+ '4626' => { :code => '4626', :type => 'Jicama / Yam Bean', :variety => '' },
397
+ '4631' => { :code => '4631', :type => 'Lettuce', :variety => 'Bibb / Flat / Round' },
398
+ '4632' => { :code => '4632', :type => 'LETTUCE', :variety => 'Boston Lettuce' },
399
+ '4633' => { :code => '4633', :type => 'Lettuce', :variety => 'Hydroponic' },
400
+ '4636' => { :code => '4636', :type => 'GRAPES', :variety => 'Red Globe Grapes' },
401
+ '4638' => { :code => '4638', :type => 'Grape', :variety => 'Fantasy / Marroo' },
402
+ '4639' => { :code => '4639', :type => 'Lettuce', :variety => 'Mache' },
403
+ '4640' => { :code => '4640', :type => 'LETTUCE', :variety => 'Romaine Lettuce' },
404
+ '4644' => { :code => '4644', :type => 'Malanga', :variety => '' },
405
+ '4645' => { :code => '4645', :type => 'MUSHROOM', :variety => 'Mushrooms' },
406
+ '4646' => { :code => '4646', :type => 'Mushroom', :variety => 'Black Forest' },
407
+ '4647' => { :code => '4647', :type => 'Mushroom', :variety => 'Chanterelle' },
408
+ '4648' => { :code => '4648', :type => 'Mushroom', :variety => 'Cremini / Brown / Swiss Brown' },
409
+ '4649' => { :code => '4649', :type => 'Mushroom', :variety => 'Oyster' },
410
+ '4650' => { :code => '4650', :type => 'MUSHROOM', :variety => 'Portabello Mushrooms' },
411
+ '4651' => { :code => '4651', :type => 'Mushroom', :variety => 'Shiitake' },
412
+ '4652' => { :code => '4652', :type => 'Mushroom', :variety => 'Wood Ear' },
413
+ '4655' => { :code => '4655', :type => 'Okra', :variety => 'Regular, green' },
414
+ '4656' => { :code => '4656', :type => 'Okra', :variety => 'Chinese' },
415
+ '4657' => { :code => '4657', :type => 'Okra', :variety => 'Red' },
416
+ '4658' => { :code => '4658', :type => 'Onion', :variety => 'Boiling' },
417
+ '4659' => { :code => '4659', :type => 'Onion', :variety => 'Bulb' },
418
+ '4660' => { :code => '4660', :type => 'Onion', :variety => 'Pearl' },
419
+ '4661' => { :code => '4661', :type => 'Onion', :variety => 'Pickling, white' },
420
+ '4662' => { :code => '4662', :type => 'Onion', :variety => 'Shallots' },
421
+ '4663' => { :code => '4663', :type => 'ONION', :variety => 'White Onions' },
422
+ '4664' => { :code => '4664', :type => 'TOMATO', :variety => 'Tomatoes on a Vine' },
423
+ '4665' => { :code => '4665', :type => 'ONION', :variety => 'Yellow Cooking Onions' },
424
+ '4671' => { :code => '4671', :type => 'Herbs', :variety => 'Parsley Root / Hamburg Parsley' },
425
+ '4672' => { :code => '4672', :type => 'Parsnip', :variety => 'Parsnips' },
426
+ '4673' => { :code => '4673', :type => 'Pea', :variety => 'Blackeyed' },
427
+ '4674' => { :code => '4674', :type => 'Pea', :variety => 'Green' },
428
+ '4675' => { :code => '4675', :type => 'Pea', :variety => 'Sugar Snap' },
429
+ '4677' => { :code => '4677', :type => 'Pepper', :variety => 'Anaheim, green, red' },
430
+ '4678' => { :code => '4678', :type => 'Pepper', :variety => 'Banana, yellow, long' },
431
+ '4681' => { :code => '4681', :type => 'PEPPER', :variety => 'Green Peppers' },
432
+ '4687' => { :code => '4687', :type => 'PEPPER', :variety => 'Cubenelle Peppers' },
433
+ '4688' => { :code => '4688', :type => 'PEPPER', :variety => 'Red Sweet Peppers' },
434
+ '4690' => { :code => '4690', :type => 'Pepper', :variety => 'Hot / Hungarian Hot' },
435
+ '4691' => { :code => '4691', :type => 'Pepper', :variety => 'Hot Mixed' },
436
+ '4692' => { :code => '4692', :type => 'Pepper', :variety => 'Hungarian Wax' },
437
+ '4693' => { :code => '4693', :type => 'PEPPER', :variety => 'Jalapeno Peppers' },
438
+ '4695' => { :code => '4695', :type => 'Pepper', :variety => 'Japanese, red' },
439
+ '4698' => { :code => '4698', :type => 'Pepper', :variety => 'Morita Chili' },
440
+ '4699' => { :code => '4699', :type => 'Pepper', :variety => 'Negro' },
441
+ '4700' => { :code => '4700', :type => 'Pepper', :variety => 'New Mexico' },
442
+ '4704' => { :code => '4704', :type => 'Pepper', :variety => 'Pinole' },
443
+ '4705' => { :code => '4705', :type => 'Pepper', :variety => 'Poblano' },
444
+ '4706' => { :code => '4706', :type => 'Pepper', :variety => 'Red Cheese' },
445
+ '4707' => { :code => '4707', :type => 'Pepper', :variety => 'Red Finger' },
446
+ '4708' => { :code => '4708', :type => 'Pepper', :variety => 'Red Pimiento / Red, sweet, long' },
447
+ '4709' => { :code => '4709', :type => 'Pepper', :variety => 'Serrano' },
448
+ '4726' => { :code => '4726', :type => 'Potato', :variety => 'Long, white' },
449
+ '4727' => { :code => '4727', :type => 'POTATO', :variety => 'Yukon Potato' },
450
+ '4735' => { :code => '4735', :type => 'Pumpkin', :variety => 'Regular' },
451
+ '4738' => { :code => '4738', :type => 'RADICCHIO', :variety => '' },
452
+ '4739' => { :code => '4739', :type => 'Radish', :variety => 'Black' },
453
+ '4741' => { :code => '4741', :type => 'Radish', :variety => 'Italian, red' },
454
+ '4742' => { :code => '4742', :type => 'Radish', :variety => 'Red' },
455
+ '4743' => { :code => '4743', :type => 'Radish', :variety => 'White / Icicle' },
456
+ '4747' => { :code => '4747', :type => 'RUTABAGA', :variety => '' },
457
+ '4753' => { :code => '4753', :type => 'Squash', :variety => 'Australian Blue' },
458
+ '4755' => { :code => '4755', :type => 'Squash', :variety => 'Summer, green, baby' },
459
+ '4757' => { :code => '4757', :type => 'Squash', :variety => 'Banana' },
460
+ '4758' => { :code => '4758', :type => 'Squash', :variety => 'Buttercup' },
461
+ '4759' => { :code => '4759', :type => 'Squash', :variety => 'Butternut' },
462
+ '4760' => { :code => '4760', :type => 'Squash', :variety => 'Calabaza' },
463
+ '4761' => { :code => '4761', :type => 'Squash', :variety => 'Chayote / Choko' },
464
+ '4763' => { :code => '4763', :type => 'Squash', :variety => 'Delicata / Sweet Potato Squash' },
465
+ '4764' => { :code => '4764', :type => 'Squash', :variety => 'Sweet Dumpling' },
466
+ '4765' => { :code => '4765', :type => 'Squash', :variety => 'Gem' },
467
+ '4766' => { :code => '4766', :type => 'Squash', :variety => 'Golden Delicious' },
468
+ '4767' => { :code => '4767', :type => 'Squash', :variety => 'Golden Nugget' },
469
+ '4768' => { :code => '4768', :type => 'Squash', :variety => 'Hubbard' },
470
+ '4769' => { :code => '4769', :type => 'Squash', :variety => 'Kabocha' },
471
+ '4771' => { :code => '4771', :type => 'AVACADO', :variety => '' },
472
+ '4773' => { :code => '4773', :type => 'Squash', :variety => 'Patty Pan / Summer' },
473
+ '4774' => { :code => '4774', :type => 'Squash', :variety => 'Red Kuri' },
474
+ '4776' => { :code => '4776', :type => 'Squash', :variety => 'Spaghetti / Vegetable Spaghetti' },
475
+ '4777' => { :code => '4777', :type => 'Squash', :variety => 'Sunburst, yellow' },
476
+ '4779' => { :code => '4779', :type => 'Squash', :variety => 'Sweet Mama' },
477
+ '4780' => { :code => '4780', :type => 'Squash', :variety => 'Turban' },
478
+ '4781' => { :code => '4781', :type => 'Squash', :variety => 'White' },
479
+ '4782' => { :code => '4782', :type => 'PEPPER', :variety => 'Yellow Straigtneck Peppers' },
480
+ '4783' => { :code => '4783', :type => 'Squash', :variety => 'Bitter Melon / Bitter Gourd / Foo Qua' },
481
+ '4784' => { :code => '4784', :type => 'Squash', :variety => 'Yellow Crookneck' },
482
+ '4790' => { :code => '4790', :type => 'Sugar Cane', :variety => '' },
483
+ '4791' => { :code => '4791', :type => 'Artichoke', :variety => 'Sunchokes / Jerusalem Artichokes' },
484
+ '4792' => { :code => '4792', :type => 'Tamarillo', :variety => 'Golden' },
485
+ '4793' => { :code => '4793', :type => 'Tamarillo', :variety => 'Red' },
486
+ '4799' => { :code => '4799', :type => 'TOMATO', :variety => '' },
487
+ '4800' => { :code => '4800', :type => 'Tomato', :variety => 'Native / Home Grown' },
488
+ '4801' => { :code => '4801', :type => 'Tomato', :variety => 'Tomatillos / Husk Tomatoes' },
489
+ '4802' => { :code => '4802', :type => 'Tomato', :variety => 'dried' },
490
+ '4809' => { :code => '4809', :type => 'Turnip / Rutabaga / Swede', :variety => 'Baby' },
491
+ '4810' => { :code => '4810', :type => 'Turnip / Rutabaga / Swede', :variety => 'Bunch / Banded' },
492
+ '4811' => { :code => '4811', :type => 'Turnip / Rutabaga / Swede', :variety => 'Purple Top' },
493
+ '4812' => { :code => '4812', :type => 'Turnip / Rutabaga / Swede', :variety => 'White' },
494
+ '4814' => { :code => '4814', :type => 'Waterchestnuts', :variety => '' },
495
+ '4815' => { :code => '4815', :type => 'Herbs', :variety => 'Watercress' },
496
+ '4816' => { :code => '4816', :type => 'POTATO', :variety => 'Yams' },
497
+ '4819' => { :code => '4819', :type => 'Yucca Root', :variety => '' },
498
+ '4860' => { :code => '4860', :type => 'Apple', :variety => 'dried apple slices' },
499
+ '4861' => { :code => '4861', :type => 'Apricot', :variety => 'dried' },
500
+ '4862' => { :code => '4862', :type => 'Date', :variety => 'dried' },
501
+ '4864' => { :code => '4864', :type => 'Pineapple', :variety => 'dried' },
502
+ '4884' => { :code => '4884', :type => 'Greens', :variety => 'Arugula / Rocket' },
503
+ '4888' => { :code => '4888', :type => 'Herbs', :variety => 'Chives' },
504
+ '4889' => { :code => '4889', :type => 'HERBS', :variety => 'Cilantro / Coriander / Chinese Parsley' },
505
+ '4890' => { :code => '4890', :type => 'Pear', :variety => 'Chinese Yali' },
506
+ '4891' => { :code => '4891', :type => 'HERBS', :variety => 'Dill' },
507
+ '4892' => { :code => '4892', :type => 'Herbs', :variety => 'Baby Dill' },
508
+ '4893' => { :code => '4893', :type => 'Herbs', :variety => 'Pickling Dill' },
509
+ '4894' => { :code => '4894', :type => 'Herbs', :variety => 'Lemon Grass' },
510
+ '4895' => { :code => '4895', :type => 'Herbs', :variety => 'Marjoram' },
511
+ '4896' => { :code => '4896', :type => 'Herbs', :variety => 'Mint' },
512
+ '4897' => { :code => '4897', :type => 'Herbs', :variety => 'Oregano' },
513
+ '4898' => { :code => '4898', :type => 'Herbs', :variety => 'Oyster Plant / Salsify' },
514
+ '4900' => { :code => '4900', :type => 'HERBS', :variety => 'Parsley' },
515
+ '4901' => { :code => '4901', :type => 'HERBS', :variety => 'Italian Parsley' },
516
+ '4903' => { :code => '4903', :type => 'Herbs', :variety => 'Rosemary' },
517
+ '4904' => { :code => '4904', :type => 'Herbs', :variety => 'Sage' },
518
+ '4905' => { :code => '4905', :type => 'Herbs', :variety => 'Sorrel' },
519
+ '4906' => { :code => '4906', :type => 'Herbs', :variety => 'Tarragon' },
520
+ '4907' => { :code => '4907', :type => 'Herbs', :variety => 'Thyme' },
521
+ '4908' => { :code => '4908', :type => 'Herbs', :variety => 'Vanilla Bean' },
522
+ '4924' => { :code => '4924', :type => 'Nuts', :variety => 'Almonds' },
523
+ '4926' => { :code => '4926', :type => 'Nuts', :variety => 'Brazil nuts' },
524
+ '4927' => { :code => '4927', :type => 'Nuts', :variety => 'Chestnuts' },
525
+ '4928' => { :code => '4928', :type => 'Nuts', :variety => 'Filberts / Cobnut / Hazelnut' },
526
+ '4929' => { :code => '4929', :type => 'Nuts', :variety => 'Mixed' },
527
+ '4936' => { :code => '4936', :type => 'Nuts', :variety => 'Pecans' },
528
+ '4938' => { :code => '4938', :type => 'Nuts', :variety => 'Pine Nuts / Pignoli' },
529
+ '4942' => { :code => '4942', :type => 'Nuts', :variety => 'Sunflower Seeds' },
530
+ '4948' => { :code => '4948', :type => 'LIMES', :variety => '' },
531
+ '33543' => { :code => '33543', :type => 'Avocado', :variety => 'Ripe, ready-to-eat' },
532
+ '33653' => { :code => '33653', :type => 'Mango', :variety => 'Ripe, ready-to-eat' },
533
+ '33673' => { :code => '33673', :type => 'Melon', :variety => 'Glasshouse, netted varieties' },
534
+ '34173' => { :code => '34173', :type => 'Spinach', :variety => 'New Zealand' },
535
+ '42461' => { :code => '42461', :type => 'Berries', :variety => 'Pint' },
536
+ '46341' => { :code => '46341', :type => 'Lettuce', :variety => 'Iceberg' },
537
+ '47251' => { :code => '47251', :type => 'Potato', :variety => 'Russet' }
538
+ }