yajl-ruby 1.0.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of yajl-ruby might be problematic. Click here for more details.

Files changed (152) hide show
  1. data/.gitignore +12 -0
  2. data/.rspec +2 -0
  3. data/CHANGELOG.md +327 -0
  4. data/Gemfile +3 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +362 -0
  7. data/Rakefile +2 -0
  8. data/benchmark/encode.rb +72 -0
  9. data/benchmark/encode_json_and_marshal.rb +42 -0
  10. data/benchmark/encode_json_and_yaml.rb +53 -0
  11. data/benchmark/http.rb +32 -0
  12. data/benchmark/parse.rb +94 -0
  13. data/benchmark/parse_json_and_marshal.rb +50 -0
  14. data/benchmark/parse_json_and_yaml.rb +55 -0
  15. data/benchmark/parse_stream.rb +54 -0
  16. data/benchmark/subjects/item.json +1 -0
  17. data/benchmark/subjects/ohai.json +1216 -0
  18. data/benchmark/subjects/ohai.marshal_dump +0 -0
  19. data/benchmark/subjects/ohai.yml +975 -0
  20. data/benchmark/subjects/twitter_search.json +1 -0
  21. data/benchmark/subjects/twitter_stream.json +430 -0
  22. data/benchmark/subjects/unicode.json +1 -0
  23. data/examples/encoding/chunked_encoding.rb +27 -0
  24. data/examples/encoding/one_shot.rb +13 -0
  25. data/examples/encoding/to_an_io.rb +12 -0
  26. data/examples/http/twitter_search_api.rb +12 -0
  27. data/examples/http/twitter_stream_api.rb +26 -0
  28. data/examples/parsing/from_file.rb +14 -0
  29. data/examples/parsing/from_stdin.rb +9 -0
  30. data/examples/parsing/from_string.rb +13 -0
  31. data/ext/yajl/api/yajl_common.h +89 -0
  32. data/ext/yajl/api/yajl_gen.h +161 -0
  33. data/ext/yajl/api/yajl_parse.h +196 -0
  34. data/ext/yajl/api/yajl_version.h +23 -0
  35. data/ext/yajl/extconf.rb +7 -0
  36. data/ext/yajl/yajl.c +164 -0
  37. data/ext/yajl/yajl_alloc.c +65 -0
  38. data/ext/yajl/yajl_alloc.h +50 -0
  39. data/ext/yajl/yajl_buf.c +119 -0
  40. data/ext/yajl/yajl_buf.h +73 -0
  41. data/ext/yajl/yajl_bytestack.h +85 -0
  42. data/ext/yajl/yajl_encode.c +201 -0
  43. data/ext/yajl/yajl_encode.h +52 -0
  44. data/ext/yajl/yajl_ext.c +905 -0
  45. data/ext/yajl/yajl_ext.h +135 -0
  46. data/ext/yajl/yajl_gen.c +344 -0
  47. data/ext/yajl/yajl_lex.c +748 -0
  48. data/ext/yajl/yajl_lex.h +135 -0
  49. data/ext/yajl/yajl_parser.c +450 -0
  50. data/ext/yajl/yajl_parser.h +82 -0
  51. data/ext/yajl/yajl_version.c +7 -0
  52. data/lib/yajl.rb +75 -0
  53. data/lib/yajl/1.8/yajl.so +0 -0
  54. data/lib/yajl/1.9/yajl.so +0 -0
  55. data/lib/yajl/bzip2.rb +11 -0
  56. data/lib/yajl/bzip2/stream_reader.rb +31 -0
  57. data/lib/yajl/bzip2/stream_writer.rb +14 -0
  58. data/lib/yajl/deflate.rb +6 -0
  59. data/lib/yajl/deflate/stream_reader.rb +43 -0
  60. data/lib/yajl/deflate/stream_writer.rb +20 -0
  61. data/lib/yajl/gzip.rb +6 -0
  62. data/lib/yajl/gzip/stream_reader.rb +30 -0
  63. data/lib/yajl/gzip/stream_writer.rb +13 -0
  64. data/lib/yajl/http_stream.rb +212 -0
  65. data/lib/yajl/json_gem.rb +15 -0
  66. data/lib/yajl/json_gem/encoding.rb +51 -0
  67. data/lib/yajl/json_gem/parsing.rb +26 -0
  68. data/lib/yajl/version.rb +3 -0
  69. data/lib/yajl/yajl.rb +2 -0
  70. data/spec/encoding/encoding_spec.rb +271 -0
  71. data/spec/global/global_spec.rb +54 -0
  72. data/spec/http/fixtures/http.bzip2.dump +0 -0
  73. data/spec/http/fixtures/http.chunked.dump +11 -0
  74. data/spec/http/fixtures/http.deflate.dump +0 -0
  75. data/spec/http/fixtures/http.error.dump +12 -0
  76. data/spec/http/fixtures/http.gzip.dump +0 -0
  77. data/spec/http/fixtures/http.html.dump +1220 -0
  78. data/spec/http/fixtures/http.raw.dump +1226 -0
  79. data/spec/http/http_delete_spec.rb +98 -0
  80. data/spec/http/http_error_spec.rb +32 -0
  81. data/spec/http/http_get_spec.rb +109 -0
  82. data/spec/http/http_post_spec.rb +123 -0
  83. data/spec/http/http_put_spec.rb +105 -0
  84. data/spec/http/http_stream_options_spec.rb +27 -0
  85. data/spec/json_gem_compatibility/compatibility_spec.rb +203 -0
  86. data/spec/parsing/active_support_spec.rb +64 -0
  87. data/spec/parsing/chunked_spec.rb +96 -0
  88. data/spec/parsing/fixtures/fail.15.json +1 -0
  89. data/spec/parsing/fixtures/fail.16.json +1 -0
  90. data/spec/parsing/fixtures/fail.17.json +1 -0
  91. data/spec/parsing/fixtures/fail.26.json +1 -0
  92. data/spec/parsing/fixtures/fail11.json +1 -0
  93. data/spec/parsing/fixtures/fail12.json +1 -0
  94. data/spec/parsing/fixtures/fail13.json +1 -0
  95. data/spec/parsing/fixtures/fail14.json +1 -0
  96. data/spec/parsing/fixtures/fail19.json +1 -0
  97. data/spec/parsing/fixtures/fail20.json +1 -0
  98. data/spec/parsing/fixtures/fail21.json +1 -0
  99. data/spec/parsing/fixtures/fail22.json +1 -0
  100. data/spec/parsing/fixtures/fail23.json +1 -0
  101. data/spec/parsing/fixtures/fail24.json +1 -0
  102. data/spec/parsing/fixtures/fail25.json +1 -0
  103. data/spec/parsing/fixtures/fail27.json +2 -0
  104. data/spec/parsing/fixtures/fail28.json +2 -0
  105. data/spec/parsing/fixtures/fail3.json +1 -0
  106. data/spec/parsing/fixtures/fail4.json +1 -0
  107. data/spec/parsing/fixtures/fail5.json +1 -0
  108. data/spec/parsing/fixtures/fail6.json +1 -0
  109. data/spec/parsing/fixtures/fail9.json +1 -0
  110. data/spec/parsing/fixtures/pass.array.json +6 -0
  111. data/spec/parsing/fixtures/pass.codepoints_from_unicode_org.json +1 -0
  112. data/spec/parsing/fixtures/pass.contacts.json +1 -0
  113. data/spec/parsing/fixtures/pass.db100.xml.json +1 -0
  114. data/spec/parsing/fixtures/pass.db1000.xml.json +1 -0
  115. data/spec/parsing/fixtures/pass.dc_simple_with_comments.json +11 -0
  116. data/spec/parsing/fixtures/pass.deep_arrays.json +1 -0
  117. data/spec/parsing/fixtures/pass.difficult_json_c_test_case.json +1 -0
  118. data/spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json +1 -0
  119. data/spec/parsing/fixtures/pass.doubles.json +1 -0
  120. data/spec/parsing/fixtures/pass.empty_array.json +1 -0
  121. data/spec/parsing/fixtures/pass.empty_string.json +1 -0
  122. data/spec/parsing/fixtures/pass.escaped_bulgarian.json +4 -0
  123. data/spec/parsing/fixtures/pass.escaped_foobar.json +1 -0
  124. data/spec/parsing/fixtures/pass.item.json +1 -0
  125. data/spec/parsing/fixtures/pass.json-org-sample1.json +23 -0
  126. data/spec/parsing/fixtures/pass.json-org-sample2.json +11 -0
  127. data/spec/parsing/fixtures/pass.json-org-sample3.json +26 -0
  128. data/spec/parsing/fixtures/pass.json-org-sample4-nows.json +88 -0
  129. data/spec/parsing/fixtures/pass.json-org-sample4.json +89 -0
  130. data/spec/parsing/fixtures/pass.json-org-sample5.json +27 -0
  131. data/spec/parsing/fixtures/pass.map-spain.xml.json +1 -0
  132. data/spec/parsing/fixtures/pass.ns-invoice100.xml.json +1 -0
  133. data/spec/parsing/fixtures/pass.ns-soap.xml.json +1 -0
  134. data/spec/parsing/fixtures/pass.numbers-fp-4k.json +6 -0
  135. data/spec/parsing/fixtures/pass.numbers-fp-64k.json +61 -0
  136. data/spec/parsing/fixtures/pass.numbers-int-4k.json +11 -0
  137. data/spec/parsing/fixtures/pass.numbers-int-64k.json +154 -0
  138. data/spec/parsing/fixtures/pass.twitter-search.json +1 -0
  139. data/spec/parsing/fixtures/pass.twitter-search2.json +1 -0
  140. data/spec/parsing/fixtures/pass.unicode.json +3315 -0
  141. data/spec/parsing/fixtures/pass.yelp.json +1 -0
  142. data/spec/parsing/fixtures/pass1.json +56 -0
  143. data/spec/parsing/fixtures/pass2.json +1 -0
  144. data/spec/parsing/fixtures/pass3.json +6 -0
  145. data/spec/parsing/fixtures_spec.rb +40 -0
  146. data/spec/parsing/one_off_spec.rb +85 -0
  147. data/spec/rcov.opts +3 -0
  148. data/spec/spec_helper.rb +16 -0
  149. data/tasks/compile.rake +35 -0
  150. data/tasks/rspec.rake +16 -0
  151. data/yajl-ruby.gemspec +24 -0
  152. metadata +335 -0
@@ -0,0 +1 @@
1
+ {"message": {"text": "OK", "code": 0, "version": 1.1000000000000001}, "businesses": [{"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "7vqUGG9ZBZKOjOFPs8lEgQ", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/7vqUGG9ZBZKOjOFPs8lEgQ", "review_count": 223, "zip": "94103", "state": "CA", "latitude": 37.775596, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1168 Folsom St", "address2": "", "address3": "", "phone": "4155031033", "state_code": "CA", "categories": [{"category_filter": "beer_and_wine", "search_url": "http://www.yelp.com/search?find_loc=1168+Folsom+St%2C+San+Francisco%2C+CA+94103&cflt=beer_and_wine", "name": "Beer, Wine & Spirits"}, {"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=1168+Folsom+St%2C+San+Francisco%2C+CA+94103&cflt=wine_bars", "name": "Wine Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/QS62ET0YNIqDYzQlmeKtRQ/ms", "distance": 0.54462140798568726, "name": "The City Beer Store & Tasting Bar", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=SOMA%2C+San+Francisco%2C+CA", "name": "SOMA"}], "url": "http://www.yelp.com/biz/the-city-beer-store-and-tasting-bar-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.40933699999999, "photo_url_small": "http://static.px.yelp.com/bpthumb/QS62ET0YNIqDYzQlmeKtRQ/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/CjwEJm0_LW7l3Gtc96Nq_A/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/7vqUGG9ZBZKOjOFPs8lEgQ?srid=prmIARCGNmaIKQj-szj0FQ", "url": "http://www.yelp.com/biz/the-city-beer-store-and-tasting-bar-san-francisco#hrid:prmIARCGNmaIKQj-szj0FQ", "user_url": "http://www.yelp.com/user_details?userid=LnZUtFx6qTWs8NV6lAARxQ", "text_excerpt": "Not that I need to remind people of this awesome place, but I need to really drop some knowledge: It's cheaper to have a specialty brew here than to go to...", "user_photo_url": "http://static.px.yelp.com/upthumb/CjwEJm0_LW7l3Gtc96Nq_A/ms", "date": "2009-04-18", "user_name": "Lisa N.", "id": "prmIARCGNmaIKQj-szj0FQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/fXjNyGsXPVjIHk46Y5dPrA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/7vqUGG9ZBZKOjOFPs8lEgQ?srid=5U87A3dHbLN55unJLj0VjQ", "url": "http://www.yelp.com/biz/the-city-beer-store-and-tasting-bar-san-francisco#hrid:5U87A3dHbLN55unJLj0VjQ", "user_url": "http://www.yelp.com/user_details?userid=XDQCUG6dB_NntrZNsn5Frw", "text_excerpt": "Once in a while, I come across a place that I hesitate to write a review, because I want it to be a secret . . . because it is such a rare treasure. . .The...", "user_photo_url": "http://static.px.yelp.com/upthumb/fXjNyGsXPVjIHk46Y5dPrA/ms", "date": "2009-04-12", "user_name": "Su K.", "id": "5U87A3dHbLN55unJLj0VjQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/Wzjwe41JVxcJ8S1T6FMJlQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/7vqUGG9ZBZKOjOFPs8lEgQ?srid=OhJUOg-CPz6JPs9l6p8xZg", "url": "http://www.yelp.com/biz/the-city-beer-store-and-tasting-bar-san-francisco#hrid:OhJUOg-CPz6JPs9l6p8xZg", "user_url": "http://www.yelp.com/user_details?userid=kzkAXy9mJS6gMljzC4xGXw", "text_excerpt": "This place absolutely rules! Forget BevMo or any other half assed excuse of a liquor store for trying to find the dankest of the dank.\n\nYou want REAL...", "user_photo_url": "http://static.px.yelp.com/upthumb/Wzjwe41JVxcJ8S1T6FMJlQ/ms", "date": "2009-04-10", "user_name": "Gary T.", "id": "OhJUOg-CPz6JPs9l6p8xZg"}], "nearby_url": "http://www.yelp.com/search?find_loc=1168+Folsom+St%2C+San+Francisco%2C+CA+94103"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "bJm7lxFjXPTg1yJ3WBikMg", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/bJm7lxFjXPTg1yJ3WBikMg", "review_count": 332, "zip": "94109", "state": "CA", "latitude": 37.787863000000002, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "620 Post St", "address2": "", "address3": "", "phone": "4156743567", "state_code": "CA", "categories": [{"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=620+Post+St%2C+San+Francisco%2C+CA+94109&cflt=wine_bars", "name": "Wine Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/K7_INof0EiUXR52hv5jfiQ/ms", "distance": 0.97077900171279907, "name": "The Hidden Vine", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Civic+Center%2FTenderloin%2C+San+Francisco%2C+CA", "name": "Civic Center/Tenderloin"}, {"url": "http://www.yelp.com/search?find_loc=Nob+Hill%2C+San+Francisco%2C+CA", "name": "Nob Hill"}], "url": "http://www.yelp.com/biz/the-hidden-vine-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.41209499999999, "photo_url_small": "http://static.px.yelp.com/bpthumb/K7_INof0EiUXR52hv5jfiQ/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/yswMVVQ6HUVHHrs_5H5GPw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/bJm7lxFjXPTg1yJ3WBikMg?srid=EHIPPWgySoXzd_YJpkjqyA", "url": "http://www.yelp.com/biz/the-hidden-vine-san-francisco#hrid:EHIPPWgySoXzd_YJpkjqyA", "user_url": "http://www.yelp.com/user_details?userid=M_4EmxzznybTzMwT7FDg_g", "text_excerpt": "I better write this before I forget about going here and how good it was. Too late! It's almost a fading memory. \n\nI do remember several kinds of wine,...", "user_photo_url": "http://static.px.yelp.com/upthumb/yswMVVQ6HUVHHrs_5H5GPw/ms", "date": "2009-04-16", "user_name": "Michael M.", "id": "EHIPPWgySoXzd_YJpkjqyA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/g9ivlET2xM1MFi_C_Ktrbg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/bJm7lxFjXPTg1yJ3WBikMg?srid=0SEtOwc5fxrk9E4BzOX3Lg", "url": "http://www.yelp.com/biz/the-hidden-vine-san-francisco#hrid:0SEtOwc5fxrk9E4BzOX3Lg", "user_url": "http://www.yelp.com/user_details?userid=mg4gZL6QRMSX-lnLFyEKAg", "text_excerpt": "Best most quaint wine bar in town, try a flight of red or white, and enjoy the music and cozy European-style ambiance.", "user_photo_url": "http://static.px.yelp.com/upthumb/g9ivlET2xM1MFi_C_Ktrbg/ms", "date": "2009-04-16", "user_name": "PJ T.", "id": "0SEtOwc5fxrk9E4BzOX3Lg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/afmXmGSDfksrEhrEJauNJw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/bJm7lxFjXPTg1yJ3WBikMg?srid=A3dtzAGxYjRb5lh1mUSOhg", "url": "http://www.yelp.com/biz/the-hidden-vine-san-francisco#hrid:A3dtzAGxYjRb5lh1mUSOhg", "user_url": "http://www.yelp.com/user_details?userid=qD51vvp5Zf5DgPEGy7yfDQ", "text_excerpt": "The terms, \"cozy\" and \"intimate\" have been used frequently in the reviews, and I can't think of better descriptives for The Hidden Vine. For a perpetual...", "user_photo_url": "http://static.px.yelp.com/upthumb/afmXmGSDfksrEhrEJauNJw/ms", "date": "2009-04-15", "user_name": "Marsha Z.", "id": "A3dtzAGxYjRb5lh1mUSOhg"}], "nearby_url": "http://www.yelp.com/search?find_loc=620+Post+St%2C+San+Francisco%2C+CA+94109"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "rPwB56EQ9JfEo2mN24fqOQ", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/rPwB56EQ9JfEo2mN24fqOQ", "review_count": 63, "zip": "94122", "state": "CA", "latitude": 37.765385700000003, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1849 Lincoln Way", "address2": "", "address3": "", "phone": "4152429930", "state_code": "CA", "categories": [{"category_filter": "sportsbars", "search_url": "http://www.yelp.com/search?find_loc=1849+Lincoln+Way%2C+San+Francisco%2C+CA+94122&cflt=sportsbars", "name": "Sports Bars"}, {"category_filter": "pubs", "search_url": "http://www.yelp.com/search?find_loc=1849+Lincoln+Way%2C+San+Francisco%2C+CA+94122&cflt=pubs", "name": "Pubs"}], "photo_url": "http://static.px.yelp.com/bpthumb/Qi-qAAMOBSuXunNQMb2ttw/ms", "distance": 3.2772026062011719, "name": "Chug Pub", "neighborhoods": [], "url": "http://www.yelp.com/biz/chug-pub-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.4780387, "photo_url_small": "http://static.px.yelp.com/bpthumb/Qi-qAAMOBSuXunNQMb2ttw/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/hYTM9RV4e8642z2NCNty2A/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/rPwB56EQ9JfEo2mN24fqOQ?srid=jLYJ2se_DN73QiAogNfnJQ", "url": "http://www.yelp.com/biz/chug-pub-san-francisco#hrid:jLYJ2se_DN73QiAogNfnJQ", "user_url": "http://www.yelp.com/user_details?userid=RjQkoF8llTiXoO1bc4gOMQ", "text_excerpt": "Okay, so we met a couple of girls who brought us to this place late Monday night.... we got closed out on the other restaurant and we wanted to have a few...", "user_photo_url": "http://static.px.yelp.com/upthumb/hYTM9RV4e8642z2NCNty2A/ms", "date": "2009-04-08", "user_name": "John R.", "id": "jLYJ2se_DN73QiAogNfnJQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/nXk12V7x30v9LUoTye0gsw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/rPwB56EQ9JfEo2mN24fqOQ?srid=kZgc0_KkkGy0cmi2C7fEHA", "url": "http://www.yelp.com/biz/chug-pub-san-francisco#hrid:kZgc0_KkkGy0cmi2C7fEHA", "user_url": "http://www.yelp.com/user_details?userid=ipleTHGh9KR8hO5U1yxzXw", "text_excerpt": "I'm all for phallic innuendo. The sexual implications of beer bongs is not lost on me and I adore the flavor of Blowjobs and yes I do like whipped cream on...", "user_photo_url": "http://static.px.yelp.com/upthumb/nXk12V7x30v9LUoTye0gsw/ms", "date": "2009-04-06", "user_name": "jay h.", "id": "kZgc0_KkkGy0cmi2C7fEHA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/QNtJA5nm_FuSnwTzVcXhag/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/rPwB56EQ9JfEo2mN24fqOQ?srid=o45vWqKfPlGTSaYwK7Ziug", "url": "http://www.yelp.com/biz/chug-pub-san-francisco#hrid:o45vWqKfPlGTSaYwK7Ziug", "user_url": "http://www.yelp.com/user_details?userid=21SRsnSJqvk3gWXY1iDRiQ", "text_excerpt": "This is a great place to go for nachos. They also have a great special. Last time I was there it was a shot of Cobo Wabo and a Pabst for $6. It has a...", "user_photo_url": "http://static.px.yelp.com/upthumb/QNtJA5nm_FuSnwTzVcXhag/ms", "date": "2009-03-17", "user_name": "Jared S.", "id": "o45vWqKfPlGTSaYwK7Ziug"}], "nearby_url": "http://www.yelp.com/search?find_loc=1849+Lincoln+Way%2C+San+Francisco%2C+CA+94122"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "z_kf-vKkCLI1WTnEBSPudw", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/z_kf-vKkCLI1WTnEBSPudw", "review_count": 68, "zip": "94103", "state": "CA", "latitude": 37.786693, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "757 Market St.", "address2": "Inside The Four Seasons", "address3": "", "phone": "4156333000", "state_code": "CA", "categories": [{"category_filter": "lounges", "search_url": "http://www.yelp.com/search?find_loc=757+Market+St.%2C+San+Francisco%2C+CA+94103&cflt=lounges", "name": "Lounges"}], "photo_url": "http://static.px.yelp.com/bpthumb/anR-QVqjMYDupPLYJ5lqwQ/ms", "distance": 1.1350789070129395, "name": "The Bar At The Four Seasons", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=SOMA%2C+San+Francisco%2C+CA", "name": "SOMA"}, {"url": "http://www.yelp.com/search?find_loc=Union+Square%2C+San+Francisco%2C+CA", "name": "Union Square"}], "url": "http://www.yelp.com/biz/the-bar-at-the-four-seasons-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.404662, "photo_url_small": "http://static.px.yelp.com/bpthumb/anR-QVqjMYDupPLYJ5lqwQ/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/t4zvXYHqYmm-QW0-Te2j1g/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/z_kf-vKkCLI1WTnEBSPudw?srid=1IlPciKzq2Z0SZrsLSANsA", "url": "http://www.yelp.com/biz/the-bar-at-the-four-seasons-san-francisco#hrid:1IlPciKzq2Z0SZrsLSANsA", "user_url": "http://www.yelp.com/user_details?userid=UBAfc-KuDXV8XLurou_i6g", "text_excerpt": "Love the wine selection and \"lambsicles\"...Dee lish! \n\nFour Seasons pricing but of course ;) but a nice place to grab drinks with a few friends or larger...", "user_photo_url": "http://static.px.yelp.com/upthumb/t4zvXYHqYmm-QW0-Te2j1g/ms", "date": "2009-04-06", "user_name": "Abby W.", "id": "1IlPciKzq2Z0SZrsLSANsA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/z_kf-vKkCLI1WTnEBSPudw?srid=oia-XcRxPrqwx11GtCuw8Q", "url": "http://www.yelp.com/biz/the-bar-at-the-four-seasons-san-francisco#hrid:oia-XcRxPrqwx11GtCuw8Q", "user_url": "http://www.yelp.com/user_details?userid=1O1MfZlHbQx_U5G47a90JA", "text_excerpt": "This would be a 5, but I did not really like the dried peas and spicy almonds. Other than that the service was a 5. Wish i could remember the waitresses...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-03-23", "user_name": "Michael T.", "id": "oia-XcRxPrqwx11GtCuw8Q"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/3loDhmkFIGyUQDATuo6e1Q/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/z_kf-vKkCLI1WTnEBSPudw?srid=Ez_hn7-Kor2EZ38lO37jMQ", "url": "http://www.yelp.com/biz/the-bar-at-the-four-seasons-san-francisco#hrid:Ez_hn7-Kor2EZ38lO37jMQ", "user_url": "http://www.yelp.com/user_details?userid=rdSJ_jlij_2x5glkrEEZxg", "text_excerpt": "My second favorite hotel cocktail bar! \n\nThe old man inside of me loves that I can go drink here with friends, meet a date, or even stop in for a proper...", "user_photo_url": "http://static.px.yelp.com/upthumb/3loDhmkFIGyUQDATuo6e1Q/ms", "date": "2009-03-15", "user_name": "Sean W.", "id": "Ez_hn7-Kor2EZ38lO37jMQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=757+Market+St.%2C+San+Francisco%2C+CA+94103"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "QCQ3WN7hd9xMPs2_ycHa_A", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/QCQ3WN7hd9xMPs2_ycHa_A", "review_count": 160, "zip": "94112", "state": "CA", "latitude": 37.714413999999998, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1166 Geneva Ave", "address2": "", "address3": "", "phone": "4159631713", "state_code": "CA", "categories": [{"category_filter": "divebars", "search_url": "http://www.yelp.com/search?find_loc=1166+Geneva+Ave%2C+San+Francisco%2C+CA+94112&cflt=divebars", "name": "Dive Bars"}, {"category_filter": "soulfood", "search_url": "http://www.yelp.com/search?find_loc=1166+Geneva+Ave%2C+San+Francisco%2C+CA+94112&cflt=soulfood", "name": "Soul Food"}], "photo_url": "http://static.px.yelp.com/bpthumb/ANbY5m01ROgbtzteMQNIxw/ms", "distance": 4.2946634292602539, "name": "Broken Record", "neighborhoods": [], "url": "http://www.yelp.com/biz/broken-record-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.43676000000001, "photo_url_small": "http://static.px.yelp.com/bpthumb/ANbY5m01ROgbtzteMQNIxw/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/lLF6FjlIh_9itgOeqvjW6w/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/QCQ3WN7hd9xMPs2_ycHa_A?srid=0xMF-emnZXwMxpLdx7AmeQ", "url": "http://www.yelp.com/biz/broken-record-san-francisco#hrid:0xMF-emnZXwMxpLdx7AmeQ", "user_url": "http://www.yelp.com/user_details?userid=k4oMdCSDqa_1iP3hVaozZA", "text_excerpt": "Seriously, the food here is amazing. I recently tried out the smoked tofu sandwich! OMG, it is OFF THE CHIZZAIN!\n\nIt reminded me of a Bahn Mi aka Vietnamese...", "user_photo_url": "http://static.px.yelp.com/upthumb/lLF6FjlIh_9itgOeqvjW6w/ms", "date": "2009-04-16", "user_name": "Sheila S.", "id": "0xMF-emnZXwMxpLdx7AmeQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/5ZWqY4DRQ3X67uEbiFBv9Q/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/QCQ3WN7hd9xMPs2_ycHa_A?srid=VZ50hhJuPJwjHF2t9UZ0HA", "url": "http://www.yelp.com/biz/broken-record-san-francisco#hrid:VZ50hhJuPJwjHF2t9UZ0HA", "user_url": "http://www.yelp.com/user_details?userid=P7_vx8jtm7tNz38N1H1NWw", "text_excerpt": "Yes, yes, I know -- when in the Excelsior, it's the only game in town, as R and I found out only too well tonight when we committed the unspeakable sin of...", "user_photo_url": "http://static.px.yelp.com/upthumb/5ZWqY4DRQ3X67uEbiFBv9Q/ms", "date": "2009-04-15", "user_name": "Chad P.", "id": "VZ50hhJuPJwjHF2t9UZ0HA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/QCQ3WN7hd9xMPs2_ycHa_A?srid=KA6C2DQShJhY4TQIT9Whbw", "url": "http://www.yelp.com/biz/broken-record-san-francisco#hrid:KA6C2DQShJhY4TQIT9Whbw", "user_url": "http://www.yelp.com/user_details?userid=fjNmLQcw2oSYhUASdlo27w", "text_excerpt": "You can expect all levels of comfort and excitement from the first and last time you come here. Meeting unforgettable people such as Bret (the lively, yet...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-08", "user_name": "Kristoffer C.", "id": "KA6C2DQShJhY4TQIT9Whbw"}], "nearby_url": "http://www.yelp.com/search?find_loc=1166+Geneva+Ave%2C+San+Francisco%2C+CA+94112"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "kM64kcWiK3TqhB0HeAUGeg", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/kM64kcWiK3TqhB0HeAUGeg", "review_count": 114, "zip": "94123", "state": "CA", "latitude": 37.798518000000001, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1514 Union St", "address2": "", "address3": "", "phone": "4159282414", "state_code": "CA", "categories": [{"category_filter": "pubs", "search_url": "http://www.yelp.com/search?find_loc=1514+Union+St%2C+San+Francisco%2C+CA+94123&cflt=pubs", "name": "Pubs"}], "photo_url": "http://static.px.yelp.com/bpthumb/_Q0KPbKmAgQeLrcOgajjwA/ms", "distance": 1.6471928358078003, "name": "The Black Horse London Pub", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Marina%2FCow+Hollow%2C+San+Francisco%2C+CA", "name": "Marina/Cow Hollow"}], "url": "http://www.yelp.com/biz/the-black-horse-london-pub-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.42431500000001, "photo_url_small": "http://static.px.yelp.com/bpthumb/_Q0KPbKmAgQeLrcOgajjwA/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/vAKX9CLC4EJDm9X_YvP4WQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/kM64kcWiK3TqhB0HeAUGeg?srid=henYRKh-HFv-f0q25OrK-A", "url": "http://www.yelp.com/biz/the-black-horse-london-pub-san-francisco#hrid:henYRKh-HFv-f0q25OrK-A", "user_url": "http://www.yelp.com/user_details?userid=xZ1htr_9ZiOamddSoDWMqw", "text_excerpt": "Finding a place like this is why I am addicted to yelping. I am visiting the city for a conference and I wanted to find some local flavor and stay away...", "user_photo_url": "http://static.px.yelp.com/upthumb/vAKX9CLC4EJDm9X_YvP4WQ/ms", "date": "2009-04-18", "user_name": "Juliana M.", "id": "henYRKh-HFv-f0q25OrK-A"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_1.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/9s2WKYMKnCM4FwBLNTifyA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_1.png", "rating": 1, "mobile_uri": "http://mobile.yelp.com/biz/kM64kcWiK3TqhB0HeAUGeg?srid=bwfzeVc_6gto9kFN_dXwZw", "url": "http://www.yelp.com/biz/the-black-horse-london-pub-san-francisco#hrid:bwfzeVc_6gto9kFN_dXwZw", "user_url": "http://www.yelp.com/user_details?userid=K1NLdTfT1IizE-6smhsSug", "text_excerpt": "REALLY??? I've been coming here for the last 8 or so years and I have never seen such a horrible sight before in such a beautiful place...PBR cans on the...", "user_photo_url": "http://static.px.yelp.com/upthumb/9s2WKYMKnCM4FwBLNTifyA/ms", "date": "2009-04-16", "user_name": "Creamy A.", "id": "bwfzeVc_6gto9kFN_dXwZw"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/wwoUpPp1AG2REqM-tONdYw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/kM64kcWiK3TqhB0HeAUGeg?srid=Zau3gO0fZmnLrwf_MeDDVQ", "url": "http://www.yelp.com/biz/the-black-horse-london-pub-san-francisco#hrid:Zau3gO0fZmnLrwf_MeDDVQ", "user_url": "http://www.yelp.com/user_details?userid=dpEtyfB2o7MH1Mc_Ygoolg", "text_excerpt": "I came here for the first time last night and it's a really cool place. James was bartending and he's a really friendly guy. I tried the Kasteel Cru -- a...", "user_photo_url": "http://static.px.yelp.com/upthumb/wwoUpPp1AG2REqM-tONdYw/ms", "date": "2009-04-07", "user_name": "Aaron V.", "id": "Zau3gO0fZmnLrwf_MeDDVQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=1514+Union+St%2C+San+Francisco%2C+CA+94123"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "5Ebc8-ecaLuaLDjKnmY7eg", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/5Ebc8-ecaLuaLDjKnmY7eg", "review_count": 43, "zip": "94109", "state": "CA", "latitude": 37.79712, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "2211 Polk St", "address2": "", "address3": "", "phone": "4156732211", "state_code": "CA", "categories": [{"category_filter": "divebars", "search_url": "http://www.yelp.com/search?find_loc=2211+Polk+St%2C+San+Francisco%2C+CA+94109&cflt=divebars", "name": "Dive Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/IXDxbdklFZPJOHHM2rSzVw/ms", "distance": 1.5348267555236816, "name": "Cresta's Twenty Two Eleven Club", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Russian+Hill%2C+San+Francisco%2C+CA", "name": "Russian Hill"}], "url": "http://www.yelp.com/biz/crestas-twenty-two-eleven-club-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.42204099999999, "photo_url_small": "http://static.px.yelp.com/bpthumb/IXDxbdklFZPJOHHM2rSzVw/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_1.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_1.png", "rating": 1, "mobile_uri": "http://mobile.yelp.com/biz/5Ebc8-ecaLuaLDjKnmY7eg?srid=PLzThYFVEqlMWIp1j8FVjA", "url": "http://www.yelp.com/biz/crestas-twenty-two-eleven-club-san-francisco#hrid:PLzThYFVEqlMWIp1j8FVjA", "user_url": "http://www.yelp.com/user_details?userid=QmmdnVRrxAZLm76-8OTD7Q", "text_excerpt": "The youngish female bartender is a bitch!", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-02", "user_name": "Adrian B.", "id": "PLzThYFVEqlMWIp1j8FVjA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/iAufJ9qyXdH0n36yWkOCag/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/5Ebc8-ecaLuaLDjKnmY7eg?srid=EsRVbt4a0PVZLVQJcqslwg", "url": "http://www.yelp.com/biz/crestas-twenty-two-eleven-club-san-francisco#hrid:EsRVbt4a0PVZLVQJcqslwg", "user_url": "http://www.yelp.com/user_details?userid=1D5EQITb4hOzPMZT8gDPQQ", "text_excerpt": "This place kind of makes me laugh, probably because I never would have known how it existed until I discovered it in a pretty unusual way... So I was...", "user_photo_url": "http://static.px.yelp.com/upthumb/iAufJ9qyXdH0n36yWkOCag/ms", "date": "2009-02-08", "user_name": "Krista S.", "id": "EsRVbt4a0PVZLVQJcqslwg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/S1x1MObQYQTRCrcxwal8Dw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/5Ebc8-ecaLuaLDjKnmY7eg?srid=Bzq9fk2KAlSDNJYoYZwzSA", "url": "http://www.yelp.com/biz/crestas-twenty-two-eleven-club-san-francisco#hrid:Bzq9fk2KAlSDNJYoYZwzSA", "user_url": "http://www.yelp.com/user_details?userid=xADAW32u15sgA18Hfy9PsQ", "text_excerpt": "where everybody knows your name.\n\nwell, they're not mindreaders... so they don't know your name cause you haven't been there. if you have been there, then...", "user_photo_url": "http://static.px.yelp.com/upthumb/S1x1MObQYQTRCrcxwal8Dw/ms", "date": "2009-01-19", "user_name": "Kevin F.", "id": "Bzq9fk2KAlSDNJYoYZwzSA"}], "nearby_url": "http://www.yelp.com/search?find_loc=2211+Polk+St%2C+San+Francisco%2C+CA+94109"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "3K82F5PA3OSU8-LzWDfgHg", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/3K82F5PA3OSU8-LzWDfgHg", "review_count": 138, "zip": "94110", "state": "CA", "latitude": 37.739147000000003, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "424 Cortland Ave", "address2": "", "address3": "", "phone": "4156473099", "state_code": "CA", "categories": [{"category_filter": "gaybars", "search_url": "http://www.yelp.com/search?find_loc=424+Cortland+Ave%2C+San+Francisco%2C+CA+94110&cflt=gaybars", "name": "Gay Bars"}, {"category_filter": "divebars", "search_url": "http://www.yelp.com/search?find_loc=424+Cortland+Ave%2C+San+Francisco%2C+CA+94110&cflt=divebars", "name": "Dive Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/zYyt2w6e_gBAOmIVBUqRPA/ms", "distance": 2.4808199405670166, "name": "Wild Side West", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Bernal+Heights%2C+San+Francisco%2C+CA", "name": "Bernal Heights"}], "url": "http://www.yelp.com/biz/wild-side-west-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.41716, "photo_url_small": "http://static.px.yelp.com/bpthumb/zYyt2w6e_gBAOmIVBUqRPA/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/l80OO5ruhFcYFiUjNX-Y9w/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/3K82F5PA3OSU8-LzWDfgHg?srid=qfBP6DYib_Jq97XZdSKqRg", "url": "http://www.yelp.com/biz/wild-side-west-san-francisco#hrid:qfBP6DYib_Jq97XZdSKqRg", "user_url": "http://www.yelp.com/user_details?userid=IUEkE8T7SvEw4LXSWSOknw", "text_excerpt": "This place is fun if you want to go and chill and have a conversation. Say...for a first date. I recommend going early (so maybe a place to go before you...", "user_photo_url": "http://static.px.yelp.com/upthumb/l80OO5ruhFcYFiUjNX-Y9w/ms", "date": "2009-04-15", "user_name": "Heather S.", "id": "qfBP6DYib_Jq97XZdSKqRg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/3K82F5PA3OSU8-LzWDfgHg?srid=sZcTfRdns9N9o6rsCbmEqA", "url": "http://www.yelp.com/biz/wild-side-west-san-francisco#hrid:sZcTfRdns9N9o6rsCbmEqA", "user_url": "http://www.yelp.com/user_details?userid=_Dv1gLCvRlrLTxxP5TX8GA", "text_excerpt": "Wild Side has a great vibe. Been going there for years and love the outdoor spaces, particularly the back patio in the afternoon on a sunny day. The...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-06", "user_name": "Armand C.", "id": "sZcTfRdns9N9o6rsCbmEqA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/bxtZFTMp6Lib0xWcVNywwQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/3K82F5PA3OSU8-LzWDfgHg?srid=t6CLo9DTqlAB1WQ0xGBwKw", "url": "http://www.yelp.com/biz/wild-side-west-san-francisco#hrid:t6CLo9DTqlAB1WQ0xGBwKw", "user_url": "http://www.yelp.com/user_details?userid=9-y579gMphAItFxc9XA8yQ", "text_excerpt": "I like this place enough - it has a nice backyard.\n\nBut sometimes you never know what you're going to get here. I went here for my birthday last year and...", "user_photo_url": "http://static.px.yelp.com/upthumb/bxtZFTMp6Lib0xWcVNywwQ/ms", "date": "2009-04-05", "user_name": "Whitney D.", "id": "t6CLo9DTqlAB1WQ0xGBwKw"}], "nearby_url": "http://www.yelp.com/search?find_loc=424+Cortland+Ave%2C+San+Francisco%2C+CA+94110"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "GTy7Up0mCTDoYpu0gLsUOQ", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/GTy7Up0mCTDoYpu0gLsUOQ", "review_count": 61, "zip": "94109", "state": "CA", "latitude": 37.7864990234375, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "768 Geary Street", "address2": "", "address3": "", "phone": "4154419336", "state_code": "CA", "categories": [{"category_filter": "divebars", "search_url": "http://www.yelp.com/search?find_loc=768+Geary+Street%2C+San+Francisco%2C+CA+94109&cflt=divebars", "name": "Dive Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/1aK0JUrH9QLrmn76RnlxNA/ms", "distance": 0.81350231170654297, "name": "Geary Club", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Civic+Center%2FTenderloin%2C+San+Francisco%2C+CA", "name": "Civic Center/Tenderloin"}, {"url": "http://www.yelp.com/search?find_loc=Nob+Hill%2C+San+Francisco%2C+CA", "name": "Nob Hill"}], "url": "http://www.yelp.com/biz/geary-club-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.41600036621099, "photo_url_small": "http://static.px.yelp.com/bpthumb/1aK0JUrH9QLrmn76RnlxNA/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/vAKX9CLC4EJDm9X_YvP4WQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/GTy7Up0mCTDoYpu0gLsUOQ?srid=3BF5IQWRCa5kE4CG66O7lg", "url": "http://www.yelp.com/biz/geary-club-san-francisco#hrid:3BF5IQWRCa5kE4CG66O7lg", "user_url": "http://www.yelp.com/user_details?userid=xZ1htr_9ZiOamddSoDWMqw", "text_excerpt": "if you like dives you will like the Geary Club. Not only is there a fake stuffed tiger head front and center, but bartender I had didn't seem to know how...", "user_photo_url": "http://static.px.yelp.com/upthumb/vAKX9CLC4EJDm9X_YvP4WQ/ms", "date": "2009-04-18", "user_name": "Juliana M.", "id": "3BF5IQWRCa5kE4CG66O7lg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/_naF53nRZT9HYVeplcX5Hg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/GTy7Up0mCTDoYpu0gLsUOQ?srid=7WfO0LKgRp0Tl_C-Zf-D4Q", "url": "http://www.yelp.com/biz/geary-club-san-francisco#hrid:7WfO0LKgRp0Tl_C-Zf-D4Q", "user_url": "http://www.yelp.com/user_details?userid=JF-7fBtuA_l5R650Iqe7RQ", "text_excerpt": "I still love Geary Club and Lillian! I kinda like it when a bartender isnt afraid to down a few drinks while working and also make some weird tv dinner for...", "user_photo_url": "http://static.px.yelp.com/upthumb/_naF53nRZT9HYVeplcX5Hg/ms", "date": "2009-03-08", "user_name": "jen d.", "id": "7WfO0LKgRp0Tl_C-Zf-D4Q"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/gdb2pU0wnmsXjAlo_skMgg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/GTy7Up0mCTDoYpu0gLsUOQ?srid=fwBDJyffi2muLlxF5gRgFQ", "url": "http://www.yelp.com/biz/geary-club-san-francisco#hrid:fwBDJyffi2muLlxF5gRgFQ", "user_url": "http://www.yelp.com/user_details?userid=Sw4e9geYXjwG8-JgsuZTSw", "text_excerpt": "Finally I made it to Geary Club!\n\nA rainy Monday night after having a weird \"building party\" at my house.\nI was already a bit drunk and the Geary Club was...", "user_photo_url": "http://static.px.yelp.com/upthumb/gdb2pU0wnmsXjAlo_skMgg/ms", "date": "2009-02-25", "user_name": "cecilia b.", "id": "fwBDJyffi2muLlxF5gRgFQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=768+Geary+Street%2C+San+Francisco%2C+CA+94109"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "vDdJPPRT4_6TociAEHJvgw", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/vDdJPPRT4_6TociAEHJvgw", "review_count": 23, "zip": "94117", "state": "CA", "latitude": 37.776829900000003, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1304 Fulton Street", "address2": "", "address3": "", "phone": "4155676503", "state_code": "CA", "categories": [{"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=1304+Fulton+Street%2C+San+Francisco%2C+CA+94117&cflt=wine_bars", "name": "Wine Bars"}, {"category_filter": "beer_and_wine", "search_url": "http://www.yelp.com/search?find_loc=1304+Fulton+Street%2C+San+Francisco%2C+CA+94117&cflt=beer_and_wine", "name": "Beer, Wine & Spirits"}], "photo_url": "http://static.px.yelp.com/bpthumb/TRFnGi4Dk5XYkX38KMQ_Uw/ms", "distance": 1.0542008876800537, "name": "Corkage Sake and Wine Shop", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Western+Addition%2FNOPA%2C+San+Francisco%2C+CA", "name": "Western Addition/NOPA"}], "url": "http://www.yelp.com/biz/corkage-sake-and-wine-shop-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.4384484, "photo_url_small": "http://static.px.yelp.com/bpthumb/TRFnGi4Dk5XYkX38KMQ_Uw/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/vDdJPPRT4_6TociAEHJvgw?srid=qR9gfXBG2bAI--ffudbb8g", "url": "http://www.yelp.com/biz/corkage-sake-and-wine-shop-san-francisco#hrid:qR9gfXBG2bAI--ffudbb8g", "user_url": "http://www.yelp.com/user_details?userid=NRGUOpoK1RvIUWZPQ13QTg", "text_excerpt": "I'm just getting into writing reviews but I feel I'd be remiss if i didn't write a review for one of my favorite spots in town. Even though it scares me...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-03", "user_name": "ezra d.", "id": "qR9gfXBG2bAI--ffudbb8g"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/JiWacKWw01QjoL3Kqz-gYQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/vDdJPPRT4_6TociAEHJvgw?srid=v-TypFJpjx3sI5imG3muHg", "url": "http://www.yelp.com/biz/corkage-sake-and-wine-shop-san-francisco#hrid:v-TypFJpjx3sI5imG3muHg", "user_url": "http://www.yelp.com/user_details?userid=LIr-srYm2nOmPlXQxaYELQ", "text_excerpt": "Yoshi rocks!\nHe is sooo cool! and finds the right sake for you. \nI got my 'Happy Bride'!\n\nthank you Yoshi for such a wonderful time! =)", "user_photo_url": "http://static.px.yelp.com/upthumb/JiWacKWw01QjoL3Kqz-gYQ/ms", "date": "2009-03-27", "user_name": "Daniela D.", "id": "v-TypFJpjx3sI5imG3muHg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/2whWATS5zogQQcAX-gGRGQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/vDdJPPRT4_6TociAEHJvgw?srid=zS2Q_jRPYnSvApjcJnERbg", "url": "http://www.yelp.com/biz/corkage-sake-and-wine-shop-san-francisco#hrid:zS2Q_jRPYnSvApjcJnERbg", "user_url": "http://www.yelp.com/user_details?userid=uTSGqJGFwngSLTSckILesw", "text_excerpt": "this is a great spot for wine or sake. well, for me, mainly wine :)\n\nthey have a pretty decent selection of wines ranging from $15-45, however there are...", "user_photo_url": "http://static.px.yelp.com/upthumb/2whWATS5zogQQcAX-gGRGQ/ms", "date": "2009-02-26", "user_name": "Kandace J.", "id": "zS2Q_jRPYnSvApjcJnERbg"}], "nearby_url": "http://www.yelp.com/search?find_loc=1304+Fulton+Street%2C+San+Francisco%2C+CA+94117"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "vqIWlQ0AHMFBOiagpB9sGw", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/vqIWlQ0AHMFBOiagpB9sGw", "review_count": 43, "zip": "94122", "state": "CA", "latitude": 37.754299163818402, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1232 Noriega Street", "address2": "", "address3": "", "phone": "4156610166", "state_code": "CA", "categories": [{"category_filter": "divebars", "search_url": "http://www.yelp.com/search?find_loc=1232+Noriega+Street%2C+San+Francisco%2C+CA+94122&cflt=divebars", "name": "Dive Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/nD2x6wclDBcaSd6ftQOl8A/ms", "distance": 3.4622526168823242, "name": "Eagle's Drift In Lounge", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Outer+Sunset%2C+San+Francisco%2C+CA", "name": "Outer Sunset"}], "url": "http://www.yelp.com/biz/eagles-drift-in-lounge-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.476997375488, "photo_url_small": "http://static.px.yelp.com/bpthumb/nD2x6wclDBcaSd6ftQOl8A/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/Fz-tRBmSVG8i1Dm6s-Q0yA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/vqIWlQ0AHMFBOiagpB9sGw?srid=nRaORNVURLfU32LijX-fOg", "url": "http://www.yelp.com/biz/eagles-drift-in-lounge-san-francisco#hrid:nRaORNVURLfU32LijX-fOg", "user_url": "http://www.yelp.com/user_details?userid=hE34xpG35WugHznWf79HfQ", "text_excerpt": "For a bar that seems serious about their darts I have not been in here a single time when anyone is playing them. Which is a good thing, because I would...", "user_photo_url": "http://static.px.yelp.com/upthumb/Fz-tRBmSVG8i1Dm6s-Q0yA/ms", "date": "2009-04-17", "user_name": "Drue C.", "id": "nRaORNVURLfU32LijX-fOg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/UdPPgUlMb2DYpxQI3L-xAg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/vqIWlQ0AHMFBOiagpB9sGw?srid=2e-Y3tM2mbL8XmNSrKvOFg", "url": "http://www.yelp.com/biz/eagles-drift-in-lounge-san-francisco#hrid:2e-Y3tM2mbL8XmNSrKvOFg", "user_url": "http://www.yelp.com/user_details?userid=zvAZsfg7Id2c9X5Vx8uMvQ", "text_excerpt": "When it comes to bars, I like it empty and almost having the place all to myself and with my friends. This place is great because it is a great place to...", "user_photo_url": "http://static.px.yelp.com/upthumb/UdPPgUlMb2DYpxQI3L-xAg/ms", "date": "2009-03-18", "user_name": "Christina W.", "id": "2e-Y3tM2mbL8XmNSrKvOFg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/-3EK3uAM0q8SkB9uJCKLtw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/vqIWlQ0AHMFBOiagpB9sGw?srid=I53XvaUKFN8CirxYnFLPdQ", "url": "http://www.yelp.com/biz/eagles-drift-in-lounge-san-francisco#hrid:I53XvaUKFN8CirxYnFLPdQ", "user_url": "http://www.yelp.com/user_details?userid=smx4hf_nkWhFklxLwfGLjw", "text_excerpt": "The first time I came here we walked in at about 9 or 10 on a Saturday night and there wasn't a soul in sight--not even a bartender--and the placed smelled...", "user_photo_url": "http://static.px.yelp.com/upthumb/-3EK3uAM0q8SkB9uJCKLtw/ms", "date": "2009-01-10", "user_name": "Trav W.", "id": "I53XvaUKFN8CirxYnFLPdQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=1232+Noriega+Street%2C+San+Francisco%2C+CA+94122"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "rDlZHmGNnbBQWf-Ujfc2KA", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/rDlZHmGNnbBQWf-Ujfc2KA", "review_count": 126, "zip": "94122", "state": "CA", "latitude": 37.763401031494098, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "2328 Irving Street", "address2": "", "address3": "", "phone": "4156642555", "state_code": "CA", "categories": [{"category_filter": "pubs", "search_url": "http://www.yelp.com/search?find_loc=2328+Irving+Street%2C+San+Francisco%2C+CA+94122&cflt=pubs", "name": "Pubs"}, {"category_filter": "irish", "search_url": "http://www.yelp.com/search?find_loc=2328+Irving+Street%2C+San+Francisco%2C+CA+94122&cflt=irish", "name": "Irish"}], "photo_url": "http://static.px.yelp.com/bpthumb/TSwz87bjS4THX5X8W8kffA/ms", "distance": 3.5711524486541748, "name": "Durty Nelly's", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Outer+Sunset%2C+San+Francisco%2C+CA", "name": "Outer Sunset"}], "url": "http://www.yelp.com/biz/durty-nellys-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.48300170898401, "photo_url_small": "http://static.px.yelp.com/bpthumb/TSwz87bjS4THX5X8W8kffA/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/rDlZHmGNnbBQWf-Ujfc2KA?srid=zAr0i4_-Yvx3bMhAHxtRww", "url": "http://www.yelp.com/biz/durty-nellys-san-francisco#hrid:zAr0i4_-Yvx3bMhAHxtRww", "user_url": "http://www.yelp.com/user_details?userid=fYWW7lFdHcvUJ-gsTRJttw", "text_excerpt": "This place is the Shiznack!", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-07", "user_name": "shoo b.", "id": "zAr0i4_-Yvx3bMhAHxtRww"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/PBwngRvnIdtYIy9iF3tbbQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/rDlZHmGNnbBQWf-Ujfc2KA?srid=3w_awDdrGBWsJVpu8Cg8Kg", "url": "http://www.yelp.com/biz/durty-nellys-san-francisco#hrid:3w_awDdrGBWsJVpu8Cg8Kg", "user_url": "http://www.yelp.com/user_details?userid=RbaIxpAbwl6JrIPgIX4XIw", "text_excerpt": "I love Durty's!!! Not only is it a rad and pretty authentic Irish bar, but it has amazing food too! Bangers and mash, chicken pot pie, and an EXCELLENT...", "user_photo_url": "http://static.px.yelp.com/upthumb/PBwngRvnIdtYIy9iF3tbbQ/ms", "date": "2009-04-01", "user_name": "Jamie J.", "id": "3w_awDdrGBWsJVpu8Cg8Kg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/rDlZHmGNnbBQWf-Ujfc2KA?srid=CNIUSa4Os71fVYOk8Tu0lA", "url": "http://www.yelp.com/biz/durty-nellys-san-francisco#hrid:CNIUSa4Os71fVYOk8Tu0lA", "user_url": "http://www.yelp.com/user_details?userid=zlxg7BQ6StisAAC0cpUsZQ", "text_excerpt": "If this place was closer to where I live, I think I might go here once a week. A great little Irish pub. They pour a perfect Guinness. I had the...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-03-22", "user_name": "Luke P.", "id": "CNIUSa4Os71fVYOk8Tu0lA"}], "nearby_url": "http://www.yelp.com/search?find_loc=2328+Irving+Street%2C+San+Francisco%2C+CA+94122"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "c7BkLCKjHjIg7oS63LsI1Q", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/c7BkLCKjHjIg7oS63LsI1Q", "review_count": 47, "zip": "94114", "state": "CA", "latitude": 37.759743, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "572 Castro St", "address2": "", "address3": "", "phone": "4158642262", "state_code": "CA", "categories": [{"category_filter": "beer_and_wine", "search_url": "http://www.yelp.com/search?find_loc=572+Castro+St%2C+San+Francisco%2C+CA+94114&cflt=beer_and_wine", "name": "Beer, Wine & Spirits"}, {"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=572+Castro+St%2C+San+Francisco%2C+CA+94114&cflt=wine_bars", "name": "Wine Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/i7c6kns-SbJj6xe6Uy_34A/ms", "distance": 1.3577183485031128, "name": "Swirl on Castro", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Castro%2C+San+Francisco%2C+CA", "name": "Castro"}], "url": "http://www.yelp.com/biz/swirl-on-castro-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.434932, "photo_url_small": "http://static.px.yelp.com/bpthumb/i7c6kns-SbJj6xe6Uy_34A/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/x0-s9hvClAZWTTbvm-A_Hg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/c7BkLCKjHjIg7oS63LsI1Q?srid=V0CDM76r13GbsFBujh5tSg", "url": "http://www.yelp.com/biz/swirl-on-castro-san-francisco#hrid:V0CDM76r13GbsFBujh5tSg", "user_url": "http://www.yelp.com/user_details?userid=9hJYqwXzjbLsw_WUqYyzMg", "text_excerpt": "Here's an update since I went back last night - Thanks Jerry for a great time. You and your staff... Kelly, Josh and Kenny's Twin (sorry I forgot your name)...", "user_photo_url": "http://static.px.yelp.com/upthumb/x0-s9hvClAZWTTbvm-A_Hg/ms", "date": "2009-03-20", "user_name": "Jodi B.", "id": "V0CDM76r13GbsFBujh5tSg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/hspGLwRANroWkFZutDcO4w/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/c7BkLCKjHjIg7oS63LsI1Q?srid=f2EFPOtE2cWlwKwOyyUZuQ", "url": "http://www.yelp.com/biz/swirl-on-castro-san-francisco#hrid:f2EFPOtE2cWlwKwOyyUZuQ", "user_url": "http://www.yelp.com/user_details?userid=uSCYNal_CJDPGBYUAenyoA", "text_excerpt": "From the outside it's easy to get the impression that if Melissa Rivers married one of the Alitos and started a wine label to keep busy, this is where the...", "user_photo_url": "http://static.px.yelp.com/upthumb/hspGLwRANroWkFZutDcO4w/ms", "date": "2009-03-18", "user_name": "Luke M.", "id": "f2EFPOtE2cWlwKwOyyUZuQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/wwRGU_D9-Ajfs1mwko-nlw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/c7BkLCKjHjIg7oS63LsI1Q?srid=FR6vaLqh-MvXUAO1AHGHXQ", "url": "http://www.yelp.com/biz/swirl-on-castro-san-francisco#hrid:FR6vaLqh-MvXUAO1AHGHXQ", "user_url": "http://www.yelp.com/user_details?userid=V8t5zmkH-o5IHmKeds6DuA", "text_excerpt": "Great store with wine tasting bar. Nice alternative from the \"meat market\" bars in the Castro. Great place to hang with friends before or after dinner....", "user_photo_url": "http://static.px.yelp.com/upthumb/wwRGU_D9-Ajfs1mwko-nlw/ms", "date": "2009-03-17", "user_name": "Danny B.", "id": "FR6vaLqh-MvXUAO1AHGHXQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=572+Castro+St%2C+San+Francisco%2C+CA+94114"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "qxaYckrMuYu1PugSY1njzA", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/qxaYckrMuYu1PugSY1njzA", "review_count": 190, "zip": "94107", "state": "CA", "latitude": 37.758201599121101, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "2490 3rd St", "address2": "", "address3": "", "phone": "4154018984", "state_code": "CA", "categories": [{"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=2490+3rd+St%2C+San+Francisco%2C+CA+94107&cflt=wine_bars", "name": "Wine Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/vX704tjDFSzctwRTE5oaEA/ms", "distance": 2.021336555480957, "name": "Yield Wine Bar", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Dogpatch%2C+San+Francisco%2C+CA", "name": "Dogpatch"}, {"url": "http://www.yelp.com/search?find_loc=Potrero+Hill%2C+San+Francisco%2C+CA", "name": "Potrero Hill"}], "url": "http://www.yelp.com/biz/yield-wine-bar-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.388999938965, "photo_url_small": "http://static.px.yelp.com/bpthumb/vX704tjDFSzctwRTE5oaEA/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/t4zvXYHqYmm-QW0-Te2j1g/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/qxaYckrMuYu1PugSY1njzA?srid=E_DBJLUf03v8nzUDML-vIQ", "url": "http://www.yelp.com/biz/yield-wine-bar-san-francisco#hrid:E_DBJLUf03v8nzUDML-vIQ", "user_url": "http://www.yelp.com/user_details?userid=UBAfc-KuDXV8XLurou_i6g", "text_excerpt": "Really enjoyed this place. Nice selection of wine, smaller venue great for just catching up w/a friend or two over a drink. Some great bites to nosh on too....", "user_photo_url": "http://static.px.yelp.com/upthumb/t4zvXYHqYmm-QW0-Te2j1g/ms", "date": "2009-04-17", "user_name": "Abby W.", "id": "E_DBJLUf03v8nzUDML-vIQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/NR3YhAUjzQ4SZgkg6vqheA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/qxaYckrMuYu1PugSY1njzA?srid=ukTS7oSTJ9jLZwX32JBVpA", "url": "http://www.yelp.com/biz/yield-wine-bar-san-francisco#hrid:ukTS7oSTJ9jLZwX32JBVpA", "user_url": "http://www.yelp.com/user_details?userid=Fnw_f0X0-cBscRr4sX5JYg", "text_excerpt": "Great find, a friend of mine suggested this place and I most say it was a great find, the wine selection is accompanied by a wonderful description, the...", "user_photo_url": "http://static.px.yelp.com/upthumb/NR3YhAUjzQ4SZgkg6vqheA/ms", "date": "2009-04-15", "user_name": "Emmy B.", "id": "ukTS7oSTJ9jLZwX32JBVpA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/Ig55RB3mMzhZoptC6kJtPA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/qxaYckrMuYu1PugSY1njzA?srid=5ti4DbCQHC0Jv0BICzMqoA", "url": "http://www.yelp.com/biz/yield-wine-bar-san-francisco#hrid:5ti4DbCQHC0Jv0BICzMqoA", "user_url": "http://www.yelp.com/user_details?userid=d7RGLy5EPXEFpLAfh3uwvA", "text_excerpt": "I almost don't want to write this review. Yield is a rare gem and I don't want everyone and their brother stealing all the seats! 100 words or less:...", "user_photo_url": "http://static.px.yelp.com/upthumb/Ig55RB3mMzhZoptC6kJtPA/ms", "date": "2009-04-12", "user_name": "Meadow L.", "id": "5ti4DbCQHC0Jv0BICzMqoA"}], "nearby_url": "http://www.yelp.com/search?find_loc=2490+3rd+St%2C+San+Francisco%2C+CA+94107"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "7-dAb6BdjgJE_KHTX9CNGA", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/7-dAb6BdjgJE_KHTX9CNGA", "review_count": 54, "zip": "94133", "state": "CA", "latitude": 37.804698944091797, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "475 Francisco Street", "address2": "", "address3": "", "phone": "4154332343", "state_code": "CA", "categories": [{"category_filter": "lounges", "search_url": "http://www.yelp.com/search?find_loc=475+Francisco+Street%2C+San+Francisco%2C+CA+94133&cflt=lounges", "name": "Lounges"}], "photo_url": "http://static.px.yelp.com/bpthumb/uooIx_I_pm2PwbBOcDTRuw/ms", "distance": 2.0795242786407471, "name": "Sweeties", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=North+Beach%2FTelegraph+Hill%2C+San+Francisco%2C+CA", "name": "North Beach/Telegraph Hill"}], "url": "http://www.yelp.com/biz/sweeties-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.41300201416, "photo_url_small": "http://static.px.yelp.com/bpthumb/uooIx_I_pm2PwbBOcDTRuw/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/gy2uwuDpWj8mnewYVCWVVw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/7-dAb6BdjgJE_KHTX9CNGA?srid=6RoFwO-RdkMW6YqeORQFPw", "url": "http://www.yelp.com/biz/sweeties-san-francisco#hrid:6RoFwO-RdkMW6YqeORQFPw", "user_url": "http://www.yelp.com/user_details?userid=Vnja4xoPVQ7BLXIsVy_cFw", "text_excerpt": "Perfect place for a get together if you need a back room to yourselves. Pizza was delish. I'm glad we went. Cozy and charming and edgy all at the same time.", "user_photo_url": "http://static.px.yelp.com/upthumb/gy2uwuDpWj8mnewYVCWVVw/ms", "date": "2009-03-15", "user_name": "Amy J.", "id": "6RoFwO-RdkMW6YqeORQFPw"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/U7VW_Q_ITvOx-_oV5ThIhg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/7-dAb6BdjgJE_KHTX9CNGA?srid=6AEH1ho2sFA6SuzGoEDWMg", "url": "http://www.yelp.com/biz/sweeties-san-francisco#hrid:6AEH1ho2sFA6SuzGoEDWMg", "user_url": "http://www.yelp.com/user_details?userid=e1FuiYSV1v29q2OTR9ojBA", "text_excerpt": "You would probably NEVER know there was a bar here, unless you were in the neighborhood all the time. I thought I knew where almost every bar was in North...", "user_photo_url": "http://static.px.yelp.com/upthumb/U7VW_Q_ITvOx-_oV5ThIhg/ms", "date": "2009-03-01", "user_name": "Berna T.", "id": "6AEH1ho2sFA6SuzGoEDWMg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/7-dAb6BdjgJE_KHTX9CNGA?srid=8_kbZ8PfEEzREMiYqv6iyQ", "url": "http://www.yelp.com/biz/sweeties-san-francisco#hrid:8_kbZ8PfEEzREMiYqv6iyQ", "user_url": "http://www.yelp.com/user_details?userid=3xsmXxDysn5yqflq3AzWKQ", "text_excerpt": "We don't live in the North Beach, but we still felt like neighbors when we visited Sweeties on Valentine's Day 2009. My fiancee and I dropped by after...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-02-28", "user_name": "Tim N.", "id": "8_kbZ8PfEEzREMiYqv6iyQ"}], "nearby_url": "http://www.yelp.com/search?find_loc=475+Francisco+Street%2C+San+Francisco%2C+CA+94133"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "_cJARVZ55acNpNeCRmHTmQ", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/_cJARVZ55acNpNeCRmHTmQ", "review_count": 88, "zip": "94109", "state": "CA", "latitude": 37.785784999999997, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "1060 Geary St", "address2": "", "address3": "", "phone": "4158854788", "state_code": "CA", "categories": [{"category_filter": "bars", "search_url": "http://www.yelp.com/search?find_loc=1060+Geary+St%2C+San+Francisco%2C+CA+94109&cflt=bars", "name": "Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/U_PzfAHm5cyg7wOF2FjE-w/ms", "distance": 0.74834960699081421, "name": "KoKo Cocktails", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Civic+Center%2FTenderloin%2C+San+Francisco%2C+CA", "name": "Civic Center/Tenderloin"}, {"url": "http://www.yelp.com/search?find_loc=Nob+Hill%2C+San+Francisco%2C+CA", "name": "Nob Hill"}], "url": "http://www.yelp.com/biz/koko-cocktails-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.420721, "photo_url_small": "http://static.px.yelp.com/bpthumb/U_PzfAHm5cyg7wOF2FjE-w/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/8JO3AwYQADb4oEgywyiHkw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/_cJARVZ55acNpNeCRmHTmQ?srid=tWELGmx8xmZv9fUENn7jIA", "url": "http://www.yelp.com/biz/koko-cocktails-san-francisco#hrid:tWELGmx8xmZv9fUENn7jIA", "user_url": "http://www.yelp.com/user_details?userid=iV_Hnp3sFxncd6MNhkndGA", "text_excerpt": "Epic drinks and legendary bartenders. I wish I was at Koko's right now.\n\np.s. Autumn K. at Koko's? I'll believe it when I see it. :D", "user_photo_url": "http://static.px.yelp.com/upthumb/8JO3AwYQADb4oEgywyiHkw/ms", "date": "2009-04-02", "user_name": "Chris R.", "id": "tWELGmx8xmZv9fUENn7jIA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/gqiMnFeJ-Ddlw_4b0w1-VA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/_cJARVZ55acNpNeCRmHTmQ?srid=zlYWR5eGTcK3UbCD_URGHQ", "url": "http://www.yelp.com/biz/koko-cocktails-san-francisco#hrid:zlYWR5eGTcK3UbCD_URGHQ", "user_url": "http://www.yelp.com/user_details?userid=0sPPamYvk77rDOYECr_85A", "text_excerpt": "New and much cooler cocktail menu!! Who wants some?", "user_photo_url": "http://static.px.yelp.com/upthumb/gqiMnFeJ-Ddlw_4b0w1-VA/ms", "date": "2009-04-02", "user_name": "Chard M.", "id": "zlYWR5eGTcK3UbCD_URGHQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/O4cr5BaYOCApJIHhnqDEtw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/_cJARVZ55acNpNeCRmHTmQ?srid=u3pvhJyoOZ0Q602Xjc-7kA", "url": "http://www.yelp.com/biz/koko-cocktails-san-francisco#hrid:u3pvhJyoOZ0Q602Xjc-7kA", "user_url": "http://www.yelp.com/user_details?userid=K6jTnDUtLuxyTFASgCS-gw", "text_excerpt": "Yes, people do still say rad (at least I do) and this bar is definitely rad! As are the bartenders, if you hook them up, they will hook you up. But don't...", "user_photo_url": "http://static.px.yelp.com/upthumb/O4cr5BaYOCApJIHhnqDEtw/ms", "date": "2009-03-29", "user_name": "Ronaldo T.", "id": "u3pvhJyoOZ0Q602Xjc-7kA"}], "nearby_url": "http://www.yelp.com/search?find_loc=1060+Geary+St%2C+San+Francisco%2C+CA+94109"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "WS9QI7amntnRUu-cgewQAw", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/WS9QI7amntnRUu-cgewQAw", "review_count": 33, "zip": "94118", "state": "CA", "latitude": 37.777500152587898, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "598 5th Avenue", "address2": "", "address3": "", "phone": "4157511449", "state_code": "CA", "categories": [{"category_filter": "bars", "search_url": "http://www.yelp.com/search?find_loc=598+5th+Avenue%2C+San+Francisco%2C+CA+94118&cflt=bars", "name": "Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/e6tjIs4o7g4prs25U2nkxg/ms", "distance": 2.3935027122497559, "name": "O'Keeffe's Bar", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Inner+Richmond%2C+San+Francisco%2C+CA", "name": "Inner Richmond"}], "url": "http://www.yelp.com/biz/okeeffes-bar-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.462997436523, "photo_url_small": "http://static.px.yelp.com/bpthumb/e6tjIs4o7g4prs25U2nkxg/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/WS9QI7amntnRUu-cgewQAw?srid=NJfFkIR1k1SFkACtePHnWA", "url": "http://www.yelp.com/biz/okeeffes-bar-san-francisco#hrid:NJfFkIR1k1SFkACtePHnWA", "user_url": "http://www.yelp.com/user_details?userid=qxEwdvhxDw51cAEejXK83g", "text_excerpt": "Met Annie at her spot behind the bar. She is one tough lady, old school irish. My bud Jim grew up around there, heard him tell many cool stories from the...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-17", "user_name": "Dan M.", "id": "NJfFkIR1k1SFkACtePHnWA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/OhMim2CBXFYiz7uOpGu2jQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/WS9QI7amntnRUu-cgewQAw?srid=6tuZws8FKafDWTwV8gPiAg", "url": "http://www.yelp.com/biz/okeeffes-bar-san-francisco#hrid:6tuZws8FKafDWTwV8gPiAg", "user_url": "http://www.yelp.com/user_details?userid=DcmI6NlZykgvvZ4SkYoTdA", "text_excerpt": "This place is the epitome of \"Dive.\" Came here on St. Patty's day, and it surely lived up to being Irish. The small band with children playing drums and...", "user_photo_url": "http://static.px.yelp.com/upthumb/OhMim2CBXFYiz7uOpGu2jQ/ms", "date": "2009-03-18", "user_name": "Ruchi P.", "id": "6tuZws8FKafDWTwV8gPiAg"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/-wkOaTBgkX78kgWd9qKLDg/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/WS9QI7amntnRUu-cgewQAw?srid=GgR8AfSlTQWN0kF-lKk-zw", "url": "http://www.yelp.com/biz/okeeffes-bar-san-francisco#hrid:GgR8AfSlTQWN0kF-lKk-zw", "user_url": "http://www.yelp.com/user_details?userid=emF8KqAfI2VL6Sfaek9gFg", "text_excerpt": "You know it's time to go home on St. Patrick's Day when you're at a smoky 95% authentic Irish bar, the live drum and recorder band of Irish children has...", "user_photo_url": "http://static.px.yelp.com/upthumb/-wkOaTBgkX78kgWd9qKLDg/ms", "date": "2009-03-17", "user_name": "Kate V.", "id": "GgR8AfSlTQWN0kF-lKk-zw"}], "nearby_url": "http://www.yelp.com/search?find_loc=598+5th+Avenue%2C+San+Francisco%2C+CA+94118"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "country_code": "US", "id": "BOQOJXezjYZWolsmTcF2UA", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/BOQOJXezjYZWolsmTcF2UA", "review_count": 36, "zip": "94103", "state": "CA", "latitude": 37.768317000000003, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "address1": "1799 Mission St", "address2": "at 14th St", "address3": "", "phone": "4158613002", "state_code": "CA", "categories": [{"category_filter": "bars", "search_url": "http://www.yelp.com/search?find_loc=1799+Mission+St%2C+San+Francisco%2C+CA+94103&cflt=bars", "name": "Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/gBxuzXOtKuRR9t29myOPYg/ms", "distance": 0.46441715955734253, "name": "Ace Cafe", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Mission%2C+San+Francisco%2C+CA", "name": "Mission"}], "url": "http://www.yelp.com/biz/ace-cafe-san-francisco", "country": "USA", "avg_rating": 4.0, "longitude": -122.420008, "photo_url_small": "http://static.px.yelp.com/bpthumb/gBxuzXOtKuRR9t29myOPYg/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/-LlBQzy_lMDN8rqcZxxduQ/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/BOQOJXezjYZWolsmTcF2UA?srid=7Dh2kxj3f8r_kgRdZPUvvQ", "url": "http://www.yelp.com/biz/ace-cafe-san-francisco#hrid:7Dh2kxj3f8r_kgRdZPUvvQ", "user_url": "http://www.yelp.com/user_details?userid=CqMlDAQW_5Rj7Nu2hIrwfw", "text_excerpt": "I thoroughly enjoyed The Ace Caf\u00e9 at 14th and Mission Street and highly recommend it to anyone who doesn't mind a little smoke, can appreciate a diverse...", "user_photo_url": "http://static.px.yelp.com/upthumb/-LlBQzy_lMDN8rqcZxxduQ/ms", "date": "2009-02-24", "user_name": "Gadiel M.", "id": "7Dh2kxj3f8r_kgRdZPUvvQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/BOQOJXezjYZWolsmTcF2UA?srid=Vo3lgIL74UZSi5J7iPw1oQ", "url": "http://www.yelp.com/biz/ace-cafe-san-francisco#hrid:Vo3lgIL74UZSi5J7iPw1oQ", "user_url": "http://www.yelp.com/user_details?userid=17AUx3RVchxyaqk71ygWaw", "text_excerpt": "Best fish and chips around. ( don't worry about the bikers, they're weak )", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-01-09", "user_name": "jeff b.", "id": "Vo3lgIL74UZSi5J7iPw1oQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_3.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/PoGEmHpxRjKFiNOFz1a2jw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_3.png", "rating": 3, "mobile_uri": "http://mobile.yelp.com/biz/BOQOJXezjYZWolsmTcF2UA?srid=6GvHJ_XmbQNd74VihlIDdA", "url": "http://www.yelp.com/biz/ace-cafe-san-francisco#hrid:6GvHJ_XmbQNd74VihlIDdA", "user_url": "http://www.yelp.com/user_details?userid=XnbGrJNw0wglmqXekW138Q", "text_excerpt": "funny little dive bar... they do have snacks, plenty of tables, a pool table, and a good jukebox. minus one star because you can smoke there (which for...", "user_photo_url": "http://static.px.yelp.com/upthumb/PoGEmHpxRjKFiNOFz1a2jw/ms", "date": "2008-12-08", "user_name": "Carolyn B.", "id": "6GvHJ_XmbQNd74VihlIDdA"}], "nearby_url": "http://www.yelp.com/search?find_loc=1799+Mission+St%2C+San+Francisco%2C+CA+94103"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "country_code": "US", "id": "owj5tzY8w8zXSXza_LS8NQ", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/owj5tzY8w8zXSXza_LS8NQ", "review_count": 371, "zip": "94102", "state": "CA", "latitude": 37.773701000000003, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "address1": "45 Rose St", "address2": "", "address3": "", "phone": "4157030403", "state_code": "CA", "categories": [{"category_filter": "wine_bars", "search_url": "http://www.yelp.com/search?find_loc=45+Rose+St%2C+San+Francisco%2C+CA+94102&cflt=wine_bars", "name": "Wine Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/xOFIYiRKU8NjyBsyGw5Rxg/ms", "distance": 0.16015078127384186, "name": "H\u00f4tel Biron", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=Hayes+Valley%2C+San+Francisco%2C+CA", "name": "Hayes Valley"}], "url": "http://www.yelp.com/biz/hotel-biron-san-francisco", "country": "USA", "avg_rating": 4.0, "longitude": -122.42170400000001, "photo_url_small": "http://static.px.yelp.com/bpthumb/xOFIYiRKU8NjyBsyGw5Rxg/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/NR3YhAUjzQ4SZgkg6vqheA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/owj5tzY8w8zXSXza_LS8NQ?srid=vabDEJCITNijgdNAU0nugQ", "url": "http://www.yelp.com/biz/hotel-biron-san-francisco#hrid:vabDEJCITNijgdNAU0nugQ", "user_url": "http://www.yelp.com/user_details?userid=Fnw_f0X0-cBscRr4sX5JYg", "text_excerpt": "I checked this place out on Monday, and it lived up to all the hype. The wine selection was impressive, and the staff friendly. Its tiny, but yet it gives...", "user_photo_url": "http://static.px.yelp.com/upthumb/NR3YhAUjzQ4SZgkg6vqheA/ms", "date": "2009-04-15", "user_name": "Emmy B.", "id": "vabDEJCITNijgdNAU0nugQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/-9iUpFLA7gUwU-xeVczgLA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/owj5tzY8w8zXSXza_LS8NQ?srid=rZvHiZioZHzbK9SGEsAfhA", "url": "http://www.yelp.com/biz/hotel-biron-san-francisco#hrid:rZvHiZioZHzbK9SGEsAfhA", "user_url": "http://www.yelp.com/user_details?userid=AzUISA7zjPXVzxOBuNVUBA", "text_excerpt": "Amazingly I was taken here on a \"date\". I say amazingly in reference to this economy and the fact that some one was willing to spend such ridiculous monies...", "user_photo_url": "http://static.px.yelp.com/upthumb/-9iUpFLA7gUwU-xeVczgLA/ms", "date": "2009-04-06", "user_name": "montgomery r.", "id": "rZvHiZioZHzbK9SGEsAfhA"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/AL3w82TCtSeJHHWon43RUw/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/owj5tzY8w8zXSXza_LS8NQ?srid=6kA_HdUvQuOPZGiYaRoMOw", "url": "http://www.yelp.com/biz/hotel-biron-san-francisco#hrid:6kA_HdUvQuOPZGiYaRoMOw", "user_url": "http://www.yelp.com/user_details?userid=zpXqbJQ2CT4PsUBTy30DbQ", "text_excerpt": "Adorable, amazing. The cutest little European hotel / wine bar I've ever seen in San Francisco\n\nCame here for a drink before dinner in Hayes Valley. It's...", "user_photo_url": "http://static.px.yelp.com/upthumb/AL3w82TCtSeJHHWon43RUw/ms", "date": "2009-04-04", "user_name": "Jenny W.", "id": "6kA_HdUvQuOPZGiYaRoMOw"}], "nearby_url": "http://www.yelp.com/search?find_loc=45+Rose+St%2C+San+Francisco%2C+CA+94102"}, {"rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4_half.png", "country_code": "US", "id": "bcXY_zGB4zWQuNnxfR7Z3w", "is_closed": false, "city": "San Francisco", "mobile_url": "http://mobile.yelp.com/biz/bcXY_zGB4zWQuNnxfR7Z3w", "review_count": 141, "zip": "94133", "state": "CA", "latitude": 37.797460899999997, "rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4_half.png", "address1": "242 Columbus Avenue", "address2": "", "address3": "", "phone": "4159869651", "state_code": "CA", "categories": [{"category_filter": "bars", "search_url": "http://www.yelp.com/search?find_loc=242+Columbus+Avenue%2C+San+Francisco%2C+CA+94133&cflt=bars", "name": "Bars"}], "photo_url": "http://static.px.yelp.com/bpthumb/eetod47ppa8zUbX8L80o_A/ms", "distance": 1.7111668586730957, "name": "Tosca Cafe", "neighborhoods": [{"url": "http://www.yelp.com/search?find_loc=North+Beach%2FTelegraph+Hill%2C+San+Francisco%2C+CA", "name": "North Beach/Telegraph Hill"}, {"url": "http://www.yelp.com/search?find_loc=Nob+Hill%2C+San+Francisco%2C+CA", "name": "Nob Hill"}], "url": "http://www.yelp.com/biz/tosca-cafe-san-francisco", "country": "USA", "avg_rating": 4.5, "longitude": -122.40604879999999, "photo_url_small": "http://static.px.yelp.com/bpthumb/eetod47ppa8zUbX8L80o_A/ss", "reviews": [{"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_4.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/QS-jEagZ4se63l9kV87XWA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_4.png", "rating": 4, "mobile_uri": "http://mobile.yelp.com/biz/bcXY_zGB4zWQuNnxfR7Z3w?srid=YaZ8zIeIhOGE0Q90hyaHxQ", "url": "http://www.yelp.com/biz/tosca-cafe-san-francisco#hrid:YaZ8zIeIhOGE0Q90hyaHxQ", "user_url": "http://www.yelp.com/user_details?userid=KpwPavO0PtuSTIaJ2Uslfg", "text_excerpt": "The vibe here is spooky!! I like being spooked out, I think it's fun, like watching a scary movie or something, so I really liked it. The seating is 50s...", "user_photo_url": "http://static.px.yelp.com/upthumb/QS-jEagZ4se63l9kV87XWA/ms", "date": "2009-04-11", "user_name": "Elizabeth B.", "id": "YaZ8zIeIhOGE0Q90hyaHxQ"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_5.png", "user_photo_url_small": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_extra_small.gif", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_5.png", "rating": 5, "mobile_uri": "http://mobile.yelp.com/biz/bcXY_zGB4zWQuNnxfR7Z3w?srid=bDXqtUlB4_xbAXhPG_eslw", "url": "http://www.yelp.com/biz/tosca-cafe-san-francisco#hrid:bDXqtUlB4_xbAXhPG_eslw", "user_url": "http://www.yelp.com/user_details?userid=755f5UrhlcEiPjfLUcKdDw", "text_excerpt": "The world famous Tosca Cafe is a home away from home, a private club, a public meeting place, shelter from the storm, what you need when you need it,\nThe...", "user_photo_url": "http://static.px.yelp.com/static/20090416/i/new/gfx/blank_user_small.gif", "date": "2009-04-10", "user_name": "Dale D.", "id": "bDXqtUlB4_xbAXhPG_eslw"}, {"rating_img_url_small": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_small_2.png", "user_photo_url_small": "http://static.px.yelp.com/upthumb/XyhcfxLEyoEJl1jLB1gkLA/ss", "rating_img_url": "http://static.px.yelp.com/static/20090416/i/new/ico/stars/stars_2.png", "rating": 2, "mobile_uri": "http://mobile.yelp.com/biz/bcXY_zGB4zWQuNnxfR7Z3w?srid=JqOunqnq9xLTYW1LfVjsfA", "url": "http://www.yelp.com/biz/tosca-cafe-san-francisco#hrid:JqOunqnq9xLTYW1LfVjsfA", "user_url": "http://www.yelp.com/user_details?userid=IWal1ziP1AlfcgDJj5CKFw", "text_excerpt": "2.stars for the ambiance, the rest, eh.\nCool spot but it was pretty empty on a friday evening from when we got there at 9 o'clock until we left a couple of...", "user_photo_url": "http://static.px.yelp.com/upthumb/XyhcfxLEyoEJl1jLB1gkLA/ms", "date": "2009-04-04", "user_name": "Aaron T.", "id": "JqOunqnq9xLTYW1LfVjsfA"}], "nearby_url": "http://www.yelp.com/search?find_loc=242+Columbus+Avenue%2C+San+Francisco%2C+CA+94133"}]}
@@ -0,0 +1,56 @@
1
+ [
2
+ "JSON Test Pattern pass1",
3
+ {"object with 1 member":["array with 1 element"]},
4
+ {},
5
+ [],
6
+ -42,
7
+ true,
8
+ false,
9
+ null,
10
+ {
11
+ "integer": 1234567890,
12
+ "real": -9876.543210,
13
+ "e": 0.123456789e-12,
14
+ "E": 1.234567890E+34,
15
+ "": 23456789012E66,
16
+ "zero": 0,
17
+ "one": 1,
18
+ "space": " ",
19
+ "quote": "\"",
20
+ "backslash": "\\",
21
+ "controls": "\b\f\n\r\t",
22
+ "slash": "/ & \/",
23
+ "alpha": "abcdefghijklmnopqrstuvwyz",
24
+ "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
25
+ "digit": "0123456789",
26
+ "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
27
+ "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
28
+ "true": true,
29
+ "false": false,
30
+ "null": null,
31
+ "array":[ ],
32
+ "object":{ },
33
+ "address": "50 St. James Street",
34
+ "url": "http://www.JSON.org/",
35
+ "comment": "// /* <!-- --",
36
+ "# -- --> */": " ",
37
+ " s p a c e d " :[1,2 , 3
38
+
39
+ ,
40
+
41
+ 4 , 5 , 6 ,7 ],
42
+ "compact": [1,2,3,4,5,6,7],
43
+ "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
44
+ "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
45
+ "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
46
+ : "A key can be any string"
47
+ },
48
+ 0.5 ,98.6
49
+ ,
50
+ 99.44
51
+ ,
52
+
53
+ 1066
54
+
55
+
56
+ ,"rosebud"]
@@ -0,0 +1 @@
1
+ [[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]
@@ -0,0 +1,6 @@
1
+ {
2
+ "JSON Test Pattern pass3": {
3
+ "The outermost value": "must be an object or array.",
4
+ "In this test": "It is an object."
5
+ }
6
+ }
@@ -0,0 +1,40 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
2
+
3
+ describe "Parsing JSON Fixtures" do
4
+ fixtures = File.join(File.dirname(__FILE__), 'fixtures/*.json')
5
+ passed, failed = Dir[fixtures].partition { |f| f['pass'] }
6
+ PASSED = passed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
7
+ FAILED = failed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
8
+
9
+ FAILED.each do |name, source|
10
+ it "should not be able to parse #{File.basename(name)} as an IO" do
11
+ lambda {
12
+ Yajl::Parser.parse(StringIO.new(source))
13
+ }.should raise_error(Yajl::ParseError)
14
+ end
15
+ end
16
+
17
+ FAILED.each do |name, source|
18
+ it "should not be able to parse #{File.basename(name)} as a string" do
19
+ lambda {
20
+ Yajl::Parser.parse(source)
21
+ }.should raise_error(Yajl::ParseError)
22
+ end
23
+ end
24
+
25
+ PASSED.each do |name, source|
26
+ it "should be able to parse #{File.basename(name)} as an IO" do
27
+ lambda {
28
+ Yajl::Parser.parse(StringIO.new(source))
29
+ }.should_not raise_error(Yajl::ParseError)
30
+ end
31
+ end
32
+
33
+ PASSED.each do |name, source|
34
+ it "should be able to parse #{File.basename(name)} as a string" do
35
+ lambda {
36
+ Yajl::Parser.parse(source)
37
+ }.should_not raise_error(Yajl::ParseError)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,85 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
3
+
4
+ describe "One-off JSON examples" do
5
+ it "should parse 23456789012E666 and return Infinity" do
6
+ infinity = (1.0/0)
7
+ silence_warnings do
8
+ Yajl::Parser.parse(StringIO.new('{"key": 23456789012E666}')).should == {"key" => infinity}
9
+ end
10
+ end
11
+
12
+ it "should not parse JSON with a comment, with :allow_comments set to false" do
13
+ json = StringIO.new('{"key": /* this is a comment */ "value"}')
14
+ lambda {
15
+ Yajl::Parser.parse(json, :allow_comments => false)
16
+ }.should raise_error(Yajl::ParseError)
17
+ end
18
+
19
+ it "should parse JSON with a comment, with :allow_comments set to true" do
20
+ json = StringIO.new('{"key": /* this is a comment */ "value"}')
21
+ lambda {
22
+ Yajl::Parser.parse(json, :allow_comments => true)
23
+ }.should_not raise_error(Yajl::ParseError)
24
+ end
25
+
26
+ it "should not parse invalid UTF8 with :check_utf8 set to true" do
27
+ parser = Yajl::Parser.new(:check_utf8 => true)
28
+ lambda {
29
+ parser.parse("[\"#{"\201\203"}\"]")
30
+ }.should raise_error(Yajl::ParseError)
31
+ end
32
+
33
+ it "should parse invalid UTF8 with :check_utf8 set to false" do
34
+ parser = Yajl::Parser.new(:check_utf8 => false)
35
+ parser.parse("[\"#{"\201\203"}\"]").inspect
36
+ end
37
+
38
+ it "should parse using it's class method, from an IO" do
39
+ io = StringIO.new('{"key": 1234}')
40
+ Yajl::Parser.parse(io).should == {"key" => 1234}
41
+ end
42
+
43
+ it "should parse using it's class method, from a string with symbolized keys" do
44
+ Yajl::Parser.parse('{"key": 1234}', :symbolize_keys => true).should == {:key => 1234}
45
+ end
46
+
47
+ it "should parse using it's class method, from a utf-8 string with multibyte characters, with symbolized keys" do
48
+ Yajl::Parser.parse('{"日本語": 1234}', :symbolize_keys => true).should == {:"日本語" => 1234}
49
+ end
50
+
51
+ it "should parse using it's class method, from a string" do
52
+ Yajl::Parser.parse('{"key": 1234}').should == {"key" => 1234}
53
+ end
54
+
55
+ it "should parse using it's class method, from a string with a block" do
56
+ output = nil
57
+ Yajl::Parser.parse('{"key": 1234}') do |obj|
58
+ output = obj
59
+ end
60
+ output.should == {"key" => 1234}
61
+ end
62
+
63
+ it "should parse numbers greater than 2,147,483,648" do
64
+ Yajl::Parser.parse("{\"id\": 2147483649}").should eql({"id" => 2147483649})
65
+ Yajl::Parser.parse("{\"id\": 5687389800}").should eql({"id" => 5687389800})
66
+ Yajl::Parser.parse("{\"id\": 1046289770033519442869495707521600000000}").should eql({"id" => 1046289770033519442869495707521600000000})
67
+ end
68
+
69
+ if RUBY_VERSION =~ /^1.9/
70
+ it "should return strings and hash keys in utf-8 if Encoding.default_internal is nil" do
71
+ Encoding.default_internal = nil
72
+ Yajl::Parser.parse('{"key": "value"}').keys.first.encoding.should eql(Encoding.find('utf-8'))
73
+ Yajl::Parser.parse('{"key": "value"}').values.first.encoding.should eql(Encoding.find('utf-8'))
74
+ end
75
+
76
+ it "should return strings and hash keys encoded as specified in Encoding.default_internal if it's set" do
77
+ Encoding.default_internal = Encoding.find('utf-8')
78
+ Yajl::Parser.parse('{"key": "value"}').keys.first.encoding.should eql(Encoding.default_internal)
79
+ Yajl::Parser.parse('{"key": "value"}').values.first.encoding.should eql(Encoding.default_internal)
80
+ Encoding.default_internal = Encoding.find('us-ascii')
81
+ Yajl::Parser.parse('{"key": "value"}').keys.first.encoding.should eql(Encoding.default_internal)
82
+ Yajl::Parser.parse('{"key": "value"}').values.first.encoding.should eql(Encoding.default_internal)
83
+ end
84
+ end
85
+ end
data/spec/rcov.opts ADDED
@@ -0,0 +1,3 @@
1
+ --exclude spec,gem
2
+ --text-summary
3
+ --sort coverage --sort-reverse
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/..')
2
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+
4
+ require 'rspec'
5
+ require 'yajl'
6
+ require 'date'
7
+ require 'stringio'
8
+
9
+ module Kernel
10
+ def silence_warnings
11
+ old_verbose, $VERBOSE = $VERBOSE, nil
12
+ yield
13
+ ensure
14
+ $VERBOSE = old_verbose
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ require 'rake/extensiontask'
2
+
3
+ def gemspec
4
+ @clean_gemspec ||= eval(File.read(File.expand_path('../../yajl-ruby.gemspec', __FILE__)))
5
+ end
6
+
7
+ Rake::ExtensionTask.new('yajl', gemspec) do |ext|
8
+ # automatically add build options to avoid need of manual input
9
+ ext.cross_compile = true
10
+ ext.cross_platform = ['x86-mingw32', 'x86-mswin32-60']
11
+
12
+ # inject 1.8/1.9 pure-ruby entry point when cross compiling only
13
+ ext.cross_compiling do |spec|
14
+ spec.files << 'lib/yajl/yajl.rb'
15
+ end
16
+
17
+ ext.lib_dir = File.join 'lib', 'yajl'
18
+
19
+ # clean compiled extension
20
+ CLEAN.include "#{ext.lib_dir}/*.#{RbConfig::CONFIG['DLEXT']}"
21
+ end
22
+ Rake::Task[:spec].prerequisites << :compile
23
+
24
+ file 'lib/yajl/yajl.rb' do |t|
25
+ File.open(t.name, 'wb') do |f|
26
+ f.write <<-eoruby
27
+ RUBY_VERSION =~ /(\\d+.\\d+)/
28
+ require "yajl/\#{$1}/yajl"
29
+ eoruby
30
+ end
31
+ end
32
+
33
+ if Rake::Task.task_defined?(:cross)
34
+ Rake::Task[:cross].prerequisites << 'lib/yajl/yajl.rb'
35
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,16 @@
1
+ begin
2
+ require 'rspec'
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc "Run all examples with RCov"
6
+ RSpec::Core::RakeTask.new('spec:rcov') do |t|
7
+ t.rcov = true
8
+ end
9
+ RSpec::Core::RakeTask.new('spec') do |t|
10
+ t.verbose = true
11
+ end
12
+
13
+ task :default => :spec
14
+ rescue LoadError
15
+ puts "rspec, or one of its dependencies, is not available. Install it with: sudo gem install rspec"
16
+ end
data/yajl-ruby.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ require './lib/yajl/version'
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{yajl-ruby}
5
+ s.version = Yajl::VERSION
6
+ s.authors = ["Brian Lopez", "Lloyd Hilaiel"]
7
+ s.date = Time.now.utc.strftime("%Y-%m-%d")
8
+ s.email = %q{seniorlopez@gmail.com}
9
+ s.extensions = ["ext/yajl/extconf.rb"]
10
+ s.files = `git ls-files`.split("\n")
11
+ s.homepage = %q{http://github.com/brianmario/yajl-ruby}
12
+ s.require_paths = ["lib"]
13
+ s.rubygems_version = %q{1.4.2}
14
+ s.summary = %q{Ruby C bindings to the excellent Yajl JSON stream-based parser library.}
15
+ s.test_files = `git ls-files spec examples`.split("\n")
16
+
17
+ # tests
18
+ s.add_development_dependency 'rake-compiler', ">= 0.7.5"
19
+ s.add_development_dependency 'rspec', ">= 2.0.0"
20
+ # benchmarks
21
+ s.add_development_dependency 'activesupport'
22
+ s.add_development_dependency 'json'
23
+ end
24
+
metadata ADDED
@@ -0,0 +1,335 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yajl-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: x86-mingw32
7
+ authors:
8
+ - Brian Lopez
9
+ - Lloyd Hilaiel
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-09-16 00:00:00.000000000 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rake-compiler
18
+ requirement: &70201852992700 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: 0.7.5
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: *70201852992700
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: &70201857314280 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 2.0.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *70201857314280
38
+ - !ruby/object:Gem::Dependency
39
+ name: activesupport
40
+ requirement: &70201857704040 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *70201857704040
49
+ - !ruby/object:Gem::Dependency
50
+ name: json
51
+ requirement: &70201857706960 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *70201857706960
60
+ description:
61
+ email: seniorlopez@gmail.com
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - .gitignore
67
+ - .rspec
68
+ - CHANGELOG.md
69
+ - Gemfile
70
+ - MIT-LICENSE
71
+ - README.md
72
+ - Rakefile
73
+ - benchmark/encode.rb
74
+ - benchmark/encode_json_and_marshal.rb
75
+ - benchmark/encode_json_and_yaml.rb
76
+ - benchmark/http.rb
77
+ - benchmark/parse.rb
78
+ - benchmark/parse_json_and_marshal.rb
79
+ - benchmark/parse_json_and_yaml.rb
80
+ - benchmark/parse_stream.rb
81
+ - benchmark/subjects/item.json
82
+ - benchmark/subjects/ohai.json
83
+ - benchmark/subjects/ohai.marshal_dump
84
+ - benchmark/subjects/ohai.yml
85
+ - benchmark/subjects/twitter_search.json
86
+ - benchmark/subjects/twitter_stream.json
87
+ - benchmark/subjects/unicode.json
88
+ - examples/encoding/chunked_encoding.rb
89
+ - examples/encoding/one_shot.rb
90
+ - examples/encoding/to_an_io.rb
91
+ - examples/http/twitter_search_api.rb
92
+ - examples/http/twitter_stream_api.rb
93
+ - examples/parsing/from_file.rb
94
+ - examples/parsing/from_stdin.rb
95
+ - examples/parsing/from_string.rb
96
+ - ext/yajl/api/yajl_common.h
97
+ - ext/yajl/api/yajl_gen.h
98
+ - ext/yajl/api/yajl_parse.h
99
+ - ext/yajl/api/yajl_version.h
100
+ - ext/yajl/extconf.rb
101
+ - ext/yajl/yajl.c
102
+ - ext/yajl/yajl_alloc.c
103
+ - ext/yajl/yajl_alloc.h
104
+ - ext/yajl/yajl_buf.c
105
+ - ext/yajl/yajl_buf.h
106
+ - ext/yajl/yajl_bytestack.h
107
+ - ext/yajl/yajl_encode.c
108
+ - ext/yajl/yajl_encode.h
109
+ - ext/yajl/yajl_ext.c
110
+ - ext/yajl/yajl_ext.h
111
+ - ext/yajl/yajl_gen.c
112
+ - ext/yajl/yajl_lex.c
113
+ - ext/yajl/yajl_lex.h
114
+ - ext/yajl/yajl_parser.c
115
+ - ext/yajl/yajl_parser.h
116
+ - ext/yajl/yajl_version.c
117
+ - lib/yajl.rb
118
+ - lib/yajl/bzip2.rb
119
+ - lib/yajl/bzip2/stream_reader.rb
120
+ - lib/yajl/bzip2/stream_writer.rb
121
+ - lib/yajl/deflate.rb
122
+ - lib/yajl/deflate/stream_reader.rb
123
+ - lib/yajl/deflate/stream_writer.rb
124
+ - lib/yajl/gzip.rb
125
+ - lib/yajl/gzip/stream_reader.rb
126
+ - lib/yajl/gzip/stream_writer.rb
127
+ - lib/yajl/http_stream.rb
128
+ - lib/yajl/json_gem.rb
129
+ - lib/yajl/json_gem/encoding.rb
130
+ - lib/yajl/json_gem/parsing.rb
131
+ - lib/yajl/version.rb
132
+ - spec/encoding/encoding_spec.rb
133
+ - spec/global/global_spec.rb
134
+ - spec/http/fixtures/http.bzip2.dump
135
+ - spec/http/fixtures/http.chunked.dump
136
+ - spec/http/fixtures/http.deflate.dump
137
+ - spec/http/fixtures/http.error.dump
138
+ - spec/http/fixtures/http.gzip.dump
139
+ - spec/http/fixtures/http.html.dump
140
+ - spec/http/fixtures/http.raw.dump
141
+ - spec/http/http_delete_spec.rb
142
+ - spec/http/http_error_spec.rb
143
+ - spec/http/http_get_spec.rb
144
+ - spec/http/http_post_spec.rb
145
+ - spec/http/http_put_spec.rb
146
+ - spec/http/http_stream_options_spec.rb
147
+ - spec/json_gem_compatibility/compatibility_spec.rb
148
+ - spec/parsing/active_support_spec.rb
149
+ - spec/parsing/chunked_spec.rb
150
+ - spec/parsing/fixtures/fail.15.json
151
+ - spec/parsing/fixtures/fail.16.json
152
+ - spec/parsing/fixtures/fail.17.json
153
+ - spec/parsing/fixtures/fail.26.json
154
+ - spec/parsing/fixtures/fail11.json
155
+ - spec/parsing/fixtures/fail12.json
156
+ - spec/parsing/fixtures/fail13.json
157
+ - spec/parsing/fixtures/fail14.json
158
+ - spec/parsing/fixtures/fail19.json
159
+ - spec/parsing/fixtures/fail20.json
160
+ - spec/parsing/fixtures/fail21.json
161
+ - spec/parsing/fixtures/fail22.json
162
+ - spec/parsing/fixtures/fail23.json
163
+ - spec/parsing/fixtures/fail24.json
164
+ - spec/parsing/fixtures/fail25.json
165
+ - spec/parsing/fixtures/fail27.json
166
+ - spec/parsing/fixtures/fail28.json
167
+ - spec/parsing/fixtures/fail3.json
168
+ - spec/parsing/fixtures/fail4.json
169
+ - spec/parsing/fixtures/fail5.json
170
+ - spec/parsing/fixtures/fail6.json
171
+ - spec/parsing/fixtures/fail9.json
172
+ - spec/parsing/fixtures/pass.array.json
173
+ - spec/parsing/fixtures/pass.codepoints_from_unicode_org.json
174
+ - spec/parsing/fixtures/pass.contacts.json
175
+ - spec/parsing/fixtures/pass.db100.xml.json
176
+ - spec/parsing/fixtures/pass.db1000.xml.json
177
+ - spec/parsing/fixtures/pass.dc_simple_with_comments.json
178
+ - spec/parsing/fixtures/pass.deep_arrays.json
179
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case.json
180
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json
181
+ - spec/parsing/fixtures/pass.doubles.json
182
+ - spec/parsing/fixtures/pass.empty_array.json
183
+ - spec/parsing/fixtures/pass.empty_string.json
184
+ - spec/parsing/fixtures/pass.escaped_bulgarian.json
185
+ - spec/parsing/fixtures/pass.escaped_foobar.json
186
+ - spec/parsing/fixtures/pass.item.json
187
+ - spec/parsing/fixtures/pass.json-org-sample1.json
188
+ - spec/parsing/fixtures/pass.json-org-sample2.json
189
+ - spec/parsing/fixtures/pass.json-org-sample3.json
190
+ - spec/parsing/fixtures/pass.json-org-sample4-nows.json
191
+ - spec/parsing/fixtures/pass.json-org-sample4.json
192
+ - spec/parsing/fixtures/pass.json-org-sample5.json
193
+ - spec/parsing/fixtures/pass.map-spain.xml.json
194
+ - spec/parsing/fixtures/pass.ns-invoice100.xml.json
195
+ - spec/parsing/fixtures/pass.ns-soap.xml.json
196
+ - spec/parsing/fixtures/pass.numbers-fp-4k.json
197
+ - spec/parsing/fixtures/pass.numbers-fp-64k.json
198
+ - spec/parsing/fixtures/pass.numbers-int-4k.json
199
+ - spec/parsing/fixtures/pass.numbers-int-64k.json
200
+ - spec/parsing/fixtures/pass.twitter-search.json
201
+ - spec/parsing/fixtures/pass.twitter-search2.json
202
+ - spec/parsing/fixtures/pass.unicode.json
203
+ - spec/parsing/fixtures/pass.yelp.json
204
+ - spec/parsing/fixtures/pass1.json
205
+ - spec/parsing/fixtures/pass2.json
206
+ - spec/parsing/fixtures/pass3.json
207
+ - spec/parsing/fixtures_spec.rb
208
+ - spec/parsing/one_off_spec.rb
209
+ - spec/rcov.opts
210
+ - spec/spec_helper.rb
211
+ - tasks/compile.rake
212
+ - tasks/rspec.rake
213
+ - yajl-ruby.gemspec
214
+ - lib/yajl/1.8/yajl.so
215
+ - lib/yajl/1.9/yajl.so
216
+ - lib/yajl/yajl.rb
217
+ has_rdoc: true
218
+ homepage: http://github.com/brianmario/yajl-ruby
219
+ licenses: []
220
+ post_install_message:
221
+ rdoc_options: []
222
+ require_paths:
223
+ - lib
224
+ required_ruby_version: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ segments:
231
+ - 0
232
+ hash: -2690265295879712706
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ segments:
240
+ - 0
241
+ hash: -2690265295879712706
242
+ requirements: []
243
+ rubyforge_project:
244
+ rubygems_version: 1.6.2
245
+ signing_key:
246
+ specification_version: 3
247
+ summary: Ruby C bindings to the excellent Yajl JSON stream-based parser library.
248
+ test_files:
249
+ - examples/encoding/chunked_encoding.rb
250
+ - examples/encoding/one_shot.rb
251
+ - examples/encoding/to_an_io.rb
252
+ - examples/http/twitter_search_api.rb
253
+ - examples/http/twitter_stream_api.rb
254
+ - examples/parsing/from_file.rb
255
+ - examples/parsing/from_stdin.rb
256
+ - examples/parsing/from_string.rb
257
+ - spec/encoding/encoding_spec.rb
258
+ - spec/global/global_spec.rb
259
+ - spec/http/fixtures/http.bzip2.dump
260
+ - spec/http/fixtures/http.chunked.dump
261
+ - spec/http/fixtures/http.deflate.dump
262
+ - spec/http/fixtures/http.error.dump
263
+ - spec/http/fixtures/http.gzip.dump
264
+ - spec/http/fixtures/http.html.dump
265
+ - spec/http/fixtures/http.raw.dump
266
+ - spec/http/http_delete_spec.rb
267
+ - spec/http/http_error_spec.rb
268
+ - spec/http/http_get_spec.rb
269
+ - spec/http/http_post_spec.rb
270
+ - spec/http/http_put_spec.rb
271
+ - spec/http/http_stream_options_spec.rb
272
+ - spec/json_gem_compatibility/compatibility_spec.rb
273
+ - spec/parsing/active_support_spec.rb
274
+ - spec/parsing/chunked_spec.rb
275
+ - spec/parsing/fixtures/fail.15.json
276
+ - spec/parsing/fixtures/fail.16.json
277
+ - spec/parsing/fixtures/fail.17.json
278
+ - spec/parsing/fixtures/fail.26.json
279
+ - spec/parsing/fixtures/fail11.json
280
+ - spec/parsing/fixtures/fail12.json
281
+ - spec/parsing/fixtures/fail13.json
282
+ - spec/parsing/fixtures/fail14.json
283
+ - spec/parsing/fixtures/fail19.json
284
+ - spec/parsing/fixtures/fail20.json
285
+ - spec/parsing/fixtures/fail21.json
286
+ - spec/parsing/fixtures/fail22.json
287
+ - spec/parsing/fixtures/fail23.json
288
+ - spec/parsing/fixtures/fail24.json
289
+ - spec/parsing/fixtures/fail25.json
290
+ - spec/parsing/fixtures/fail27.json
291
+ - spec/parsing/fixtures/fail28.json
292
+ - spec/parsing/fixtures/fail3.json
293
+ - spec/parsing/fixtures/fail4.json
294
+ - spec/parsing/fixtures/fail5.json
295
+ - spec/parsing/fixtures/fail6.json
296
+ - spec/parsing/fixtures/fail9.json
297
+ - spec/parsing/fixtures/pass.array.json
298
+ - spec/parsing/fixtures/pass.codepoints_from_unicode_org.json
299
+ - spec/parsing/fixtures/pass.contacts.json
300
+ - spec/parsing/fixtures/pass.db100.xml.json
301
+ - spec/parsing/fixtures/pass.db1000.xml.json
302
+ - spec/parsing/fixtures/pass.dc_simple_with_comments.json
303
+ - spec/parsing/fixtures/pass.deep_arrays.json
304
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case.json
305
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json
306
+ - spec/parsing/fixtures/pass.doubles.json
307
+ - spec/parsing/fixtures/pass.empty_array.json
308
+ - spec/parsing/fixtures/pass.empty_string.json
309
+ - spec/parsing/fixtures/pass.escaped_bulgarian.json
310
+ - spec/parsing/fixtures/pass.escaped_foobar.json
311
+ - spec/parsing/fixtures/pass.item.json
312
+ - spec/parsing/fixtures/pass.json-org-sample1.json
313
+ - spec/parsing/fixtures/pass.json-org-sample2.json
314
+ - spec/parsing/fixtures/pass.json-org-sample3.json
315
+ - spec/parsing/fixtures/pass.json-org-sample4-nows.json
316
+ - spec/parsing/fixtures/pass.json-org-sample4.json
317
+ - spec/parsing/fixtures/pass.json-org-sample5.json
318
+ - spec/parsing/fixtures/pass.map-spain.xml.json
319
+ - spec/parsing/fixtures/pass.ns-invoice100.xml.json
320
+ - spec/parsing/fixtures/pass.ns-soap.xml.json
321
+ - spec/parsing/fixtures/pass.numbers-fp-4k.json
322
+ - spec/parsing/fixtures/pass.numbers-fp-64k.json
323
+ - spec/parsing/fixtures/pass.numbers-int-4k.json
324
+ - spec/parsing/fixtures/pass.numbers-int-64k.json
325
+ - spec/parsing/fixtures/pass.twitter-search.json
326
+ - spec/parsing/fixtures/pass.twitter-search2.json
327
+ - spec/parsing/fixtures/pass.unicode.json
328
+ - spec/parsing/fixtures/pass.yelp.json
329
+ - spec/parsing/fixtures/pass1.json
330
+ - spec/parsing/fixtures/pass2.json
331
+ - spec/parsing/fixtures/pass3.json
332
+ - spec/parsing/fixtures_spec.rb
333
+ - spec/parsing/one_off_spec.rb
334
+ - spec/rcov.opts
335
+ - spec/spec_helper.rb