leaflet-js 0.7.0.4 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (308) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +10 -3
  3. data/Rakefile +3 -3
  4. data/leaflet-js.gemspec +13 -7
  5. data/lib/leaflet-js.rb +2 -10
  6. data/lib/leaflet-js/engine.rb +7 -0
  7. data/lib/leaflet-js/version.rb +3 -0
  8. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/dist/images/spritesheet-2x.png +0 -0
  9. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/dist/images/spritesheet.png +0 -0
  10. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/Control.Draw.js +21 -19
  11. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/Leaflet.draw.js +8 -3
  12. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/Toolbar.js +75 -14
  13. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/Tooltip.js +0 -0
  14. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/copyright.js +0 -0
  15. data/vendor/assets/Leaflet.draw/src/draw/DrawToolbar.js +87 -0
  16. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Circle.js +2 -3
  17. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Feature.js +4 -4
  18. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Marker.js +0 -0
  19. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Polygon.js +9 -7
  20. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Polyline.js +86 -36
  21. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.Rectangle.js +19 -1
  22. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/draw/handler/Draw.SimpleShape.js +18 -4
  23. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/EditToolbar.js +34 -43
  24. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/Edit.Circle.js +0 -0
  25. data/vendor/assets/Leaflet.draw/src/edit/handler/Edit.Marker.js +75 -0
  26. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/Edit.Poly.js +16 -2
  27. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/Edit.Rectangle.js +3 -3
  28. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/Edit.SimpleShape.js +13 -3
  29. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/EditToolbar.Delete.js +11 -7
  30. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/edit/handler/EditToolbar.Edit.js +26 -94
  31. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/ext/GeometryUtil.js +3 -3
  32. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/ext/LatLngUtil.js +0 -0
  33. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/ext/LineUtil.Intersect.js +0 -0
  34. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/ext/Polygon.Intersect.js +0 -0
  35. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/ext/Polyline.Intersect.js +3 -3
  36. data/{lib/leaflet.draw → vendor/assets/Leaflet.draw}/src/images/spritesheet.svg +0 -0
  37. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/BaseMarkerMethods.js +0 -0
  38. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/CircleMarker.Label.js +0 -0
  39. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/FeatureGroup.Label.js +0 -0
  40. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/Label.js +5 -2
  41. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/Leaflet.label.js +1 -1
  42. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/Map.Label.js +0 -0
  43. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/Marker.Label.js +0 -0
  44. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/Path.Label.js +0 -0
  45. data/{lib/leaflet.label → vendor/assets/Leaflet.label}/src/copyright.js +0 -0
  46. data/{lib/leaflet.draw/examples/libs → vendor/assets/Leaflet/dist}/images/layers-2x.png +0 -0
  47. data/{lib/leaflet.draw/examples/libs → vendor/assets/Leaflet/dist}/images/layers.png +0 -0
  48. data/{lib/leaflet.draw/examples/libs → vendor/assets/Leaflet/dist}/images/marker-icon-2x.png +0 -0
  49. data/{lib/leaflet.draw/examples/libs → vendor/assets/Leaflet/dist}/images/marker-icon.png +0 -0
  50. data/{lib/leaflet.draw/examples/libs → vendor/assets/Leaflet/dist}/images/marker-shadow.png +0 -0
  51. data/{lib/leaflet → vendor/assets/Leaflet}/src/Leaflet.js +1 -1
  52. data/{lib/leaflet → vendor/assets/Leaflet}/src/control/Control.Attribution.js +0 -0
  53. data/{lib/leaflet → vendor/assets/Leaflet}/src/control/Control.Layers.js +2 -2
  54. data/{lib/leaflet → vendor/assets/Leaflet}/src/control/Control.Scale.js +0 -0
  55. data/{lib/leaflet → vendor/assets/Leaflet}/src/control/Control.Zoom.js +0 -0
  56. data/{lib/leaflet → vendor/assets/Leaflet}/src/control/Control.js +0 -0
  57. data/{lib/leaflet → vendor/assets/Leaflet}/src/copyright.js +0 -0
  58. data/{lib/leaflet → vendor/assets/Leaflet}/src/core/Browser.js +5 -36
  59. data/{lib/leaflet → vendor/assets/Leaflet}/src/core/Class.js +0 -0
  60. data/{lib/leaflet → vendor/assets/Leaflet}/src/core/Events.js +0 -0
  61. data/{lib/leaflet → vendor/assets/Leaflet}/src/core/Handler.js +0 -0
  62. data/{lib/leaflet → vendor/assets/Leaflet}/src/core/Util.js +9 -14
  63. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/DomEvent.DoubleTap.js +0 -0
  64. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/DomEvent.Pointer.js +3 -2
  65. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/DomEvent.js +7 -18
  66. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/DomUtil.js +0 -5
  67. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/Draggable.js +10 -4
  68. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/PosAnimation.Timer.js +0 -0
  69. data/{lib/leaflet → vendor/assets/Leaflet}/src/dom/PosAnimation.js +0 -0
  70. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/LatLng.js +0 -0
  71. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/LatLngBounds.js +0 -0
  72. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/crs/CRS.EPSG3395.js +0 -0
  73. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/crs/CRS.EPSG3857.js +0 -0
  74. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/crs/CRS.EPSG4326.js +0 -0
  75. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/crs/CRS.Simple.js +0 -0
  76. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/crs/CRS.js +0 -0
  77. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/projection/Projection.LonLat.js +0 -0
  78. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/projection/Projection.Mercator.js +0 -0
  79. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/projection/Projection.SphericalMercator.js +0 -0
  80. data/{lib/leaflet → vendor/assets/Leaflet}/src/geo/projection/Projection.js +0 -0
  81. data/{lib/leaflet → vendor/assets/Leaflet}/src/geometry/Bounds.js +0 -0
  82. data/{lib/leaflet → vendor/assets/Leaflet}/src/geometry/LineUtil.js +1 -1
  83. data/{lib/leaflet → vendor/assets/Leaflet}/src/geometry/Point.js +0 -0
  84. data/{lib/leaflet → vendor/assets/Leaflet}/src/geometry/PolyUtil.js +0 -0
  85. data/{lib/leaflet → vendor/assets/Leaflet}/src/geometry/Transformation.js +0 -0
  86. data/{lib/leaflet → vendor/assets/Leaflet}/src/images/layers.svg +0 -0
  87. data/{lib/leaflet → vendor/assets/Leaflet}/src/images/marker.svg +0 -0
  88. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/FeatureGroup.js +5 -3
  89. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/GeoJSON.js +0 -0
  90. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/ImageOverlay.js +0 -0
  91. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/LayerGroup.js +0 -0
  92. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/Popup.js +0 -0
  93. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/DivIcon.js +0 -0
  94. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/Icon.Default.js +0 -0
  95. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/Icon.js +0 -0
  96. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/Marker.Drag.js +0 -0
  97. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/Marker.Popup.js +1 -0
  98. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/marker/Marker.js +2 -4
  99. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/tile/TileLayer.Anim.js +5 -0
  100. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/tile/TileLayer.Canvas.js +0 -0
  101. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/tile/TileLayer.WMS.js +0 -0
  102. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/tile/TileLayer.js +3 -5
  103. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Circle.js +0 -0
  104. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/CircleMarker.js +1 -0
  105. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/MultiPoly.js +0 -0
  106. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Path.Popup.js +0 -0
  107. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Path.SVG.js +1 -1
  108. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Path.VML.js +0 -0
  109. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Path.js +0 -0
  110. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Polygon.js +0 -0
  111. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Polyline.js +0 -0
  112. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/Rectangle.js +0 -0
  113. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/canvas/Circle.Canvas.js +0 -0
  114. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/canvas/CircleMarker.Canvas.js +0 -0
  115. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/canvas/Path.Canvas.js +13 -6
  116. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/canvas/Polygon.Canvas.js +0 -0
  117. data/{lib/leaflet → vendor/assets/Leaflet}/src/layer/vector/canvas/Polyline.Canvas.js +0 -0
  118. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/Map.js +9 -8
  119. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/anim/Map.PanAnimation.js +0 -0
  120. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/anim/Map.ZoomAnimation.js +25 -16
  121. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/ext/Map.Geolocation.js +0 -0
  122. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.BoxZoom.js +0 -0
  123. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.DoubleClickZoom.js +0 -0
  124. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.Drag.js +0 -0
  125. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.Keyboard.js +0 -0
  126. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.ScrollWheelZoom.js +0 -0
  127. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.Tap.js +0 -0
  128. data/{lib/leaflet → vendor/assets/Leaflet}/src/map/handler/Map.TouchZoom.js +1 -1
  129. data/vendor/assets/{stylesheets/leaflet-js.css → leaflet-js.css} +0 -0
  130. data/vendor/assets/{javascripts/leaflet-js.js → leaflet-js.js} +2 -2
  131. data/{lib/leaflet.label/libs/leaflet/leaflet.css → vendor/assets/leaflet.css.erb} +2 -2
  132. data/vendor/assets/{stylesheets/leaflet.draw.css.erb → leaflet.draw.css.erb} +2 -2
  133. data/{lib/leaflet.draw/dist → vendor/assets}/leaflet.draw.ie.css +0 -0
  134. data/vendor/assets/leaflet.draw.js +38 -0
  135. data/vendor/assets/leaflet.js +155 -0
  136. data/{lib/leaflet.label/dist → vendor/assets}/leaflet.label.css +0 -0
  137. data/vendor/assets/leaflet.label.js +11 -0
  138. metadata +139 -302
  139. data/lib/leaflet.draw/BREAKINGCHANGES.md +0 -54
  140. data/lib/leaflet.draw/CHANGELOG.md +0 -118
  141. data/lib/leaflet.draw/Jakefile.js +0 -26
  142. data/lib/leaflet.draw/MIT-LICENCE.txt +0 -20
  143. data/lib/leaflet.draw/README.md +0 -411
  144. data/lib/leaflet.draw/TODO.md +0 -62
  145. data/lib/leaflet.draw/build/build.html +0 -243
  146. data/lib/leaflet.draw/build/build.js +0 -189
  147. data/lib/leaflet.draw/build/deps.js +0 -76
  148. data/lib/leaflet.draw/build/hintrc.js +0 -47
  149. data/lib/leaflet.draw/build/leaflet.draw-include.js +0 -42
  150. data/lib/leaflet.draw/dist/leaflet.draw-src.js +0 -2782
  151. data/lib/leaflet.draw/dist/leaflet.draw.css +0 -244
  152. data/lib/leaflet.draw/dist/leaflet.draw.js +0 -10
  153. data/lib/leaflet.draw/examples/basic.html +0 -113
  154. data/lib/leaflet.draw/examples/edithandlers.html +0 -67
  155. data/lib/leaflet.draw/examples/libs/images/marker-icon@2x.png +0 -0
  156. data/lib/leaflet.draw/examples/libs/leaflet-src.js +0 -9108
  157. data/lib/leaflet.draw/examples/libs/leaflet.css +0 -478
  158. data/lib/leaflet.draw/package.json +0 -37
  159. data/lib/leaflet.draw/spec/after.js +0 -2
  160. data/lib/leaflet.draw/spec/before.js +0 -3
  161. data/lib/leaflet.draw/spec/expect.js +0 -1253
  162. data/lib/leaflet.draw/spec/happen.js +0 -93
  163. data/lib/leaflet.draw/spec/index.html +0 -36
  164. data/lib/leaflet.draw/spec/karma.conf.js +0 -69
  165. data/lib/leaflet.draw/spec/sinon.js +0 -4223
  166. data/lib/leaflet.draw/spec/suites/DrawControlSpec.js +0 -15
  167. data/lib/leaflet.draw/spec/suites/GeometryUtilSpec.js +0 -25
  168. data/lib/leaflet.draw/spec/suites/LatLngUtilSpec.js +0 -9
  169. data/lib/leaflet.draw/spec/suites/SpecHelper.js +0 -26
  170. data/lib/leaflet.draw/src/draw/DrawToolbar.js +0 -111
  171. data/lib/leaflet.label/CHANGELOG.md +0 -67
  172. data/lib/leaflet.label/Jakefile.js +0 -21
  173. data/lib/leaflet.label/MIT-LICENCE.txt +0 -20
  174. data/lib/leaflet.label/README.md +0 -103
  175. data/lib/leaflet.label/build/build.js +0 -155
  176. data/lib/leaflet.label/build/deps.js +0 -26
  177. data/lib/leaflet.label/build/hint.js +0 -30
  178. data/lib/leaflet.label/build/hintrc.js +0 -51
  179. data/lib/leaflet.label/dist/images/death.png +0 -0
  180. data/lib/leaflet.label/dist/leaflet.label-src.js +0 -542
  181. data/lib/leaflet.label/dist/leaflet.label.js +0 -9
  182. data/lib/leaflet.label/example/label.html +0 -85
  183. data/lib/leaflet.label/libs/leaflet/images/layers-2x.png +0 -0
  184. data/lib/leaflet.label/libs/leaflet/images/layers.png +0 -0
  185. data/lib/leaflet.label/libs/leaflet/images/marker-icon-2x.png +0 -0
  186. data/lib/leaflet.label/libs/leaflet/images/marker-icon.png +0 -0
  187. data/lib/leaflet.label/libs/leaflet/images/marker-icon@2x.png +0 -0
  188. data/lib/leaflet.label/libs/leaflet/images/marker-shadow.png +0 -0
  189. data/lib/leaflet.label/libs/leaflet/leaflet-src.js +0 -9108
  190. data/lib/leaflet.label/libs/leaflet/leaflet.js +0 -9
  191. data/lib/leaflet.label/package.json +0 -19
  192. data/lib/leaflet/CHANGELOG.md +0 -905
  193. data/lib/leaflet/CONTRIBUTING.md +0 -155
  194. data/lib/leaflet/FAQ.md +0 -138
  195. data/lib/leaflet/Jakefile.js +0 -46
  196. data/lib/leaflet/LICENSE +0 -23
  197. data/lib/leaflet/PLUGIN-GUIDE.md +0 -127
  198. data/lib/leaflet/README.md +0 -34
  199. data/lib/leaflet/build/build.html +0 -227
  200. data/lib/leaflet/build/build.js +0 -163
  201. data/lib/leaflet/build/deps.js +0 -259
  202. data/lib/leaflet/build/hintrc.js +0 -39
  203. data/lib/leaflet/debug/css/mobile.css +0 -6
  204. data/lib/leaflet/debug/css/screen.css +0 -5
  205. data/lib/leaflet/debug/hacks/jitter.html +0 -42
  206. data/lib/leaflet/debug/leaflet-include.js +0 -59
  207. data/lib/leaflet/debug/map/canvas.html +0 -46
  208. data/lib/leaflet/debug/map/controls.html +0 -49
  209. data/lib/leaflet/debug/map/geolocation.html +0 -34
  210. data/lib/leaflet/debug/map/iframe.html +0 -11
  211. data/lib/leaflet/debug/map/image-overlay.html +0 -43
  212. data/lib/leaflet/debug/map/map-mobile.html +0 -34
  213. data/lib/leaflet/debug/map/map.html +0 -59
  214. data/lib/leaflet/debug/map/max-bounds.html +0 -38
  215. data/lib/leaflet/debug/map/opacity.html +0 -223
  216. data/lib/leaflet/debug/map/scroll.html +0 -41
  217. data/lib/leaflet/debug/map/simple-proj.html +0 -44
  218. data/lib/leaflet/debug/map/wms-marble.html +0 -30
  219. data/lib/leaflet/debug/map/wms.html +0 -40
  220. data/lib/leaflet/debug/map/zoomlevels.html +0 -45
  221. data/lib/leaflet/debug/tests/add_remove_layers.html +0 -87
  222. data/lib/leaflet/debug/tests/bringtoback.html +0 -37
  223. data/lib/leaflet/debug/tests/canvasloop.html +0 -47
  224. data/lib/leaflet/debug/tests/click_on_canvas.html +0 -58
  225. data/lib/leaflet/debug/tests/click_on_canvas_broken.html +0 -49
  226. data/lib/leaflet/debug/tests/dragging_and_copyworldjump.html +0 -61
  227. data/lib/leaflet/debug/tests/opacity.html +0 -56
  228. data/lib/leaflet/debug/tests/popupcontextmenuclicks.html +0 -59
  229. data/lib/leaflet/debug/tests/remove_while_dragging.html +0 -28
  230. data/lib/leaflet/debug/tests/removetilewhilepan.html +0 -41
  231. data/lib/leaflet/debug/tests/reuse_popups.html +0 -40
  232. data/lib/leaflet/debug/tests/rtl.html +0 -42
  233. data/lib/leaflet/debug/tests/rtl2.html +0 -27
  234. data/lib/leaflet/debug/tests/set_icon_reuse_dom.html +0 -43
  235. data/lib/leaflet/debug/tests/svg_clicks.html +0 -54
  236. data/lib/leaflet/debug/vector/bounds-extend.html +0 -88
  237. data/lib/leaflet/debug/vector/feature-group-bounds.html +0 -90
  238. data/lib/leaflet/debug/vector/geojson-sample.js +0 -53
  239. data/lib/leaflet/debug/vector/geojson.html +0 -173
  240. data/lib/leaflet/debug/vector/rectangle.html +0 -53
  241. data/lib/leaflet/debug/vector/route.js +0 -1
  242. data/lib/leaflet/debug/vector/touchzoomemu.html +0 -194
  243. data/lib/leaflet/debug/vector/us-states.js +0 -54
  244. data/lib/leaflet/debug/vector/vector-bounds.html +0 -69
  245. data/lib/leaflet/debug/vector/vector-canvas.html +0 -92
  246. data/lib/leaflet/debug/vector/vector-mobile.html +0 -38
  247. data/lib/leaflet/debug/vector/vector-simple.html +0 -48
  248. data/lib/leaflet/debug/vector/vector.html +0 -37
  249. data/lib/leaflet/dist/images/layers-2x.png +0 -0
  250. data/lib/leaflet/dist/images/layers.png +0 -0
  251. data/lib/leaflet/dist/images/marker-icon-2x.png +0 -0
  252. data/lib/leaflet/dist/images/marker-icon.png +0 -0
  253. data/lib/leaflet/dist/images/marker-shadow.png +0 -0
  254. data/lib/leaflet/dist/leaflet.css +0 -478
  255. data/lib/leaflet/package.json +0 -27
  256. data/lib/leaflet/spec/after.js +0 -2
  257. data/lib/leaflet/spec/before.js +0 -3
  258. data/lib/leaflet/spec/expect.js +0 -1253
  259. data/lib/leaflet/spec/index.html +0 -86
  260. data/lib/leaflet/spec/karma.conf.js +0 -65
  261. data/lib/leaflet/spec/sinon.js +0 -4223
  262. data/lib/leaflet/spec/spec.hintrc.js +0 -25
  263. data/lib/leaflet/spec/suites/LeafletSpec.js +0 -13
  264. data/lib/leaflet/spec/suites/SpecHelper.js +0 -42
  265. data/lib/leaflet/spec/suites/control/Control.AttributionSpec.js +0 -68
  266. data/lib/leaflet/spec/suites/control/Control.LayersSpec.js +0 -67
  267. data/lib/leaflet/spec/suites/control/Control.ScaleSpec.js +0 -6
  268. data/lib/leaflet/spec/suites/core/ClassSpec.js +0 -156
  269. data/lib/leaflet/spec/suites/core/EventsSpec.js +0 -392
  270. data/lib/leaflet/spec/suites/core/UtilSpec.js +0 -256
  271. data/lib/leaflet/spec/suites/dom/DomEventSpec.js +0 -102
  272. data/lib/leaflet/spec/suites/dom/DomUtilSpec.js +0 -82
  273. data/lib/leaflet/spec/suites/dom/PosAnimationSpec.js +0 -27
  274. data/lib/leaflet/spec/suites/geo/CRSSpec.js +0 -47
  275. data/lib/leaflet/spec/suites/geo/LatLngBoundsSpec.js +0 -144
  276. data/lib/leaflet/spec/suites/geo/LatLngSpec.js +0 -132
  277. data/lib/leaflet/spec/suites/geo/ProjectionSpec.js +0 -48
  278. data/lib/leaflet/spec/suites/geometry/BoundsSpec.js +0 -87
  279. data/lib/leaflet/spec/suites/geometry/LineUtilSpec.js +0 -75
  280. data/lib/leaflet/spec/suites/geometry/PointSpec.js +0 -104
  281. data/lib/leaflet/spec/suites/geometry/PolyUtilSpec.js +0 -27
  282. data/lib/leaflet/spec/suites/geometry/TransformationSpec.js +0 -31
  283. data/lib/leaflet/spec/suites/layer/FeatureGroupSpec.js +0 -86
  284. data/lib/leaflet/spec/suites/layer/GeoJSONSpec.js +0 -282
  285. data/lib/leaflet/spec/suites/layer/LayerGroupSpec.js +0 -58
  286. data/lib/leaflet/spec/suites/layer/PopupSpec.js +0 -119
  287. data/lib/leaflet/spec/suites/layer/TileLayerSpec.js +0 -88
  288. data/lib/leaflet/spec/suites/layer/marker/MarkerSpec.js +0 -94
  289. data/lib/leaflet/spec/suites/layer/vector/CircleMarkerSpec.js +0 -53
  290. data/lib/leaflet/spec/suites/layer/vector/CircleSpec.js +0 -17
  291. data/lib/leaflet/spec/suites/layer/vector/PolygonSpec.js +0 -91
  292. data/lib/leaflet/spec/suites/layer/vector/PolylineGeometrySpec.js +0 -35
  293. data/lib/leaflet/spec/suites/layer/vector/PolylineSpec.js +0 -55
  294. data/lib/leaflet/spec/suites/map/MapSpec.js +0 -536
  295. data/lib/leaflet/spec/suites/map/handler/Map.DragSpec.js +0 -38
  296. data/vendor/assets/images/layers-2x.png +0 -0
  297. data/vendor/assets/images/layers.png +0 -0
  298. data/vendor/assets/images/marker-icon-2x.png +0 -0
  299. data/vendor/assets/images/marker-icon.png +0 -0
  300. data/vendor/assets/images/marker-shadow.png +0 -0
  301. data/vendor/assets/images/spritesheet-2x.png +0 -0
  302. data/vendor/assets/images/spritesheet.png +0 -0
  303. data/vendor/assets/javascripts/leaflet.draw.js +0 -37
  304. data/vendor/assets/javascripts/leaflet.js +0 -147
  305. data/vendor/assets/javascripts/leaflet.label.js +0 -11
  306. data/vendor/assets/stylesheets/leaflet.css.erb +0 -478
  307. data/vendor/assets/stylesheets/leaflet.draw.ie.css +0 -49
  308. data/vendor/assets/stylesheets/leaflet.label.css +0 -52
@@ -1,37 +0,0 @@
1
- {
2
- "name": "leaflet-draw",
3
- "version": "0.2.2",
4
- "description": "Vector drawing plugin for Leaflet",
5
- "devDependencies": {
6
- "leaflet": "git://github.com/Leaflet/Leaflet.git",
7
- "jshint": "~1.1.0",
8
- "uglify-js": "~2.2.5",
9
- "jake": "~0.5.10",
10
- "mocha": "~1.9.0",
11
- "karma": "~0.8.0"
12
- },
13
- "main": "dist/leaflet.draw.js",
14
- "directories": {
15
- "example": "examples"
16
- },
17
- "scripts": {
18
- "build": "jake",
19
- "test": "jake test"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/Leaflet/Leaflet.draw.git"
24
- },
25
- "keywords": [
26
- "maps",
27
- "leaflet",
28
- "client",
29
- "vector",
30
- "drawing",
31
- "draw"
32
- ],
33
- "author": "Jacob Toye",
34
- "license": "BSD",
35
- "readmeFilename": "README.md",
36
- "gitHead": "d856454e7ddbead9f5e87dd5c20cb6713a7564a9"
37
- }
@@ -1,2 +0,0 @@
1
- // put after Leaflet files as imagePath can't be detected in a PhantomJS env
2
- L.Icon.Default.imagePath = "../dist/images";
@@ -1,3 +0,0 @@
1
- // set up before Leaflet files to test L#noConflict later
2
- L = 'test';
3
-
@@ -1,1253 +0,0 @@
1
-
2
- (function (global, module) {
3
-
4
- if ('undefined' == typeof module) {
5
- var module = { exports: {} }
6
- , exports = module.exports
7
- }
8
-
9
- /**
10
- * Exports.
11
- */
12
-
13
- module.exports = expect;
14
- expect.Assertion = Assertion;
15
-
16
- /**
17
- * Exports version.
18
- */
19
-
20
- expect.version = '0.1.2';
21
-
22
- /**
23
- * Possible assertion flags.
24
- */
25
-
26
- var flags = {
27
- not: ['to', 'be', 'have', 'include', 'only']
28
- , to: ['be', 'have', 'include', 'only', 'not']
29
- , only: ['have']
30
- , have: ['own']
31
- , be: ['an']
32
- };
33
-
34
- function expect (obj) {
35
- return new Assertion(obj);
36
- }
37
-
38
- /**
39
- * Constructor
40
- *
41
- * @api private
42
- */
43
-
44
- function Assertion (obj, flag, parent) {
45
- this.obj = obj;
46
- this.flags = {};
47
-
48
- if (undefined != parent) {
49
- this.flags[flag] = true;
50
-
51
- for (var i in parent.flags) {
52
- if (parent.flags.hasOwnProperty(i)) {
53
- this.flags[i] = true;
54
- }
55
- }
56
- }
57
-
58
- var $flags = flag ? flags[flag] : keys(flags)
59
- , self = this
60
-
61
- if ($flags) {
62
- for (var i = 0, l = $flags.length; i < l; i++) {
63
- // avoid recursion
64
- if (this.flags[$flags[i]]) continue;
65
-
66
- var name = $flags[i]
67
- , assertion = new Assertion(this.obj, name, this)
68
-
69
- if ('function' == typeof Assertion.prototype[name]) {
70
- // clone the function, make sure we dont touch the prot reference
71
- var old = this[name];
72
- this[name] = function () {
73
- return old.apply(self, arguments);
74
- }
75
-
76
- for (var fn in Assertion.prototype) {
77
- if (Assertion.prototype.hasOwnProperty(fn) && fn != name) {
78
- this[name][fn] = bind(assertion[fn], assertion);
79
- }
80
- }
81
- } else {
82
- this[name] = assertion;
83
- }
84
- }
85
- }
86
- };
87
-
88
- /**
89
- * Performs an assertion
90
- *
91
- * @api private
92
- */
93
-
94
- Assertion.prototype.assert = function (truth, msg, error) {
95
- var msg = this.flags.not ? error : msg
96
- , ok = this.flags.not ? !truth : truth;
97
-
98
- if (!ok) {
99
- throw new Error(msg.call(this));
100
- }
101
-
102
- this.and = new Assertion(this.obj);
103
- };
104
-
105
- /**
106
- * Check if the value is truthy
107
- *
108
- * @api public
109
- */
110
-
111
- Assertion.prototype.ok = function () {
112
- this.assert(
113
- !!this.obj
114
- , function(){ return 'expected ' + i(this.obj) + ' to be truthy' }
115
- , function(){ return 'expected ' + i(this.obj) + ' to be falsy' });
116
- };
117
-
118
- /**
119
- * Assert that the function throws.
120
- *
121
- * @param {Function|RegExp} callback, or regexp to match error string against
122
- * @api public
123
- */
124
-
125
- Assertion.prototype.throwError =
126
- Assertion.prototype.throwException = function (fn) {
127
- expect(this.obj).to.be.a('function');
128
-
129
- var thrown = false
130
- , not = this.flags.not
131
-
132
- try {
133
- this.obj();
134
- } catch (e) {
135
- if ('function' == typeof fn) {
136
- fn(e);
137
- } else if ('object' == typeof fn) {
138
- var subject = 'string' == typeof e ? e : e.message;
139
- if (not) {
140
- expect(subject).to.not.match(fn);
141
- } else {
142
- expect(subject).to.match(fn);
143
- }
144
- }
145
- thrown = true;
146
- }
147
-
148
- if ('object' == typeof fn && not) {
149
- // in the presence of a matcher, ensure the `not` only applies to
150
- // the matching.
151
- this.flags.not = false;
152
- }
153
-
154
- var name = this.obj.name || 'fn';
155
- this.assert(
156
- thrown
157
- , function(){ return 'expected ' + name + ' to throw an exception' }
158
- , function(){ return 'expected ' + name + ' not to throw an exception' });
159
- };
160
-
161
- /**
162
- * Checks if the array is empty.
163
- *
164
- * @api public
165
- */
166
-
167
- Assertion.prototype.empty = function () {
168
- var expectation;
169
-
170
- if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) {
171
- if ('number' == typeof this.obj.length) {
172
- expectation = !this.obj.length;
173
- } else {
174
- expectation = !keys(this.obj).length;
175
- }
176
- } else {
177
- if ('string' != typeof this.obj) {
178
- expect(this.obj).to.be.an('object');
179
- }
180
-
181
- expect(this.obj).to.have.property('length');
182
- expectation = !this.obj.length;
183
- }
184
-
185
- this.assert(
186
- expectation
187
- , function(){ return 'expected ' + i(this.obj) + ' to be empty' }
188
- , function(){ return 'expected ' + i(this.obj) + ' to not be empty' });
189
- return this;
190
- };
191
-
192
- /**
193
- * Checks if the obj exactly equals another.
194
- *
195
- * @api public
196
- */
197
-
198
- Assertion.prototype.be =
199
- Assertion.prototype.equal = function (obj) {
200
- this.assert(
201
- obj === this.obj
202
- , function(){ return 'expected ' + i(this.obj) + ' to equal ' + i(obj) }
203
- , function(){ return 'expected ' + i(this.obj) + ' to not equal ' + i(obj) });
204
- return this;
205
- };
206
-
207
- /**
208
- * Checks if the obj sortof equals another.
209
- *
210
- * @api public
211
- */
212
-
213
- Assertion.prototype.eql = function (obj) {
214
- this.assert(
215
- expect.eql(obj, this.obj)
216
- , function(){ return 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj) }
217
- , function(){ return 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj) });
218
- return this;
219
- };
220
-
221
- /**
222
- * Assert within start to finish (inclusive).
223
- *
224
- * @param {Number} start
225
- * @param {Number} finish
226
- * @api public
227
- */
228
-
229
- Assertion.prototype.within = function (start, finish) {
230
- var range = start + '..' + finish;
231
- this.assert(
232
- this.obj >= start && this.obj <= finish
233
- , function(){ return 'expected ' + i(this.obj) + ' to be within ' + range }
234
- , function(){ return 'expected ' + i(this.obj) + ' to not be within ' + range });
235
- return this;
236
- };
237
-
238
- /**
239
- * Assert typeof / instance of
240
- *
241
- * @api public
242
- */
243
-
244
- Assertion.prototype.a =
245
- Assertion.prototype.an = function (type) {
246
- if ('string' == typeof type) {
247
- // proper english in error msg
248
- var n = /^[aeiou]/.test(type) ? 'n' : '';
249
-
250
- // typeof with support for 'array'
251
- this.assert(
252
- 'array' == type ? isArray(this.obj) :
253
- 'object' == type
254
- ? 'object' == typeof this.obj && null !== this.obj
255
- : type == typeof this.obj
256
- , function(){ return 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type }
257
- , function(){ return 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type });
258
- } else {
259
- // instanceof
260
- var name = type.name || 'supplied constructor';
261
- this.assert(
262
- this.obj instanceof type
263
- , function(){ return 'expected ' + i(this.obj) + ' to be an instance of ' + name }
264
- , function(){ return 'expected ' + i(this.obj) + ' not to be an instance of ' + name });
265
- }
266
-
267
- return this;
268
- };
269
-
270
- /**
271
- * Assert numeric value above _n_.
272
- *
273
- * @param {Number} n
274
- * @api public
275
- */
276
-
277
- Assertion.prototype.greaterThan =
278
- Assertion.prototype.above = function (n) {
279
- this.assert(
280
- this.obj > n
281
- , function(){ return 'expected ' + i(this.obj) + ' to be above ' + n }
282
- , function(){ return 'expected ' + i(this.obj) + ' to be below ' + n });
283
- return this;
284
- };
285
-
286
- /**
287
- * Assert numeric value below _n_.
288
- *
289
- * @param {Number} n
290
- * @api public
291
- */
292
-
293
- Assertion.prototype.lessThan =
294
- Assertion.prototype.below = function (n) {
295
- this.assert(
296
- this.obj < n
297
- , function(){ return 'expected ' + i(this.obj) + ' to be below ' + n }
298
- , function(){ return 'expected ' + i(this.obj) + ' to be above ' + n });
299
- return this;
300
- };
301
-
302
- /**
303
- * Assert string value matches _regexp_.
304
- *
305
- * @param {RegExp} regexp
306
- * @api public
307
- */
308
-
309
- Assertion.prototype.match = function (regexp) {
310
- this.assert(
311
- regexp.exec(this.obj)
312
- , function(){ return 'expected ' + i(this.obj) + ' to match ' + regexp }
313
- , function(){ return 'expected ' + i(this.obj) + ' not to match ' + regexp });
314
- return this;
315
- };
316
-
317
- /**
318
- * Assert property "length" exists and has value of _n_.
319
- *
320
- * @param {Number} n
321
- * @api public
322
- */
323
-
324
- Assertion.prototype.length = function (n) {
325
- expect(this.obj).to.have.property('length');
326
- var len = this.obj.length;
327
- this.assert(
328
- n == len
329
- , function(){ return 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len }
330
- , function(){ return 'expected ' + i(this.obj) + ' to not have a length of ' + len });
331
- return this;
332
- };
333
-
334
- /**
335
- * Assert property _name_ exists, with optional _val_.
336
- *
337
- * @param {String} name
338
- * @param {Mixed} val
339
- * @api public
340
- */
341
-
342
- Assertion.prototype.property = function (name, val) {
343
- if (this.flags.own) {
344
- this.assert(
345
- Object.prototype.hasOwnProperty.call(this.obj, name)
346
- , function(){ return 'expected ' + i(this.obj) + ' to have own property ' + i(name) }
347
- , function(){ return 'expected ' + i(this.obj) + ' to not have own property ' + i(name) });
348
- return this;
349
- }
350
-
351
- if (this.flags.not && undefined !== val) {
352
- if (undefined === this.obj[name]) {
353
- throw new Error(i(this.obj) + ' has no property ' + i(name));
354
- }
355
- } else {
356
- var hasProp;
357
- try {
358
- hasProp = name in this.obj
359
- } catch (e) {
360
- hasProp = undefined !== this.obj[name]
361
- }
362
-
363
- this.assert(
364
- hasProp
365
- , function(){ return 'expected ' + i(this.obj) + ' to have a property ' + i(name) }
366
- , function(){ return 'expected ' + i(this.obj) + ' to not have a property ' + i(name) });
367
- }
368
-
369
- if (undefined !== val) {
370
- this.assert(
371
- val === this.obj[name]
372
- , function(){ return 'expected ' + i(this.obj) + ' to have a property ' + i(name)
373
- + ' of ' + i(val) + ', but got ' + i(this.obj[name]) }
374
- , function(){ return 'expected ' + i(this.obj) + ' to not have a property ' + i(name)
375
- + ' of ' + i(val) });
376
- }
377
-
378
- this.obj = this.obj[name];
379
- return this;
380
- };
381
-
382
- /**
383
- * Assert that the array contains _obj_ or string contains _obj_.
384
- *
385
- * @param {Mixed} obj|string
386
- * @api public
387
- */
388
-
389
- Assertion.prototype.string =
390
- Assertion.prototype.contain = function (obj) {
391
- if ('string' == typeof this.obj) {
392
- this.assert(
393
- ~this.obj.indexOf(obj)
394
- , function(){ return 'expected ' + i(this.obj) + ' to contain ' + i(obj) }
395
- , function(){ return 'expected ' + i(this.obj) + ' to not contain ' + i(obj) });
396
- } else {
397
- this.assert(
398
- ~indexOf(this.obj, obj)
399
- , function(){ return 'expected ' + i(this.obj) + ' to contain ' + i(obj) }
400
- , function(){ return 'expected ' + i(this.obj) + ' to not contain ' + i(obj) });
401
- }
402
- return this;
403
- };
404
-
405
- /**
406
- * Assert exact keys or inclusion of keys by using
407
- * the `.own` modifier.
408
- *
409
- * @param {Array|String ...} keys
410
- * @api public
411
- */
412
-
413
- Assertion.prototype.key =
414
- Assertion.prototype.keys = function ($keys) {
415
- var str
416
- , ok = true;
417
-
418
- $keys = isArray($keys)
419
- ? $keys
420
- : Array.prototype.slice.call(arguments);
421
-
422
- if (!$keys.length) throw new Error('keys required');
423
-
424
- var actual = keys(this.obj)
425
- , len = $keys.length;
426
-
427
- // Inclusion
428
- ok = every($keys, function (key) {
429
- return ~indexOf(actual, key);
430
- });
431
-
432
- // Strict
433
- if (!this.flags.not && this.flags.only) {
434
- ok = ok && $keys.length == actual.length;
435
- }
436
-
437
- // Key string
438
- if (len > 1) {
439
- $keys = map($keys, function (key) {
440
- return i(key);
441
- });
442
- var last = $keys.pop();
443
- str = $keys.join(', ') + ', and ' + last;
444
- } else {
445
- str = i($keys[0]);
446
- }
447
-
448
- // Form
449
- str = (len > 1 ? 'keys ' : 'key ') + str;
450
-
451
- // Have / include
452
- str = (!this.flags.only ? 'include ' : 'only have ') + str;
453
-
454
- // Assertion
455
- this.assert(
456
- ok
457
- , function(){ return 'expected ' + i(this.obj) + ' to ' + str }
458
- , function(){ return 'expected ' + i(this.obj) + ' to not ' + str });
459
-
460
- return this;
461
- };
462
- /**
463
- * Assert a failure.
464
- *
465
- * @param {String ...} custom message
466
- * @api public
467
- */
468
- Assertion.prototype.fail = function (msg) {
469
- msg = msg || "explicit failure";
470
- this.assert(false, msg, msg);
471
- return this;
472
- };
473
-
474
- /**
475
- * Function bind implementation.
476
- */
477
-
478
- function bind (fn, scope) {
479
- return function () {
480
- return fn.apply(scope, arguments);
481
- }
482
- }
483
-
484
- /**
485
- * Array every compatibility
486
- *
487
- * @see bit.ly/5Fq1N2
488
- * @api public
489
- */
490
-
491
- function every (arr, fn, thisObj) {
492
- var scope = thisObj || global;
493
- for (var i = 0, j = arr.length; i < j; ++i) {
494
- if (!fn.call(scope, arr[i], i, arr)) {
495
- return false;
496
- }
497
- }
498
- return true;
499
- };
500
-
501
- /**
502
- * Array indexOf compatibility.
503
- *
504
- * @see bit.ly/a5Dxa2
505
- * @api public
506
- */
507
-
508
- function indexOf (arr, o, i) {
509
- if (Array.prototype.indexOf) {
510
- return Array.prototype.indexOf.call(arr, o, i);
511
- }
512
-
513
- if (arr.length === undefined) {
514
- return -1;
515
- }
516
-
517
- for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0
518
- ; i < j && arr[i] !== o; i++);
519
-
520
- return j <= i ? -1 : i;
521
- };
522
-
523
- // https://gist.github.com/1044128/
524
- var getOuterHTML = function(element) {
525
- if ('outerHTML' in element) return element.outerHTML;
526
- var ns = "http://www.w3.org/1999/xhtml";
527
- var container = document.createElementNS(ns, '_');
528
- var elemProto = (window.HTMLElement || window.Element).prototype;
529
- var xmlSerializer = new XMLSerializer();
530
- var html;
531
- if (document.xmlVersion) {
532
- return xmlSerializer.serializeToString(element);
533
- } else {
534
- container.appendChild(element.cloneNode(false));
535
- html = container.innerHTML.replace('><', '>' + element.innerHTML + '<');
536
- container.innerHTML = '';
537
- return html;
538
- }
539
- };
540
-
541
- // Returns true if object is a DOM element.
542
- var isDOMElement = function (object) {
543
- if (typeof HTMLElement === 'object') {
544
- return object instanceof HTMLElement;
545
- } else {
546
- return object &&
547
- typeof object === 'object' &&
548
- object.nodeType === 1 &&
549
- typeof object.nodeName === 'string';
550
- }
551
- };
552
-
553
- /**
554
- * Inspects an object.
555
- *
556
- * @see taken from node.js `util` module (copyright Joyent, MIT license)
557
- * @api private
558
- */
559
-
560
- function i (obj, showHidden, depth) {
561
- var seen = [];
562
-
563
- function stylize (str) {
564
- return str;
565
- };
566
-
567
- function format (value, recurseTimes) {
568
- // Provide a hook for user-specified inspect functions.
569
- // Check that value is an object with an inspect function on it
570
- if (value && typeof value.inspect === 'function' &&
571
- // Filter out the util module, it's inspect function is special
572
- value !== exports &&
573
- // Also filter out any prototype objects using the circular check.
574
- !(value.constructor && value.constructor.prototype === value)) {
575
- return value.inspect(recurseTimes);
576
- }
577
-
578
- // Primitive types cannot have properties
579
- switch (typeof value) {
580
- case 'undefined':
581
- return stylize('undefined', 'undefined');
582
-
583
- case 'string':
584
- var simple = '\'' + json.stringify(value).replace(/^"|"$/g, '')
585
- .replace(/'/g, "\\'")
586
- .replace(/\\"/g, '"') + '\'';
587
- return stylize(simple, 'string');
588
-
589
- case 'number':
590
- return stylize('' + value, 'number');
591
-
592
- case 'boolean':
593
- return stylize('' + value, 'boolean');
594
- }
595
- // For some reason typeof null is "object", so special case here.
596
- if (value === null) {
597
- return stylize('null', 'null');
598
- }
599
-
600
- if (isDOMElement(value)) {
601
- return getOuterHTML(value);
602
- }
603
-
604
- // Look up the keys of the object.
605
- var visible_keys = keys(value);
606
- var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys;
607
-
608
- // Functions without properties can be shortcutted.
609
- if (typeof value === 'function' && $keys.length === 0) {
610
- if (isRegExp(value)) {
611
- return stylize('' + value, 'regexp');
612
- } else {
613
- var name = value.name ? ': ' + value.name : '';
614
- return stylize('[Function' + name + ']', 'special');
615
- }
616
- }
617
-
618
- // Dates without properties can be shortcutted
619
- if (isDate(value) && $keys.length === 0) {
620
- return stylize(value.toUTCString(), 'date');
621
- }
622
-
623
- var base, type, braces;
624
- // Determine the object type
625
- if (isArray(value)) {
626
- type = 'Array';
627
- braces = ['[', ']'];
628
- } else {
629
- type = 'Object';
630
- braces = ['{', '}'];
631
- }
632
-
633
- // Make functions say that they are functions
634
- if (typeof value === 'function') {
635
- var n = value.name ? ': ' + value.name : '';
636
- base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']';
637
- } else {
638
- base = '';
639
- }
640
-
641
- // Make dates with properties first say the date
642
- if (isDate(value)) {
643
- base = ' ' + value.toUTCString();
644
- }
645
-
646
- if ($keys.length === 0) {
647
- return braces[0] + base + braces[1];
648
- }
649
-
650
- if (recurseTimes < 0) {
651
- if (isRegExp(value)) {
652
- return stylize('' + value, 'regexp');
653
- } else {
654
- return stylize('[Object]', 'special');
655
- }
656
- }
657
-
658
- seen.push(value);
659
-
660
- var output = map($keys, function (key) {
661
- var name, str;
662
- if (value.__lookupGetter__) {
663
- if (value.__lookupGetter__(key)) {
664
- if (value.__lookupSetter__(key)) {
665
- str = stylize('[Getter/Setter]', 'special');
666
- } else {
667
- str = stylize('[Getter]', 'special');
668
- }
669
- } else {
670
- if (value.__lookupSetter__(key)) {
671
- str = stylize('[Setter]', 'special');
672
- }
673
- }
674
- }
675
- if (indexOf(visible_keys, key) < 0) {
676
- name = '[' + key + ']';
677
- }
678
- if (!str) {
679
- if (indexOf(seen, value[key]) < 0) {
680
- if (recurseTimes === null) {
681
- str = format(value[key]);
682
- } else {
683
- str = format(value[key], recurseTimes - 1);
684
- }
685
- if (str.indexOf('\n') > -1) {
686
- if (isArray(value)) {
687
- str = map(str.split('\n'), function (line) {
688
- return ' ' + line;
689
- }).join('\n').substr(2);
690
- } else {
691
- str = '\n' + map(str.split('\n'), function (line) {
692
- return ' ' + line;
693
- }).join('\n');
694
- }
695
- }
696
- } else {
697
- str = stylize('[Circular]', 'special');
698
- }
699
- }
700
- if (typeof name === 'undefined') {
701
- if (type === 'Array' && key.match(/^\d+$/)) {
702
- return str;
703
- }
704
- name = json.stringify('' + key);
705
- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
706
- name = name.substr(1, name.length - 2);
707
- name = stylize(name, 'name');
708
- } else {
709
- name = name.replace(/'/g, "\\'")
710
- .replace(/\\"/g, '"')
711
- .replace(/(^"|"$)/g, "'");
712
- name = stylize(name, 'string');
713
- }
714
- }
715
-
716
- return name + ': ' + str;
717
- });
718
-
719
- seen.pop();
720
-
721
- var numLinesEst = 0;
722
- var length = reduce(output, function (prev, cur) {
723
- numLinesEst++;
724
- if (indexOf(cur, '\n') >= 0) numLinesEst++;
725
- return prev + cur.length + 1;
726
- }, 0);
727
-
728
- if (length > 50) {
729
- output = braces[0] +
730
- (base === '' ? '' : base + '\n ') +
731
- ' ' +
732
- output.join(',\n ') +
733
- ' ' +
734
- braces[1];
735
-
736
- } else {
737
- output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
738
- }
739
-
740
- return output;
741
- }
742
- return format(obj, (typeof depth === 'undefined' ? 2 : depth));
743
- };
744
-
745
- function isArray (ar) {
746
- return Object.prototype.toString.call(ar) == '[object Array]';
747
- };
748
-
749
- function isRegExp(re) {
750
- var s;
751
- try {
752
- s = '' + re;
753
- } catch (e) {
754
- return false;
755
- }
756
-
757
- return re instanceof RegExp || // easy case
758
- // duck-type for context-switching evalcx case
759
- typeof(re) === 'function' &&
760
- re.constructor.name === 'RegExp' &&
761
- re.compile &&
762
- re.test &&
763
- re.exec &&
764
- s.match(/^\/.*\/[gim]{0,3}$/);
765
- };
766
-
767
- function isDate(d) {
768
- if (d instanceof Date) return true;
769
- return false;
770
- };
771
-
772
- function keys (obj) {
773
- if (Object.keys) {
774
- return Object.keys(obj);
775
- }
776
-
777
- var keys = [];
778
-
779
- for (var i in obj) {
780
- if (Object.prototype.hasOwnProperty.call(obj, i)) {
781
- keys.push(i);
782
- }
783
- }
784
-
785
- return keys;
786
- }
787
-
788
- function map (arr, mapper, that) {
789
- if (Array.prototype.map) {
790
- return Array.prototype.map.call(arr, mapper, that);
791
- }
792
-
793
- var other= new Array(arr.length);
794
-
795
- for (var i= 0, n = arr.length; i<n; i++)
796
- if (i in arr)
797
- other[i] = mapper.call(that, arr[i], i, arr);
798
-
799
- return other;
800
- };
801
-
802
- function reduce (arr, fun) {
803
- if (Array.prototype.reduce) {
804
- return Array.prototype.reduce.apply(
805
- arr
806
- , Array.prototype.slice.call(arguments, 1)
807
- );
808
- }
809
-
810
- var len = +this.length;
811
-
812
- if (typeof fun !== "function")
813
- throw new TypeError();
814
-
815
- // no value to return if no initial value and an empty array
816
- if (len === 0 && arguments.length === 1)
817
- throw new TypeError();
818
-
819
- var i = 0;
820
- if (arguments.length >= 2) {
821
- var rv = arguments[1];
822
- } else {
823
- do {
824
- if (i in this) {
825
- rv = this[i++];
826
- break;
827
- }
828
-
829
- // if array contains no values, no initial value to return
830
- if (++i >= len)
831
- throw new TypeError();
832
- } while (true);
833
- }
834
-
835
- for (; i < len; i++) {
836
- if (i in this)
837
- rv = fun.call(null, rv, this[i], i, this);
838
- }
839
-
840
- return rv;
841
- };
842
-
843
- /**
844
- * Asserts deep equality
845
- *
846
- * @see taken from node.js `assert` module (copyright Joyent, MIT license)
847
- * @api private
848
- */
849
-
850
- expect.eql = function eql (actual, expected) {
851
- // 7.1. All identical values are equivalent, as determined by ===.
852
- if (actual === expected) {
853
- return true;
854
- } else if ('undefined' != typeof Buffer
855
- && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {
856
- if (actual.length != expected.length) return false;
857
-
858
- for (var i = 0; i < actual.length; i++) {
859
- if (actual[i] !== expected[i]) return false;
860
- }
861
-
862
- return true;
863
-
864
- // 7.2. If the expected value is a Date object, the actual value is
865
- // equivalent if it is also a Date object that refers to the same time.
866
- } else if (actual instanceof Date && expected instanceof Date) {
867
- return actual.getTime() === expected.getTime();
868
-
869
- // 7.3. Other pairs that do not both pass typeof value == "object",
870
- // equivalence is determined by ==.
871
- } else if (typeof actual != 'object' && typeof expected != 'object') {
872
- return actual == expected;
873
-
874
- // 7.4. For all other Object pairs, including Array objects, equivalence is
875
- // determined by having the same number of owned properties (as verified
876
- // with Object.prototype.hasOwnProperty.call), the same set of keys
877
- // (although not necessarily the same order), equivalent values for every
878
- // corresponding key, and an identical "prototype" property. Note: this
879
- // accounts for both named and indexed properties on Arrays.
880
- } else {
881
- return objEquiv(actual, expected);
882
- }
883
- }
884
-
885
- function isUndefinedOrNull (value) {
886
- return value === null || value === undefined;
887
- }
888
-
889
- function isArguments (object) {
890
- return Object.prototype.toString.call(object) == '[object Arguments]';
891
- }
892
-
893
- function objEquiv (a, b) {
894
- if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
895
- return false;
896
- // an identical "prototype" property.
897
- if (a.prototype !== b.prototype) return false;
898
- //~~~I've managed to break Object.keys through screwy arguments passing.
899
- // Converting to array solves the problem.
900
- if (isArguments(a)) {
901
- if (!isArguments(b)) {
902
- return false;
903
- }
904
- a = pSlice.call(a);
905
- b = pSlice.call(b);
906
- return expect.eql(a, b);
907
- }
908
- try{
909
- var ka = keys(a),
910
- kb = keys(b),
911
- key, i;
912
- } catch (e) {//happens when one is a string literal and the other isn't
913
- return false;
914
- }
915
- // having the same number of owned properties (keys incorporates hasOwnProperty)
916
- if (ka.length != kb.length)
917
- return false;
918
- //the same set of keys (although not necessarily the same order),
919
- ka.sort();
920
- kb.sort();
921
- //~~~cheap key test
922
- for (i = ka.length - 1; i >= 0; i--) {
923
- if (ka[i] != kb[i])
924
- return false;
925
- }
926
- //equivalent values for every corresponding key, and
927
- //~~~possibly expensive deep test
928
- for (i = ka.length - 1; i >= 0; i--) {
929
- key = ka[i];
930
- if (!expect.eql(a[key], b[key]))
931
- return false;
932
- }
933
- return true;
934
- }
935
-
936
- var json = (function () {
937
- "use strict";
938
-
939
- if ('object' == typeof JSON && JSON.parse && JSON.stringify) {
940
- return {
941
- parse: nativeJSON.parse
942
- , stringify: nativeJSON.stringify
943
- }
944
- }
945
-
946
- var JSON = {};
947
-
948
- function f(n) {
949
- // Format integers to have at least two digits.
950
- return n < 10 ? '0' + n : n;
951
- }
952
-
953
- function date(d, key) {
954
- return isFinite(d.valueOf()) ?
955
- d.getUTCFullYear() + '-' +
956
- f(d.getUTCMonth() + 1) + '-' +
957
- f(d.getUTCDate()) + 'T' +
958
- f(d.getUTCHours()) + ':' +
959
- f(d.getUTCMinutes()) + ':' +
960
- f(d.getUTCSeconds()) + 'Z' : null;
961
- };
962
-
963
- var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
964
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
965
- gap,
966
- indent,
967
- meta = { // table of character substitutions
968
- '\b': '\\b',
969
- '\t': '\\t',
970
- '\n': '\\n',
971
- '\f': '\\f',
972
- '\r': '\\r',
973
- '"' : '\\"',
974
- '\\': '\\\\'
975
- },
976
- rep;
977
-
978
-
979
- function quote(string) {
980
-
981
- // If the string contains no control characters, no quote characters, and no
982
- // backslash characters, then we can safely slap some quotes around it.
983
- // Otherwise we must also replace the offending characters with safe escape
984
- // sequences.
985
-
986
- escapable.lastIndex = 0;
987
- return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
988
- var c = meta[a];
989
- return typeof c === 'string' ? c :
990
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
991
- }) + '"' : '"' + string + '"';
992
- }
993
-
994
-
995
- function str(key, holder) {
996
-
997
- // Produce a string from holder[key].
998
-
999
- var i, // The loop counter.
1000
- k, // The member key.
1001
- v, // The member value.
1002
- length,
1003
- mind = gap,
1004
- partial,
1005
- value = holder[key];
1006
-
1007
- // If the value has a toJSON method, call it to obtain a replacement value.
1008
-
1009
- if (value instanceof Date) {
1010
- value = date(key);
1011
- }
1012
-
1013
- // If we were called with a replacer function, then call the replacer to
1014
- // obtain a replacement value.
1015
-
1016
- if (typeof rep === 'function') {
1017
- value = rep.call(holder, key, value);
1018
- }
1019
-
1020
- // What happens next depends on the value's type.
1021
-
1022
- switch (typeof value) {
1023
- case 'string':
1024
- return quote(value);
1025
-
1026
- case 'number':
1027
-
1028
- // JSON numbers must be finite. Encode non-finite numbers as null.
1029
-
1030
- return isFinite(value) ? String(value) : 'null';
1031
-
1032
- case 'boolean':
1033
- case 'null':
1034
-
1035
- // If the value is a boolean or null, convert it to a string. Note:
1036
- // typeof null does not produce 'null'. The case is included here in
1037
- // the remote chance that this gets fixed someday.
1038
-
1039
- return String(value);
1040
-
1041
- // If the type is 'object', we might be dealing with an object or an array or
1042
- // null.
1043
-
1044
- case 'object':
1045
-
1046
- // Due to a specification blunder in ECMAScript, typeof null is 'object',
1047
- // so watch out for that case.
1048
-
1049
- if (!value) {
1050
- return 'null';
1051
- }
1052
-
1053
- // Make an array to hold the partial results of stringifying this object value.
1054
-
1055
- gap += indent;
1056
- partial = [];
1057
-
1058
- // Is the value an array?
1059
-
1060
- if (Object.prototype.toString.apply(value) === '[object Array]') {
1061
-
1062
- // The value is an array. Stringify every element. Use null as a placeholder
1063
- // for non-JSON values.
1064
-
1065
- length = value.length;
1066
- for (i = 0; i < length; i += 1) {
1067
- partial[i] = str(i, value) || 'null';
1068
- }
1069
-
1070
- // Join all of the elements together, separated with commas, and wrap them in
1071
- // brackets.
1072
-
1073
- v = partial.length === 0 ? '[]' : gap ?
1074
- '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
1075
- '[' + partial.join(',') + ']';
1076
- gap = mind;
1077
- return v;
1078
- }
1079
-
1080
- // If the replacer is an array, use it to select the members to be stringified.
1081
-
1082
- if (rep && typeof rep === 'object') {
1083
- length = rep.length;
1084
- for (i = 0; i < length; i += 1) {
1085
- if (typeof rep[i] === 'string') {
1086
- k = rep[i];
1087
- v = str(k, value);
1088
- if (v) {
1089
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
1090
- }
1091
- }
1092
- }
1093
- } else {
1094
-
1095
- // Otherwise, iterate through all of the keys in the object.
1096
-
1097
- for (k in value) {
1098
- if (Object.prototype.hasOwnProperty.call(value, k)) {
1099
- v = str(k, value);
1100
- if (v) {
1101
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
1102
- }
1103
- }
1104
- }
1105
- }
1106
-
1107
- // Join all of the member texts together, separated with commas,
1108
- // and wrap them in braces.
1109
-
1110
- v = partial.length === 0 ? '{}' : gap ?
1111
- '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
1112
- '{' + partial.join(',') + '}';
1113
- gap = mind;
1114
- return v;
1115
- }
1116
- }
1117
-
1118
- // If the JSON object does not yet have a stringify method, give it one.
1119
-
1120
- JSON.stringify = function (value, replacer, space) {
1121
-
1122
- // The stringify method takes a value and an optional replacer, and an optional
1123
- // space parameter, and returns a JSON text. The replacer can be a function
1124
- // that can replace values, or an array of strings that will select the keys.
1125
- // A default replacer method can be provided. Use of the space parameter can
1126
- // produce text that is more easily readable.
1127
-
1128
- var i;
1129
- gap = '';
1130
- indent = '';
1131
-
1132
- // If the space parameter is a number, make an indent string containing that
1133
- // many spaces.
1134
-
1135
- if (typeof space === 'number') {
1136
- for (i = 0; i < space; i += 1) {
1137
- indent += ' ';
1138
- }
1139
-
1140
- // If the space parameter is a string, it will be used as the indent string.
1141
-
1142
- } else if (typeof space === 'string') {
1143
- indent = space;
1144
- }
1145
-
1146
- // If there is a replacer, it must be a function or an array.
1147
- // Otherwise, throw an error.
1148
-
1149
- rep = replacer;
1150
- if (replacer && typeof replacer !== 'function' &&
1151
- (typeof replacer !== 'object' ||
1152
- typeof replacer.length !== 'number')) {
1153
- throw new Error('JSON.stringify');
1154
- }
1155
-
1156
- // Make a fake root object containing our value under the key of ''.
1157
- // Return the result of stringifying the value.
1158
-
1159
- return str('', {'': value});
1160
- };
1161
-
1162
- // If the JSON object does not yet have a parse method, give it one.
1163
-
1164
- JSON.parse = function (text, reviver) {
1165
- // The parse method takes a text and an optional reviver function, and returns
1166
- // a JavaScript value if the text is a valid JSON text.
1167
-
1168
- var j;
1169
-
1170
- function walk(holder, key) {
1171
-
1172
- // The walk method is used to recursively walk the resulting structure so
1173
- // that modifications can be made.
1174
-
1175
- var k, v, value = holder[key];
1176
- if (value && typeof value === 'object') {
1177
- for (k in value) {
1178
- if (Object.prototype.hasOwnProperty.call(value, k)) {
1179
- v = walk(value, k);
1180
- if (v !== undefined) {
1181
- value[k] = v;
1182
- } else {
1183
- delete value[k];
1184
- }
1185
- }
1186
- }
1187
- }
1188
- return reviver.call(holder, key, value);
1189
- }
1190
-
1191
-
1192
- // Parsing happens in four stages. In the first stage, we replace certain
1193
- // Unicode characters with escape sequences. JavaScript handles many characters
1194
- // incorrectly, either silently deleting them, or treating them as line endings.
1195
-
1196
- text = String(text);
1197
- cx.lastIndex = 0;
1198
- if (cx.test(text)) {
1199
- text = text.replace(cx, function (a) {
1200
- return '\\u' +
1201
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
1202
- });
1203
- }
1204
-
1205
- // In the second stage, we run the text against regular expressions that look
1206
- // for non-JSON patterns. We are especially concerned with '()' and 'new'
1207
- // because they can cause invocation, and '=' because it can cause mutation.
1208
- // But just to be safe, we want to reject all unexpected forms.
1209
-
1210
- // We split the second stage into 4 regexp operations in order to work around
1211
- // crippling inefficiencies in IE's and Safari's regexp engines. First we
1212
- // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
1213
- // replace all simple value tokens with ']' characters. Third, we delete all
1214
- // open brackets that follow a colon or comma or that begin the text. Finally,
1215
- // we look to see that the remaining characters are only whitespace or ']' or
1216
- // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
1217
-
1218
- if (/^[\],:{}\s]*$/
1219
- .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
1220
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
1221
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
1222
-
1223
- // In the third stage we use the eval function to compile the text into a
1224
- // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
1225
- // in JavaScript: it can begin a block or an object literal. We wrap the text
1226
- // in parens to eliminate the ambiguity.
1227
-
1228
- j = eval('(' + text + ')');
1229
-
1230
- // In the optional fourth stage, we recursively walk the new structure, passing
1231
- // each name/value pair to a reviver function for possible transformation.
1232
-
1233
- return typeof reviver === 'function' ?
1234
- walk({'': j}, '') : j;
1235
- }
1236
-
1237
- // If the text is not JSON parseable, then a SyntaxError is thrown.
1238
-
1239
- throw new SyntaxError('JSON.parse');
1240
- };
1241
-
1242
- return JSON;
1243
- })();
1244
-
1245
- if ('undefined' != typeof window) {
1246
- window.expect = module.exports;
1247
- }
1248
-
1249
- })(
1250
- this
1251
- , 'undefined' != typeof module ? module : {}
1252
- , 'undefined' != typeof exports ? exports : {}
1253
- );