yajl-ruby-zenjoy 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. data/.gitignore +12 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +14 -0
  4. data/CHANGELOG.md +332 -0
  5. data/Gemfile +3 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +361 -0
  8. data/Rakefile +2 -0
  9. data/benchmark/encode.rb +72 -0
  10. data/benchmark/encode_json_and_marshal.rb +42 -0
  11. data/benchmark/encode_json_and_yaml.rb +53 -0
  12. data/benchmark/http.rb +32 -0
  13. data/benchmark/parse.rb +94 -0
  14. data/benchmark/parse_json_and_marshal.rb +50 -0
  15. data/benchmark/parse_json_and_yaml.rb +55 -0
  16. data/benchmark/parse_stream.rb +54 -0
  17. data/benchmark/subjects/item.json +1 -0
  18. data/benchmark/subjects/ohai.json +1216 -0
  19. data/benchmark/subjects/ohai.marshal_dump +0 -0
  20. data/benchmark/subjects/ohai.yml +975 -0
  21. data/benchmark/subjects/twitter_search.json +1 -0
  22. data/benchmark/subjects/twitter_stream.json +430 -0
  23. data/benchmark/subjects/unicode.json +1 -0
  24. data/examples/encoding/chunked_encoding.rb +27 -0
  25. data/examples/encoding/one_shot.rb +13 -0
  26. data/examples/encoding/to_an_io.rb +12 -0
  27. data/examples/http/twitter_search_api.rb +12 -0
  28. data/examples/http/twitter_stream_api.rb +26 -0
  29. data/examples/parsing/from_file.rb +14 -0
  30. data/examples/parsing/from_stdin.rb +9 -0
  31. data/examples/parsing/from_string.rb +13 -0
  32. data/ext/yajl/api/yajl_common.h +89 -0
  33. data/ext/yajl/api/yajl_gen.h +161 -0
  34. data/ext/yajl/api/yajl_parse.h +196 -0
  35. data/ext/yajl/api/yajl_version.h +23 -0
  36. data/ext/yajl/extconf.rb +7 -0
  37. data/ext/yajl/yajl.c +164 -0
  38. data/ext/yajl/yajl_alloc.c +65 -0
  39. data/ext/yajl/yajl_alloc.h +51 -0
  40. data/ext/yajl/yajl_buf.c +119 -0
  41. data/ext/yajl/yajl_buf.h +80 -0
  42. data/ext/yajl/yajl_bytestack.h +85 -0
  43. data/ext/yajl/yajl_encode.c +201 -0
  44. data/ext/yajl/yajl_encode.h +55 -0
  45. data/ext/yajl/yajl_ext.c +906 -0
  46. data/ext/yajl/yajl_ext.h +135 -0
  47. data/ext/yajl/yajl_gen.c +344 -0
  48. data/ext/yajl/yajl_lex.c +748 -0
  49. data/ext/yajl/yajl_lex.h +146 -0
  50. data/ext/yajl/yajl_parser.c +450 -0
  51. data/ext/yajl/yajl_parser.h +84 -0
  52. data/ext/yajl/yajl_version.c +7 -0
  53. data/lib/yajl.rb +75 -0
  54. data/lib/yajl/bzip2.rb +11 -0
  55. data/lib/yajl/bzip2/stream_reader.rb +31 -0
  56. data/lib/yajl/bzip2/stream_writer.rb +14 -0
  57. data/lib/yajl/deflate.rb +6 -0
  58. data/lib/yajl/deflate/stream_reader.rb +43 -0
  59. data/lib/yajl/deflate/stream_writer.rb +20 -0
  60. data/lib/yajl/gzip.rb +6 -0
  61. data/lib/yajl/gzip/stream_reader.rb +30 -0
  62. data/lib/yajl/gzip/stream_writer.rb +13 -0
  63. data/lib/yajl/http_stream.rb +212 -0
  64. data/lib/yajl/json_gem.rb +13 -0
  65. data/lib/yajl/json_gem/encoding.rb +50 -0
  66. data/lib/yajl/json_gem/parsing.rb +26 -0
  67. data/lib/yajl/version.rb +3 -0
  68. data/spec/encoding/encoding_spec.rb +274 -0
  69. data/spec/global/global_spec.rb +54 -0
  70. data/spec/http/fixtures/http.bzip2.dump +0 -0
  71. data/spec/http/fixtures/http.chunked.dump +11 -0
  72. data/spec/http/fixtures/http.deflate.dump +0 -0
  73. data/spec/http/fixtures/http.error.dump +12 -0
  74. data/spec/http/fixtures/http.gzip.dump +0 -0
  75. data/spec/http/fixtures/http.html.dump +1220 -0
  76. data/spec/http/fixtures/http.raw.dump +1226 -0
  77. data/spec/http/http_delete_spec.rb +98 -0
  78. data/spec/http/http_error_spec.rb +32 -0
  79. data/spec/http/http_get_spec.rb +109 -0
  80. data/spec/http/http_post_spec.rb +123 -0
  81. data/spec/http/http_put_spec.rb +105 -0
  82. data/spec/http/http_stream_options_spec.rb +27 -0
  83. data/spec/json_gem_compatibility/compatibility_spec.rb +207 -0
  84. data/spec/parsing/active_support_spec.rb +64 -0
  85. data/spec/parsing/chunked_spec.rb +96 -0
  86. data/spec/parsing/fixtures/fail.15.json +1 -0
  87. data/spec/parsing/fixtures/fail.16.json +1 -0
  88. data/spec/parsing/fixtures/fail.17.json +1 -0
  89. data/spec/parsing/fixtures/fail.26.json +1 -0
  90. data/spec/parsing/fixtures/fail11.json +1 -0
  91. data/spec/parsing/fixtures/fail12.json +1 -0
  92. data/spec/parsing/fixtures/fail13.json +1 -0
  93. data/spec/parsing/fixtures/fail14.json +1 -0
  94. data/spec/parsing/fixtures/fail19.json +1 -0
  95. data/spec/parsing/fixtures/fail20.json +1 -0
  96. data/spec/parsing/fixtures/fail21.json +1 -0
  97. data/spec/parsing/fixtures/fail22.json +1 -0
  98. data/spec/parsing/fixtures/fail23.json +1 -0
  99. data/spec/parsing/fixtures/fail24.json +1 -0
  100. data/spec/parsing/fixtures/fail25.json +1 -0
  101. data/spec/parsing/fixtures/fail27.json +2 -0
  102. data/spec/parsing/fixtures/fail28.json +2 -0
  103. data/spec/parsing/fixtures/fail3.json +1 -0
  104. data/spec/parsing/fixtures/fail4.json +1 -0
  105. data/spec/parsing/fixtures/fail5.json +1 -0
  106. data/spec/parsing/fixtures/fail6.json +1 -0
  107. data/spec/parsing/fixtures/fail9.json +1 -0
  108. data/spec/parsing/fixtures/pass.array.json +6 -0
  109. data/spec/parsing/fixtures/pass.codepoints_from_unicode_org.json +1 -0
  110. data/spec/parsing/fixtures/pass.contacts.json +1 -0
  111. data/spec/parsing/fixtures/pass.db100.xml.json +1 -0
  112. data/spec/parsing/fixtures/pass.db1000.xml.json +1 -0
  113. data/spec/parsing/fixtures/pass.dc_simple_with_comments.json +11 -0
  114. data/spec/parsing/fixtures/pass.deep_arrays.json +1 -0
  115. data/spec/parsing/fixtures/pass.difficult_json_c_test_case.json +1 -0
  116. data/spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json +1 -0
  117. data/spec/parsing/fixtures/pass.doubles.json +1 -0
  118. data/spec/parsing/fixtures/pass.empty_array.json +1 -0
  119. data/spec/parsing/fixtures/pass.empty_string.json +1 -0
  120. data/spec/parsing/fixtures/pass.escaped_bulgarian.json +4 -0
  121. data/spec/parsing/fixtures/pass.escaped_foobar.json +1 -0
  122. data/spec/parsing/fixtures/pass.item.json +1 -0
  123. data/spec/parsing/fixtures/pass.json-org-sample1.json +23 -0
  124. data/spec/parsing/fixtures/pass.json-org-sample2.json +11 -0
  125. data/spec/parsing/fixtures/pass.json-org-sample3.json +26 -0
  126. data/spec/parsing/fixtures/pass.json-org-sample4-nows.json +88 -0
  127. data/spec/parsing/fixtures/pass.json-org-sample4.json +89 -0
  128. data/spec/parsing/fixtures/pass.json-org-sample5.json +27 -0
  129. data/spec/parsing/fixtures/pass.map-spain.xml.json +1 -0
  130. data/spec/parsing/fixtures/pass.ns-invoice100.xml.json +1 -0
  131. data/spec/parsing/fixtures/pass.ns-soap.xml.json +1 -0
  132. data/spec/parsing/fixtures/pass.numbers-fp-4k.json +6 -0
  133. data/spec/parsing/fixtures/pass.numbers-fp-64k.json +61 -0
  134. data/spec/parsing/fixtures/pass.numbers-int-4k.json +11 -0
  135. data/spec/parsing/fixtures/pass.numbers-int-64k.json +154 -0
  136. data/spec/parsing/fixtures/pass.twitter-search.json +1 -0
  137. data/spec/parsing/fixtures/pass.twitter-search2.json +1 -0
  138. data/spec/parsing/fixtures/pass.unicode.json +3315 -0
  139. data/spec/parsing/fixtures/pass.yelp.json +1 -0
  140. data/spec/parsing/fixtures/pass1.json +56 -0
  141. data/spec/parsing/fixtures/pass2.json +1 -0
  142. data/spec/parsing/fixtures/pass3.json +6 -0
  143. data/spec/parsing/fixtures_spec.rb +40 -0
  144. data/spec/parsing/one_off_spec.rb +85 -0
  145. data/spec/rcov.opts +3 -0
  146. data/spec/spec_helper.rb +16 -0
  147. data/tasks/compile.rake +35 -0
  148. data/tasks/rspec.rake +16 -0
  149. data/yajl-ruby.gemspec +25 -0
  150. metadata +346 -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
@@ -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
@@ -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
@@ -0,0 +1,25 @@
1
+ require './lib/yajl/version'
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{yajl-ruby-zenjoy}
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/zenjoy/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
+ s.required_ruby_version = ">= 1.8.6"
17
+
18
+ # tests
19
+ s.add_development_dependency 'rake-compiler', ">= 0.7.5"
20
+ s.add_development_dependency 'rspec', ">= 2.0.0"
21
+ # benchmarks
22
+ s.add_development_dependency 'activesupport'
23
+ s.add_development_dependency 'json'
24
+ end
25
+
metadata ADDED
@@ -0,0 +1,346 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yajl-ruby-zenjoy
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Brian Lopez
9
+ - Lloyd Hilaiel
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-12-21 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 0.7.5
21
+ none: false
22
+ name: rake-compiler
23
+ type: :development
24
+ prerelease: false
25
+ requirement: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.5
30
+ none: false
31
+ - !ruby/object:Gem::Dependency
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: 2.0.0
37
+ none: false
38
+ name: rspec
39
+ type: :development
40
+ prerelease: false
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.0.0
46
+ none: false
47
+ - !ruby/object:Gem::Dependency
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ none: false
54
+ name: activesupport
55
+ type: :development
56
+ prerelease: false
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ none: false
63
+ - !ruby/object:Gem::Dependency
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ name: json
71
+ type: :development
72
+ prerelease: false
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ none: false
79
+ description:
80
+ email: seniorlopez@gmail.com
81
+ executables: []
82
+ extensions:
83
+ - ext/yajl/extconf.rb
84
+ extra_rdoc_files: []
85
+ files:
86
+ - .gitignore
87
+ - .rspec
88
+ - .travis.yml
89
+ - CHANGELOG.md
90
+ - Gemfile
91
+ - MIT-LICENSE
92
+ - README.md
93
+ - Rakefile
94
+ - benchmark/encode.rb
95
+ - benchmark/encode_json_and_marshal.rb
96
+ - benchmark/encode_json_and_yaml.rb
97
+ - benchmark/http.rb
98
+ - benchmark/parse.rb
99
+ - benchmark/parse_json_and_marshal.rb
100
+ - benchmark/parse_json_and_yaml.rb
101
+ - benchmark/parse_stream.rb
102
+ - benchmark/subjects/item.json
103
+ - benchmark/subjects/ohai.json
104
+ - benchmark/subjects/ohai.marshal_dump
105
+ - benchmark/subjects/ohai.yml
106
+ - benchmark/subjects/twitter_search.json
107
+ - benchmark/subjects/twitter_stream.json
108
+ - benchmark/subjects/unicode.json
109
+ - examples/encoding/chunked_encoding.rb
110
+ - examples/encoding/one_shot.rb
111
+ - examples/encoding/to_an_io.rb
112
+ - examples/http/twitter_search_api.rb
113
+ - examples/http/twitter_stream_api.rb
114
+ - examples/parsing/from_file.rb
115
+ - examples/parsing/from_stdin.rb
116
+ - examples/parsing/from_string.rb
117
+ - ext/yajl/api/yajl_common.h
118
+ - ext/yajl/api/yajl_gen.h
119
+ - ext/yajl/api/yajl_parse.h
120
+ - ext/yajl/api/yajl_version.h
121
+ - ext/yajl/extconf.rb
122
+ - ext/yajl/yajl.c
123
+ - ext/yajl/yajl_alloc.c
124
+ - ext/yajl/yajl_alloc.h
125
+ - ext/yajl/yajl_buf.c
126
+ - ext/yajl/yajl_buf.h
127
+ - ext/yajl/yajl_bytestack.h
128
+ - ext/yajl/yajl_encode.c
129
+ - ext/yajl/yajl_encode.h
130
+ - ext/yajl/yajl_ext.c
131
+ - ext/yajl/yajl_ext.h
132
+ - ext/yajl/yajl_gen.c
133
+ - ext/yajl/yajl_lex.c
134
+ - ext/yajl/yajl_lex.h
135
+ - ext/yajl/yajl_parser.c
136
+ - ext/yajl/yajl_parser.h
137
+ - ext/yajl/yajl_version.c
138
+ - lib/yajl.rb
139
+ - lib/yajl/bzip2.rb
140
+ - lib/yajl/bzip2/stream_reader.rb
141
+ - lib/yajl/bzip2/stream_writer.rb
142
+ - lib/yajl/deflate.rb
143
+ - lib/yajl/deflate/stream_reader.rb
144
+ - lib/yajl/deflate/stream_writer.rb
145
+ - lib/yajl/gzip.rb
146
+ - lib/yajl/gzip/stream_reader.rb
147
+ - lib/yajl/gzip/stream_writer.rb
148
+ - lib/yajl/http_stream.rb
149
+ - lib/yajl/json_gem.rb
150
+ - lib/yajl/json_gem/encoding.rb
151
+ - lib/yajl/json_gem/parsing.rb
152
+ - lib/yajl/version.rb
153
+ - spec/encoding/encoding_spec.rb
154
+ - spec/global/global_spec.rb
155
+ - spec/http/fixtures/http.bzip2.dump
156
+ - spec/http/fixtures/http.chunked.dump
157
+ - spec/http/fixtures/http.deflate.dump
158
+ - spec/http/fixtures/http.error.dump
159
+ - spec/http/fixtures/http.gzip.dump
160
+ - spec/http/fixtures/http.html.dump
161
+ - spec/http/fixtures/http.raw.dump
162
+ - spec/http/http_delete_spec.rb
163
+ - spec/http/http_error_spec.rb
164
+ - spec/http/http_get_spec.rb
165
+ - spec/http/http_post_spec.rb
166
+ - spec/http/http_put_spec.rb
167
+ - spec/http/http_stream_options_spec.rb
168
+ - spec/json_gem_compatibility/compatibility_spec.rb
169
+ - spec/parsing/active_support_spec.rb
170
+ - spec/parsing/chunked_spec.rb
171
+ - spec/parsing/fixtures/fail.15.json
172
+ - spec/parsing/fixtures/fail.16.json
173
+ - spec/parsing/fixtures/fail.17.json
174
+ - spec/parsing/fixtures/fail.26.json
175
+ - spec/parsing/fixtures/fail11.json
176
+ - spec/parsing/fixtures/fail12.json
177
+ - spec/parsing/fixtures/fail13.json
178
+ - spec/parsing/fixtures/fail14.json
179
+ - spec/parsing/fixtures/fail19.json
180
+ - spec/parsing/fixtures/fail20.json
181
+ - spec/parsing/fixtures/fail21.json
182
+ - spec/parsing/fixtures/fail22.json
183
+ - spec/parsing/fixtures/fail23.json
184
+ - spec/parsing/fixtures/fail24.json
185
+ - spec/parsing/fixtures/fail25.json
186
+ - spec/parsing/fixtures/fail27.json
187
+ - spec/parsing/fixtures/fail28.json
188
+ - spec/parsing/fixtures/fail3.json
189
+ - spec/parsing/fixtures/fail4.json
190
+ - spec/parsing/fixtures/fail5.json
191
+ - spec/parsing/fixtures/fail6.json
192
+ - spec/parsing/fixtures/fail9.json
193
+ - spec/parsing/fixtures/pass.array.json
194
+ - spec/parsing/fixtures/pass.codepoints_from_unicode_org.json
195
+ - spec/parsing/fixtures/pass.contacts.json
196
+ - spec/parsing/fixtures/pass.db100.xml.json
197
+ - spec/parsing/fixtures/pass.db1000.xml.json
198
+ - spec/parsing/fixtures/pass.dc_simple_with_comments.json
199
+ - spec/parsing/fixtures/pass.deep_arrays.json
200
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case.json
201
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json
202
+ - spec/parsing/fixtures/pass.doubles.json
203
+ - spec/parsing/fixtures/pass.empty_array.json
204
+ - spec/parsing/fixtures/pass.empty_string.json
205
+ - spec/parsing/fixtures/pass.escaped_bulgarian.json
206
+ - spec/parsing/fixtures/pass.escaped_foobar.json
207
+ - spec/parsing/fixtures/pass.item.json
208
+ - spec/parsing/fixtures/pass.json-org-sample1.json
209
+ - spec/parsing/fixtures/pass.json-org-sample2.json
210
+ - spec/parsing/fixtures/pass.json-org-sample3.json
211
+ - spec/parsing/fixtures/pass.json-org-sample4-nows.json
212
+ - spec/parsing/fixtures/pass.json-org-sample4.json
213
+ - spec/parsing/fixtures/pass.json-org-sample5.json
214
+ - spec/parsing/fixtures/pass.map-spain.xml.json
215
+ - spec/parsing/fixtures/pass.ns-invoice100.xml.json
216
+ - spec/parsing/fixtures/pass.ns-soap.xml.json
217
+ - spec/parsing/fixtures/pass.numbers-fp-4k.json
218
+ - spec/parsing/fixtures/pass.numbers-fp-64k.json
219
+ - spec/parsing/fixtures/pass.numbers-int-4k.json
220
+ - spec/parsing/fixtures/pass.numbers-int-64k.json
221
+ - spec/parsing/fixtures/pass.twitter-search.json
222
+ - spec/parsing/fixtures/pass.twitter-search2.json
223
+ - spec/parsing/fixtures/pass.unicode.json
224
+ - spec/parsing/fixtures/pass.yelp.json
225
+ - spec/parsing/fixtures/pass1.json
226
+ - spec/parsing/fixtures/pass2.json
227
+ - spec/parsing/fixtures/pass3.json
228
+ - spec/parsing/fixtures_spec.rb
229
+ - spec/parsing/one_off_spec.rb
230
+ - spec/rcov.opts
231
+ - spec/spec_helper.rb
232
+ - tasks/compile.rake
233
+ - tasks/rspec.rake
234
+ - yajl-ruby.gemspec
235
+ homepage: http://github.com/zenjoy/yajl-ruby
236
+ licenses: []
237
+ post_install_message:
238
+ rdoc_options: []
239
+ require_paths:
240
+ - lib
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: 1.8.6
246
+ none: false
247
+ required_rubygems_version: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ! '>='
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ none: false
253
+ requirements: []
254
+ rubyforge_project:
255
+ rubygems_version: 1.8.24
256
+ signing_key:
257
+ specification_version: 3
258
+ summary: Ruby C bindings to the excellent Yajl JSON stream-based parser library.
259
+ test_files:
260
+ - examples/encoding/chunked_encoding.rb
261
+ - examples/encoding/one_shot.rb
262
+ - examples/encoding/to_an_io.rb
263
+ - examples/http/twitter_search_api.rb
264
+ - examples/http/twitter_stream_api.rb
265
+ - examples/parsing/from_file.rb
266
+ - examples/parsing/from_stdin.rb
267
+ - examples/parsing/from_string.rb
268
+ - spec/encoding/encoding_spec.rb
269
+ - spec/global/global_spec.rb
270
+ - spec/http/fixtures/http.bzip2.dump
271
+ - spec/http/fixtures/http.chunked.dump
272
+ - spec/http/fixtures/http.deflate.dump
273
+ - spec/http/fixtures/http.error.dump
274
+ - spec/http/fixtures/http.gzip.dump
275
+ - spec/http/fixtures/http.html.dump
276
+ - spec/http/fixtures/http.raw.dump
277
+ - spec/http/http_delete_spec.rb
278
+ - spec/http/http_error_spec.rb
279
+ - spec/http/http_get_spec.rb
280
+ - spec/http/http_post_spec.rb
281
+ - spec/http/http_put_spec.rb
282
+ - spec/http/http_stream_options_spec.rb
283
+ - spec/json_gem_compatibility/compatibility_spec.rb
284
+ - spec/parsing/active_support_spec.rb
285
+ - spec/parsing/chunked_spec.rb
286
+ - spec/parsing/fixtures/fail.15.json
287
+ - spec/parsing/fixtures/fail.16.json
288
+ - spec/parsing/fixtures/fail.17.json
289
+ - spec/parsing/fixtures/fail.26.json
290
+ - spec/parsing/fixtures/fail11.json
291
+ - spec/parsing/fixtures/fail12.json
292
+ - spec/parsing/fixtures/fail13.json
293
+ - spec/parsing/fixtures/fail14.json
294
+ - spec/parsing/fixtures/fail19.json
295
+ - spec/parsing/fixtures/fail20.json
296
+ - spec/parsing/fixtures/fail21.json
297
+ - spec/parsing/fixtures/fail22.json
298
+ - spec/parsing/fixtures/fail23.json
299
+ - spec/parsing/fixtures/fail24.json
300
+ - spec/parsing/fixtures/fail25.json
301
+ - spec/parsing/fixtures/fail27.json
302
+ - spec/parsing/fixtures/fail28.json
303
+ - spec/parsing/fixtures/fail3.json
304
+ - spec/parsing/fixtures/fail4.json
305
+ - spec/parsing/fixtures/fail5.json
306
+ - spec/parsing/fixtures/fail6.json
307
+ - spec/parsing/fixtures/fail9.json
308
+ - spec/parsing/fixtures/pass.array.json
309
+ - spec/parsing/fixtures/pass.codepoints_from_unicode_org.json
310
+ - spec/parsing/fixtures/pass.contacts.json
311
+ - spec/parsing/fixtures/pass.db100.xml.json
312
+ - spec/parsing/fixtures/pass.db1000.xml.json
313
+ - spec/parsing/fixtures/pass.dc_simple_with_comments.json
314
+ - spec/parsing/fixtures/pass.deep_arrays.json
315
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case.json
316
+ - spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json
317
+ - spec/parsing/fixtures/pass.doubles.json
318
+ - spec/parsing/fixtures/pass.empty_array.json
319
+ - spec/parsing/fixtures/pass.empty_string.json
320
+ - spec/parsing/fixtures/pass.escaped_bulgarian.json
321
+ - spec/parsing/fixtures/pass.escaped_foobar.json
322
+ - spec/parsing/fixtures/pass.item.json
323
+ - spec/parsing/fixtures/pass.json-org-sample1.json
324
+ - spec/parsing/fixtures/pass.json-org-sample2.json
325
+ - spec/parsing/fixtures/pass.json-org-sample3.json
326
+ - spec/parsing/fixtures/pass.json-org-sample4-nows.json
327
+ - spec/parsing/fixtures/pass.json-org-sample4.json
328
+ - spec/parsing/fixtures/pass.json-org-sample5.json
329
+ - spec/parsing/fixtures/pass.map-spain.xml.json
330
+ - spec/parsing/fixtures/pass.ns-invoice100.xml.json
331
+ - spec/parsing/fixtures/pass.ns-soap.xml.json
332
+ - spec/parsing/fixtures/pass.numbers-fp-4k.json
333
+ - spec/parsing/fixtures/pass.numbers-fp-64k.json
334
+ - spec/parsing/fixtures/pass.numbers-int-4k.json
335
+ - spec/parsing/fixtures/pass.numbers-int-64k.json
336
+ - spec/parsing/fixtures/pass.twitter-search.json
337
+ - spec/parsing/fixtures/pass.twitter-search2.json
338
+ - spec/parsing/fixtures/pass.unicode.json
339
+ - spec/parsing/fixtures/pass.yelp.json
340
+ - spec/parsing/fixtures/pass1.json
341
+ - spec/parsing/fixtures/pass2.json
342
+ - spec/parsing/fixtures/pass3.json
343
+ - spec/parsing/fixtures_spec.rb
344
+ - spec/parsing/one_off_spec.rb
345
+ - spec/rcov.opts
346
+ - spec/spec_helper.rb