actsasflinn-ruby-tokyotyrant 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+ }