columbus3 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/README.md +122 -0
- data/bin/console +0 -0
- data/bin/setup +0 -0
- data/bower.json +25 -0
- data/bower_components/jquery/.bower.json +7 -20
- data/bower_components/jquery/AUTHORS.txt +301 -0
- data/bower_components/jquery/{MIT-LICENSE.txt → LICENSE.txt} +17 -2
- data/bower_components/jquery/README.md +67 -0
- data/bower_components/jquery/bower.json +2 -16
- data/bower_components/jquery/dist/core.js +476 -0
- data/bower_components/jquery/dist/jquery.js +3861 -2818
- data/bower_components/jquery/dist/jquery.min.js +4 -5
- data/bower_components/jquery/dist/jquery.min.map +1 -1
- data/bower_components/jquery/dist/jquery.slim.js +8160 -0
- data/bower_components/jquery/dist/jquery.slim.min.js +4 -0
- data/bower_components/jquery/dist/jquery.slim.min.map +1 -0
- data/bower_components/jquery/external/sizzle/LICENSE.txt +36 -0
- data/bower_components/jquery/{src → external}/sizzle/dist/sizzle.js +445 -240
- data/bower_components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/bower_components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/bower_components/jquery/src/.eslintrc.json +5 -0
- data/bower_components/jquery/src/ajax.js +174 -105
- data/bower_components/jquery/src/ajax/jsonp.js +27 -14
- data/bower_components/jquery/src/ajax/load.js +24 -23
- data/bower_components/jquery/src/ajax/parseXML.js +8 -6
- data/bower_components/jquery/src/ajax/script.js +25 -12
- data/bower_components/jquery/src/ajax/var/location.js +5 -0
- data/bower_components/jquery/src/ajax/var/nonce.js +4 -2
- data/bower_components/jquery/src/ajax/var/rquery.js +5 -3
- data/bower_components/jquery/src/ajax/xhr.js +76 -43
- data/bower_components/jquery/src/attributes.js +4 -2
- data/bower_components/jquery/src/attributes/attr.js +60 -60
- data/bower_components/jquery/src/attributes/classes.js +87 -71
- data/bower_components/jquery/src/attributes/prop.js +81 -32
- data/bower_components/jquery/src/attributes/support.js +11 -13
- data/bower_components/jquery/src/attributes/val.js +66 -37
- data/bower_components/jquery/src/callbacks.js +119 -90
- data/bower_components/jquery/src/core.js +108 -134
- data/bower_components/jquery/src/core/DOMEval.js +16 -0
- data/bower_components/jquery/src/core/access.js +21 -11
- data/bower_components/jquery/src/core/init.js +33 -28
- data/bower_components/jquery/src/core/nodeName.js +13 -0
- data/bower_components/jquery/src/core/parseHTML.js +39 -13
- data/bower_components/jquery/src/core/ready-no-deferred.js +96 -0
- data/bower_components/jquery/src/core/ready.js +40 -51
- data/bower_components/jquery/src/core/readyException.js +13 -0
- data/bower_components/jquery/src/core/stripAndCollapse.js +14 -0
- data/bower_components/jquery/src/core/support.js +20 -0
- data/bower_components/jquery/src/core/var/rsingleTag.js +5 -3
- data/bower_components/jquery/src/css.js +146 -158
- data/bower_components/jquery/src/css/addGetHookIf.js +7 -3
- data/bower_components/jquery/src/css/adjustCSS.js +71 -0
- data/bower_components/jquery/src/css/curCSS.js +22 -14
- data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +8 -8
- data/bower_components/jquery/src/css/showHide.js +105 -0
- data/bower_components/jquery/src/css/support.js +69 -76
- data/bower_components/jquery/src/css/var/cssExpand.js +4 -2
- data/bower_components/jquery/src/css/var/getStyles.js +11 -6
- data/bower_components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
- data/bower_components/jquery/src/css/var/rmargin.js +5 -3
- data/bower_components/jquery/src/css/var/rnumnonpx.js +4 -2
- data/bower_components/jquery/src/css/{swap.js → var/swap.js} +5 -7
- data/bower_components/jquery/src/data.js +67 -66
- data/bower_components/jquery/src/data/Data.js +87 -107
- data/bower_components/jquery/src/data/{accepts.js → var/acceptData.js} +6 -7
- data/bower_components/jquery/src/data/var/{data_priv.js → dataPriv.js} +4 -2
- data/bower_components/jquery/src/data/var/{data_user.js → dataUser.js} +4 -2
- data/bower_components/jquery/src/deferred.js +314 -72
- data/bower_components/jquery/src/deferred/exceptionHook.js +21 -0
- data/bower_components/jquery/src/deprecated.js +36 -9
- data/bower_components/jquery/src/dimensions.js +16 -10
- data/bower_components/jquery/src/effects.js +257 -206
- data/bower_components/jquery/src/effects/Tween.js +18 -9
- data/bower_components/jquery/src/effects/animatedSelector.js +7 -5
- data/bower_components/jquery/src/event.js +297 -419
- data/bower_components/jquery/src/event/ajax.js +13 -4
- data/bower_components/jquery/src/event/alias.js +13 -23
- data/bower_components/jquery/src/event/focusin.js +55 -0
- data/bower_components/jquery/src/event/support.js +5 -3
- data/bower_components/jquery/src/event/trigger.js +185 -0
- data/bower_components/jquery/src/exports/amd.js +5 -3
- data/bower_components/jquery/src/exports/global.js +8 -6
- data/bower_components/jquery/src/jquery.js +6 -2
- data/bower_components/jquery/src/manipulation.js +218 -310
- data/bower_components/jquery/src/manipulation/_evalUrl.js +9 -4
- data/bower_components/jquery/src/manipulation/buildFragment.js +104 -0
- data/bower_components/jquery/src/manipulation/getAll.js +32 -0
- data/bower_components/jquery/src/manipulation/setGlobalEval.js +22 -0
- data/bower_components/jquery/src/manipulation/support.js +11 -8
- data/bower_components/jquery/src/manipulation/var/rcheckableType.js +5 -3
- data/bower_components/jquery/src/manipulation/var/rscriptType.js +5 -0
- data/bower_components/jquery/src/manipulation/var/rtagName.js +5 -0
- data/bower_components/jquery/src/manipulation/wrapMap.js +29 -0
- data/bower_components/jquery/src/offset.js +75 -53
- data/bower_components/jquery/src/queue.js +26 -23
- data/bower_components/jquery/src/queue/delay.js +8 -6
- data/bower_components/jquery/src/selector-native.js +133 -68
- data/bower_components/jquery/src/selector-sizzle.js +10 -5
- data/bower_components/jquery/src/selector.js +3 -1
- data/bower_components/jquery/src/serialize.js +52 -33
- data/bower_components/jquery/src/traversing.js +61 -69
- data/bower_components/jquery/src/traversing/findFilter.js +37 -31
- data/bower_components/jquery/src/traversing/var/dir.js +22 -0
- data/bower_components/jquery/src/traversing/var/rneedsContext.js +4 -2
- data/bower_components/jquery/src/traversing/var/siblings.js +17 -0
- data/bower_components/jquery/src/var/ObjectFunctionString.js +7 -0
- data/bower_components/jquery/src/var/arr.js +4 -2
- data/bower_components/jquery/src/var/class2type.js +4 -2
- data/bower_components/jquery/src/var/concat.js +4 -2
- data/bower_components/jquery/src/var/document.js +5 -0
- data/bower_components/jquery/src/var/documentElement.js +7 -0
- data/bower_components/jquery/src/var/fnToString.js +7 -0
- data/bower_components/jquery/src/var/getProto.js +5 -0
- data/bower_components/jquery/src/var/hasOwn.js +4 -2
- data/bower_components/jquery/src/var/indexOf.js +4 -2
- data/bower_components/jquery/src/var/pnum.js +5 -3
- data/bower_components/jquery/src/var/push.js +4 -2
- data/bower_components/jquery/src/var/rcssNum.js +9 -0
- data/bower_components/jquery/src/var/rnothtmlwhite.js +8 -0
- data/bower_components/jquery/src/var/slice.js +4 -2
- data/bower_components/jquery/src/var/support.js +4 -2
- data/bower_components/jquery/src/var/toString.js +4 -2
- data/bower_components/jquery/src/wrap.js +24 -26
- data/bower_components/leaflet-providers/.bower.json +6 -7
- data/bower_components/leaflet-providers/CHANGELOG.md +62 -0
- data/bower_components/leaflet-providers/README.md +12 -3
- data/bower_components/leaflet-providers/bower.json +1 -1
- data/bower_components/leaflet-providers/leaflet-providers.js +133 -92
- data/bower_components/leaflet-providers/package.json +14 -7
- data/bower_components/leaflet/.bower.json +10 -14
- data/bower_components/leaflet/CHANGELOG.md +648 -3
- data/bower_components/leaflet/CONTRIBUTING.md +88 -33
- data/bower_components/leaflet/ISSUE_TEMPLATE.md +25 -0
- data/bower_components/leaflet/Jakefile.js +73 -14
- data/bower_components/leaflet/LICENSE +1 -1
- data/bower_components/leaflet/PLUGIN-GUIDE.md +97 -3
- data/bower_components/leaflet/README.md +6 -8
- data/bower_components/leaflet/bower.json +3 -9
- data/bower_components/leaflet/dist/images/layers-2x.png +0 -0
- data/bower_components/leaflet/dist/images/layers.png +0 -0
- data/bower_components/leaflet/dist/images/marker-icon-2x.png +0 -0
- data/bower_components/leaflet/dist/images/marker-icon.png +0 -0
- data/bower_components/leaflet/dist/images/marker-shadow.png +0 -0
- data/bower_components/leaflet/dist/leaflet-src.js +12301 -7898
- data/bower_components/leaflet/dist/leaflet-src.js.map +1 -0
- data/bower_components/leaflet/dist/leaflet.css +196 -43
- data/bower_components/leaflet/dist/leaflet.js +6 -9
- data/bower_components/leaflet/dist/leaflet.js.map +1 -0
- data/bower_components/leaflet/docs/CNAME +1 -0
- data/bower_components/leaflet/docs/Gemfile +4 -0
- data/bower_components/leaflet/docs/_config.yml +19 -0
- data/bower_components/leaflet/docs/_includes/frame.html +9 -0
- data/bower_components/leaflet/docs/_includes/tutorial_link.html +8 -0
- data/bower_components/leaflet/docs/_layouts/post.html +30 -0
- data/bower_components/leaflet/docs/_layouts/redirected.html +14 -0
- data/bower_components/leaflet/docs/_layouts/tutorial.html +9 -0
- data/bower_components/leaflet/docs/_layouts/tutorial_frame.html +32 -0
- data/bower_components/leaflet/docs/_layouts/tutorial_v2.html +9 -0
- data/bower_components/leaflet/docs/_layouts/v2.html +159 -0
- data/bower_components/leaflet/docs/_posts/2012-07-30-leaflet-0-4-released.md +240 -0
- data/bower_components/leaflet/docs/_posts/2012-08-07-leaflet-0-4-3-and-a-new-tutorial.md +47 -0
- data/bower_components/leaflet/docs/_posts/2012-08-20-guest-post-markerclusterer-0-1-released.md +112 -0
- data/bower_components/leaflet/docs/_posts/2012-10-25-leaflet-0-4-5-bugfix-release-and-plans-for-0.5.md +36 -0
- data/bower_components/leaflet/docs/_posts/2013-01-17-leaflet-0-5-released.md +24 -0
- data/bower_components/leaflet/docs/_posts/2013-02-20-guest-post-draw.md +146 -0
- data/bower_components/leaflet/docs/_posts/2013-06-26-leaflet-0-6-released-dc-code-sprint-mapbox.md +31 -0
- data/bower_components/leaflet/docs/_posts/2013-06-28-leaflet-plugin-authoring-guide.md +111 -0
- data/bower_components/leaflet/docs/_posts/2013-11-18-leaflet-0-7-released-plans-for-future.md +56 -0
- data/bower_components/leaflet/docs/_posts/2015-07-01-leaflet-is-alive-and-kicking.md +21 -0
- data/bower_components/leaflet/docs/_posts/2015-07-15-leaflet-1.0-beta1-released.md +60 -0
- data/bower_components/leaflet/docs/_posts/2015-09-01-leaflet-0.7.4-released.md +29 -0
- data/bower_components/leaflet/docs/_posts/2015-10-14-leaflet-1.0-beta2-released.md +35 -0
- data/bower_components/leaflet/docs/_posts/2016-03-20-debugging-touch-interactions.md +101 -0
- data/bower_components/leaflet/docs/_posts/2016-04-18-leaflet-1.0-rc1.md +78 -0
- data/bower_components/leaflet/docs/_posts/2016-07-16-leaflet-1.0-rc2.md +60 -0
- data/bower_components/leaflet/docs/_posts/2016-08-05-leaflet-1.0-rc3.md +53 -0
- data/bower_components/leaflet/docs/_posts/2016-09-27-leaflet-1.0-final.md +50 -0
- data/bower_components/leaflet/docs/_posts/2016-11-21-leaflet-1.0.2.md +25 -0
- data/bower_components/leaflet/docs/_posts/2017-01-23-leaflet-1.0.3.md +27 -0
- data/bower_components/leaflet/docs/atom.xml +29 -0
- data/bower_components/leaflet/docs/blog.md +24 -0
- data/bower_components/leaflet/docs/docs/css/main.css +1092 -0
- data/bower_components/leaflet/docs/docs/css/normalize.css +426 -0
- data/bower_components/leaflet/docs/docs/highlight/LICENSE +24 -0
- data/bower_components/leaflet/docs/docs/highlight/highlight.pack.js +1 -0
- data/bower_components/leaflet/docs/docs/highlight/styles/github-gist.css +211 -0
- data/bower_components/leaflet/docs/docs/images/2016-03-20-prosthetic-hand-zooming.gif +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-04-18-inheritances.gif +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-04-18-leaflet-toilet-paper.jpeg +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-04-18-madrid-leaflet-864px.jpg +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-07-18-remote-session.png +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-07-18-tooltip.png +0 -0
- data/bower_components/leaflet/docs/docs/images/2016-08-03-iraq-hacking.jpg +0 -0
- data/bower_components/leaflet/docs/docs/images/favicon.ico +0 -0
- data/bower_components/leaflet/docs/docs/images/forum-round.png +0 -0
- data/bower_components/leaflet/docs/docs/images/github-round.png +0 -0
- data/bower_components/leaflet/docs/docs/images/logo.png +0 -0
- data/bower_components/leaflet/docs/docs/images/logos.png +0 -0
- data/bower_components/leaflet/docs/docs/images/sprite.png +0 -0
- data/bower_components/leaflet/docs/docs/images/sprite.svg +75 -0
- data/bower_components/leaflet/docs/docs/images/twitter-round.png +0 -0
- data/bower_components/leaflet/docs/docs/images/twitter.png +0 -0
- data/bower_components/leaflet/docs/docs/js/docs.js +52 -0
- data/bower_components/leaflet/docs/download.md +95 -0
- data/bower_components/leaflet/docs/examples.md +125 -0
- data/bower_components/leaflet/docs/examples/choropleth-example.md +5 -0
- data/bower_components/leaflet/docs/examples/choropleth.md +5 -0
- data/bower_components/leaflet/docs/examples/choropleth/example-basic.md +20 -0
- data/bower_components/leaflet/docs/examples/choropleth/example-color.md +46 -0
- data/bower_components/leaflet/docs/examples/choropleth/example.md +159 -0
- data/bower_components/leaflet/docs/examples/choropleth/index.md +232 -0
- data/bower_components/leaflet/docs/examples/choropleth/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/choropleth/us-states.js +54 -0
- data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example1.md +16 -0
- data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example2.md +20 -0
- data/bower_components/leaflet/docs/examples/crs-simple/crs-simple-example3.md +38 -0
- data/bower_components/leaflet/docs/examples/crs-simple/crs-simple.md +117 -0
- data/bower_components/leaflet/docs/examples/crs-simple/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_400px.png +0 -0
- data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_detail.png +0 -0
- data/bower_components/leaflet/docs/examples/crs-simple/uqm_map_full.png +0 -0
- data/bower_components/leaflet/docs/examples/custom-icons-example.md +5 -0
- data/bower_components/leaflet/docs/examples/custom-icons.md +5 -0
- data/bower_components/leaflet/docs/examples/custom-icons/example-one-icon.md +27 -0
- data/bower_components/leaflet/docs/examples/custom-icons/example.md +31 -0
- data/bower_components/leaflet/docs/examples/custom-icons/index.md +79 -0
- data/bower_components/leaflet/docs/examples/custom-icons/leaf-green.png +0 -0
- data/bower_components/leaflet/docs/examples/custom-icons/leaf-orange.png +0 -0
- data/bower_components/leaflet/docs/examples/custom-icons/leaf-red.png +0 -0
- data/bower_components/leaflet/docs/examples/custom-icons/leaf-shadow.png +0 -0
- data/bower_components/leaflet/docs/examples/custom-icons/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/extending/canvascircles.md +37 -0
- data/bower_components/leaflet/docs/examples/extending/class-diagram.md +24 -0
- data/bower_components/leaflet/docs/examples/extending/class-diagram.png +0 -0
- data/bower_components/leaflet/docs/examples/extending/class-diagram.txt +100 -0
- data/bower_components/leaflet/docs/examples/extending/extending-1-classes.md +196 -0
- data/bower_components/leaflet/docs/examples/extending/extending-2-layers.md +210 -0
- data/bower_components/leaflet/docs/examples/extending/extending-3-controls.md +100 -0
- data/bower_components/leaflet/docs/examples/extending/gridcoords.md +32 -0
- data/bower_components/leaflet/docs/examples/extending/kittenlayer.md +29 -0
- data/bower_components/leaflet/docs/examples/extending/pixelorigin.md +90 -0
- data/bower_components/leaflet/docs/examples/extending/thumbnail-1.png +0 -0
- data/bower_components/leaflet/docs/examples/extending/thumbnail-2.png +0 -0
- data/bower_components/leaflet/docs/examples/extending/thumbnail-3.png +0 -0
- data/bower_components/leaflet/docs/examples/extending/tilt.md +59 -0
- data/bower_components/leaflet/docs/examples/extending/watermark.md +36 -0
- data/bower_components/leaflet/docs/examples/geojson-example.md +5 -0
- data/bower_components/leaflet/docs/examples/geojson.md +5 -0
- data/bower_components/leaflet/docs/examples/geojson/baseball-marker.png +0 -0
- data/bower_components/leaflet/docs/examples/geojson/example.md +78 -0
- data/bower_components/leaflet/docs/examples/geojson/geojson-example.html +89 -0
- data/bower_components/leaflet/docs/examples/geojson/geojson.html +281 -0
- data/bower_components/leaflet/docs/examples/geojson/index.md +205 -0
- data/bower_components/leaflet/docs/examples/geojson/sample-geojson.js +248 -0
- data/bower_components/leaflet/docs/examples/geojson/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/layers-control-example.md +5 -0
- data/bower_components/leaflet/docs/examples/layers-control.md +5 -0
- data/bower_components/leaflet/docs/examples/layers-control/example.md +38 -0
- data/bower_components/leaflet/docs/examples/layers-control/index.md +72 -0
- data/bower_components/leaflet/docs/examples/layers-control/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/map-panes-example.md +5 -0
- data/bower_components/leaflet/docs/examples/map-panes.md +5 -0
- data/bower_components/leaflet/docs/examples/map-panes/eu-countries.js +79 -0
- data/bower_components/leaflet/docs/examples/map-panes/example.md +38 -0
- data/bower_components/leaflet/docs/examples/map-panes/index.md +105 -0
- data/bower_components/leaflet/docs/examples/map-panes/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/mobile-example.md +5 -0
- data/bower_components/leaflet/docs/examples/mobile.md +5 -0
- data/bower_components/leaflet/docs/examples/mobile/example.md +42 -0
- data/bower_components/leaflet/docs/examples/mobile/index.md +72 -0
- data/bower_components/leaflet/docs/examples/mobile/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/quick-start-example.md +5 -0
- data/bower_components/leaflet/docs/examples/quick-start.md +5 -0
- data/bower_components/leaflet/docs/examples/quick-start/example-basic.md +19 -0
- data/bower_components/leaflet/docs/examples/quick-start/example-overlays.md +35 -0
- data/bower_components/leaflet/docs/examples/quick-start/example-popups.md +37 -0
- data/bower_components/leaflet/docs/examples/quick-start/example.md +46 -0
- data/bower_components/leaflet/docs/examples/quick-start/index.md +143 -0
- data/bower_components/leaflet/docs/examples/quick-start/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/video-overlay/example-bounds.md +23 -0
- data/bower_components/leaflet/docs/examples/video-overlay/example-nocontrols.md +31 -0
- data/bower_components/leaflet/docs/examples/video-overlay/example.md +58 -0
- data/bower_components/leaflet/docs/examples/video-overlay/index.md +122 -0
- data/bower_components/leaflet/docs/examples/video-overlay/thumbnail.gif +0 -0
- data/bower_components/leaflet/docs/examples/wms/qgis-wms-layers.png +0 -0
- data/bower_components/leaflet/docs/examples/wms/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/examples/wms/wms-example-crs.md +18 -0
- data/bower_components/leaflet/docs/examples/wms/wms-example1.md +16 -0
- data/bower_components/leaflet/docs/examples/wms/wms-example2.md +16 -0
- data/bower_components/leaflet/docs/examples/wms/wms-example3.md +34 -0
- data/bower_components/leaflet/docs/examples/wms/wms-example4.md +29 -0
- data/bower_components/leaflet/docs/examples/wms/wms.md +157 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/example-delta.md +40 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/example-fractional.md +56 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/example-scale.md +29 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/example-setzoom.md +44 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/example-zero.md +19 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/index.md +275 -0
- data/bower_components/leaflet/docs/examples/zoom-levels/thumbnail.png +0 -0
- data/bower_components/leaflet/docs/index.html +218 -0
- data/bower_components/leaflet/docs/plugins.md +3854 -0
- data/bower_components/leaflet/docs/reference-0.7.7.html +6424 -0
- data/bower_components/leaflet/docs/reference-1.0.0.html +22889 -0
- data/bower_components/leaflet/docs/reference-1.0.2.html +23382 -0
- data/bower_components/leaflet/docs/reference-1.0.3.html +23495 -0
- data/bower_components/leaflet/docs/reference-tpl.html +89 -0
- data/bower_components/leaflet/docs/reference-versions.html +16 -0
- data/bower_components/leaflet/docs/reference.html +3 -0
- data/bower_components/leaflet/package.json +77 -16
- data/columbus3.gemspec +1 -1
- data/doc/ChangeLog.org +10 -0
- data/doc/manual.txt +122 -0
- data/doc/todo.org +63 -0
- data/exe/columbus3 +2 -246
- data/lib/columbus3.rb +12 -7
- data/lib/columbus3/cli/command_semantics.rb +352 -0
- data/lib/columbus3/cli/command_syntax.rb +103 -0
- data/lib/columbus3/metadata/query_parser.racc +21 -7
- data/lib/columbus3/metadata/query_parser.tab.rb +34 -34
- data/lib/columbus3/metadata/sidecar.rb +1 -1
- data/lib/columbus3/renderer/flot_renderer.rb +3 -8
- data/lib/columbus3/renderer/leaflet_renderer.rb +18 -29
- data/lib/columbus3/renderer/sanitizer.rb +8 -0
- data/lib/columbus3/v900track/gpx2v900.rb +31 -0
- data/lib/columbus3/v900track/v900track.rb +34 -8
- data/lib/columbus3/v900track/v900waypoint.rb +9 -0
- data/lib/columbus3/version.rb +1 -1
- data/lib/html/flot.html.erb +6 -6
- data/lib/html/show.html.erb +53 -76
- data/lib/html/track.js.erb +58 -12
- metadata +222 -23
- data/README.textile +0 -67
- data/bower_components/jquery/src/ajax/parseJSON.js +0 -13
- data/bower_components/jquery/src/css/defaultDisplay.js +0 -70
- data/bower_components/jquery/src/css/var/isHidden.js +0 -13
- data/bower_components/jquery/src/intro.js +0 -44
- data/bower_components/jquery/src/outro.js +0 -1
- data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
- data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
- data/bower_components/jquery/src/var/rnotwhite.js +0 -3
- data/bower_components/jquery/src/var/strundefined.js +0 -3
- data/bower_components/leaflet/component.json +0 -20
@@ -1,10 +1,24 @@
|
|
1
1
|
# parses a query and makes it into an expression which can be evaluated
|
2
2
|
#
|
3
|
-
# the search engine evals an expression against an array of hashes
|
4
|
-
# those matching. It does so using a select which iterates over x
|
3
|
+
# the search engine evals an expression against an array of hashes (each hash being a track)
|
4
|
+
# and selects those matching. It does so using a select which iterates over x, that is calling
|
5
|
+
# the current hash "x".
|
5
6
|
#
|
6
7
|
# this parser reads a string containing a query and returns a string containing
|
7
|
-
# the Ruby code which can be passed as argument to the search function
|
8
|
+
# the Ruby code which can be passed as argument to the search function, that is, an expression
|
9
|
+
# on "x" reading fields from the hash.
|
10
|
+
#
|
11
|
+
# thus, for instance,
|
12
|
+
#
|
13
|
+
# start_date >= 2015-01-01
|
14
|
+
#
|
15
|
+
# is parsed to:
|
16
|
+
#
|
17
|
+
# "x[:start_date] >= 2015-01-01"
|
18
|
+
#
|
19
|
+
# the code selecting tracks is
|
20
|
+
#
|
21
|
+
# tracks.select { |x| eval("x[:start_date] >= 2015-01-01") }
|
8
22
|
#
|
9
23
|
# the following queries are supported:
|
10
24
|
#
|
@@ -49,8 +63,8 @@ rule
|
|
49
63
|
start exp
|
50
64
|
|
51
65
|
exp : simple_exp { result = "#{val[0]}" }
|
52
|
-
| exp AND exp { result = "(#{val[0]} and #{val[2]})" }
|
53
|
-
| exp OR exp { result = "(#{val[0]} or #{val[2]})" }
|
66
|
+
| exp AND exp { result = "((#{val[0]}) and (#{val[2]}))" }
|
67
|
+
| exp OR exp { result = "((#{val[0]}) or (#{val[2]}))" }
|
54
68
|
| '(' exp ')' { result = "(#{val[1]})" }
|
55
69
|
|
56
70
|
simple_exp: STRING { result = "x[:start_location].include?(#{val[0]}) or x[:end_location].include?(#{val[0]})" }
|
@@ -71,7 +85,7 @@ rule
|
|
71
85
|
| FIELD op_or_equal value
|
72
86
|
{ result = "x[:#{val[0]}] #{val[1]} #{val[2]}" }
|
73
87
|
|
74
|
-
date : DATE { result = "
|
88
|
+
date : DATE { result = "DateTime.parse(\"#{val[0]}\")" }
|
75
89
|
|
76
90
|
op_or_equal : OP
|
77
91
|
| EQUAL
|
@@ -131,7 +145,7 @@ def make_tokens str
|
|
131
145
|
when match = scanner.scan(DATE_FIELD)
|
132
146
|
result << [:DATE_FIELD, match]
|
133
147
|
when match = scanner.scan(YEAR)
|
134
|
-
result << [:
|
148
|
+
result << [:YEAR_FIELD, nil]
|
135
149
|
when match = scanner.scan(FIELD)
|
136
150
|
result << [:FIELD, match]
|
137
151
|
when match = scanner.scan(/"[^"]+"/)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
|
-
# This file is automatically generated by Racc 1.4.
|
3
|
+
# This file is automatically generated by Racc 1.4.14
|
4
4
|
# from Racc grammer file "".
|
5
5
|
#
|
6
6
|
|
@@ -9,7 +9,7 @@ require 'racc/parser.rb'
|
|
9
9
|
require 'date'
|
10
10
|
class QueryParser < Racc::Parser
|
11
11
|
|
12
|
-
module_eval(<<'...end query_parser.racc/module_eval...', 'query_parser.racc',
|
12
|
+
module_eval(<<'...end query_parser.racc/module_eval...', 'query_parser.racc', 100)
|
13
13
|
attr_accessor :result
|
14
14
|
|
15
15
|
def parse(str)
|
@@ -58,7 +58,7 @@ def make_tokens str
|
|
58
58
|
when match = scanner.scan(DATE_FIELD)
|
59
59
|
result << [:DATE_FIELD, match]
|
60
60
|
when match = scanner.scan(YEAR)
|
61
|
-
result << [:
|
61
|
+
result << [:YEAR_FIELD, nil]
|
62
62
|
when match = scanner.scan(FIELD)
|
63
63
|
result << [:FIELD, match]
|
64
64
|
when match = scanner.scan(/"[^"]+"/)
|
@@ -89,26 +89,26 @@ end
|
|
89
89
|
|
90
90
|
racc_action_table = [
|
91
91
|
6, 7, 8, 9, 10, 11, 6, 7, 8, 9,
|
92
|
-
10, 11, 5, 13, 14, 4, 29,
|
93
|
-
|
94
|
-
8, 9, 10, 11, 5,
|
95
|
-
5, 22, 21, 4, 22, 21,
|
96
|
-
|
92
|
+
10, 11, 5, 13, 14, 4, 29, 12, 5, 13,
|
93
|
+
14, 4, 6, 7, 8, 9, 10, 11, 6, 7,
|
94
|
+
8, 9, 10, 11, 5, 16, 17, 4, 18, 19,
|
95
|
+
5, 22, 21, 4, 22, 21, 22, 21, 22, 21,
|
96
|
+
39, 40, 26, 30, 31, 32, 33, 35, 35, 37,
|
97
97
|
13 ]
|
98
98
|
|
99
99
|
racc_action_check = [
|
100
|
-
0, 0, 0, 0, 0, 0,
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
100
|
+
0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
|
101
|
+
4, 4, 0, 15, 15, 0, 15, 1, 4, 2,
|
102
|
+
2, 4, 13, 13, 13, 13, 13, 13, 14, 14,
|
103
|
+
14, 14, 14, 14, 13, 6, 6, 13, 7, 7,
|
104
|
+
14, 8, 8, 14, 9, 9, 10, 10, 11, 11,
|
105
|
+
25, 25, 12, 16, 17, 18, 19, 20, 23, 24,
|
106
106
|
28 ]
|
107
107
|
|
108
108
|
racc_action_pointer = [
|
109
|
-
-2,
|
110
|
-
|
111
|
-
|
109
|
+
-2, 17, 4, nil, 4, nil, 27, 30, 32, 35,
|
110
|
+
37, 39, 52, 20, 26, -2, 39, 40, 41, 42,
|
111
|
+
46, nil, nil, 47, 47, 38, nil, nil, 45, nil,
|
112
112
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
113
113
|
nil ]
|
114
114
|
|
@@ -236,100 +236,100 @@ Racc_debug_parser = false
|
|
236
236
|
|
237
237
|
# reduce 1 omitted
|
238
238
|
|
239
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
239
|
+
module_eval(<<'.,.,', 'query_parser.racc', 64)
|
240
240
|
def _reduce_2(val, _values, result)
|
241
241
|
result = "#{val[0]}"
|
242
242
|
result
|
243
243
|
end
|
244
244
|
.,.,
|
245
245
|
|
246
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
246
|
+
module_eval(<<'.,.,', 'query_parser.racc', 65)
|
247
247
|
def _reduce_3(val, _values, result)
|
248
|
-
result = "(#{val[0]} and #{val[2]})"
|
248
|
+
result = "((#{val[0]}) and (#{val[2]}))"
|
249
249
|
result
|
250
250
|
end
|
251
251
|
.,.,
|
252
252
|
|
253
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
253
|
+
module_eval(<<'.,.,', 'query_parser.racc', 66)
|
254
254
|
def _reduce_4(val, _values, result)
|
255
|
-
result = "(#{val[0]} or #{val[2]})"
|
255
|
+
result = "((#{val[0]}) or (#{val[2]}))"
|
256
256
|
result
|
257
257
|
end
|
258
258
|
.,.,
|
259
259
|
|
260
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
260
|
+
module_eval(<<'.,.,', 'query_parser.racc', 67)
|
261
261
|
def _reduce_5(val, _values, result)
|
262
262
|
result = "(#{val[1]})"
|
263
263
|
result
|
264
264
|
end
|
265
265
|
.,.,
|
266
266
|
|
267
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
267
|
+
module_eval(<<'.,.,', 'query_parser.racc', 69)
|
268
268
|
def _reduce_6(val, _values, result)
|
269
269
|
result = "x[:start_location].include?(#{val[0]}) or x[:end_location].include?(#{val[0]})"
|
270
270
|
result
|
271
271
|
end
|
272
272
|
.,.,
|
273
273
|
|
274
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
274
|
+
module_eval(<<'.,.,', 'query_parser.racc', 71)
|
275
275
|
def _reduce_7(val, _values, result)
|
276
276
|
result = "x[:start_location].include?(#{val[2]}) or x[:end_location].include?(#{val[2]})"
|
277
277
|
result
|
278
278
|
end
|
279
279
|
.,.,
|
280
280
|
|
281
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
281
|
+
module_eval(<<'.,.,', 'query_parser.racc', 73)
|
282
282
|
def _reduce_8(val, _values, result)
|
283
283
|
result = "x[:start_location] == #{val[2]} or x[:end_location] == #{val[2]}"
|
284
284
|
result
|
285
285
|
end
|
286
286
|
.,.,
|
287
287
|
|
288
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
288
|
+
module_eval(<<'.,.,', 'query_parser.racc', 75)
|
289
289
|
def _reduce_9(val, _values, result)
|
290
290
|
result = "x[:#{val[0]}].include?(#{val[2]})"
|
291
291
|
result
|
292
292
|
end
|
293
293
|
.,.,
|
294
294
|
|
295
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
295
|
+
module_eval(<<'.,.,', 'query_parser.racc', 77)
|
296
296
|
def _reduce_10(val, _values, result)
|
297
297
|
result = "x[:#{val[0]}] == #{val[2]}"
|
298
298
|
result
|
299
299
|
end
|
300
300
|
.,.,
|
301
301
|
|
302
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
302
|
+
module_eval(<<'.,.,', 'query_parser.racc', 79)
|
303
303
|
def _reduce_11(val, _values, result)
|
304
304
|
result = "x[:start_date] #{val[1]} #{val[2]} or x[:end_date] #{val[1]} #{val[2]}"
|
305
305
|
result
|
306
306
|
end
|
307
307
|
.,.,
|
308
308
|
|
309
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
309
|
+
module_eval(<<'.,.,', 'query_parser.racc', 81)
|
310
310
|
def _reduce_12(val, _values, result)
|
311
311
|
result = "#{val[0]} #{val[1]} #{val[2]}"
|
312
312
|
result
|
313
313
|
end
|
314
314
|
.,.,
|
315
315
|
|
316
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
316
|
+
module_eval(<<'.,.,', 'query_parser.racc', 83)
|
317
317
|
def _reduce_13(val, _values, result)
|
318
318
|
result = "x[:start_date].year #{val[1]} #{val[2]} or x[:end_date].year #{val[1]} #{val[2]}"
|
319
319
|
result
|
320
320
|
end
|
321
321
|
.,.,
|
322
322
|
|
323
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
323
|
+
module_eval(<<'.,.,', 'query_parser.racc', 85)
|
324
324
|
def _reduce_14(val, _values, result)
|
325
325
|
result = "x[:#{val[0]}] #{val[1]} #{val[2]}"
|
326
326
|
result
|
327
327
|
end
|
328
328
|
.,.,
|
329
329
|
|
330
|
-
module_eval(<<'.,.,', 'query_parser.racc',
|
330
|
+
module_eval(<<'.,.,', 'query_parser.racc', 87)
|
331
331
|
def _reduce_15(val, _values, result)
|
332
|
-
result = "
|
332
|
+
result = "DateTime.parse(\"#{val[0]}\")"
|
333
333
|
result
|
334
334
|
end
|
335
335
|
.,.,
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'yaml'
|
3
|
+
require 'columbus3/renderer/sanitizer'
|
3
4
|
|
4
5
|
module Columbus3
|
5
6
|
# make a track into a flot graph (speed and height)
|
@@ -37,9 +38,9 @@ module Columbus3
|
|
37
38
|
target = to_graph_filename filename
|
38
39
|
|
39
40
|
if force or not File.exists? target
|
40
|
-
track = V900Track.new filename
|
41
|
+
track = V900Track.new filename: filename
|
41
42
|
File.open(target, "w") do |file|
|
42
|
-
id = sanitize filename
|
43
|
+
id = Sanitizer::sanitize filename
|
43
44
|
|
44
45
|
file.printf <<EOS
|
45
46
|
min_time_#{id} = #{track.first.time.to_i * 1000};\n
|
@@ -56,11 +57,5 @@ EOS
|
|
56
57
|
filename + "_graph.js"
|
57
58
|
end
|
58
59
|
|
59
|
-
private
|
60
|
-
|
61
|
-
def self.sanitize filename
|
62
|
-
filename.gsub(/[^0-9A-Za-z\-]/, "_")
|
63
|
-
end
|
64
|
-
|
65
60
|
end
|
66
61
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'yaml'
|
3
|
+
require 'columbus3/renderer/sanitizer'
|
3
4
|
|
4
5
|
module Columbus3
|
5
6
|
# renderer controls the transformation of a V900 tracks into a displayable format,
|
@@ -18,56 +19,44 @@ module Columbus3
|
|
18
19
|
@leaflet_css = File.join(bower_dir, 'leaflet/dist/leaflet.css')
|
19
20
|
@files = files
|
20
21
|
|
21
|
-
# generate
|
22
|
-
html = renderer.result(binding)
|
23
|
-
|
24
|
-
# save it to file
|
22
|
+
# generate and save to file
|
25
23
|
File.open(filename, "w") do |file|
|
26
|
-
file <<
|
24
|
+
file << renderer.result(binding)
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
28
|
# make a v900 track into a leaflet layer cached to disk
|
31
29
|
def self.to_leaflet filename, force = false
|
32
30
|
|
33
|
-
target =
|
31
|
+
target = to_geojson_filename filename
|
34
32
|
|
35
33
|
if force or not File.exists? target
|
36
|
-
|
37
|
-
File.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end_#{id} = L.marker(#{track.last.lat_lon}).bindPopup('End');\n
|
44
|
-
poly_#{id} = L.polyline(latlong_#{id}, {color: 'red'});\n
|
45
|
-
|
46
|
-
max_speed_#{id} = L.marker(#{track[track.max_speed_idx].lat_lon}).bindPopup('Max speed #{track.max_speed}')\n;
|
47
|
-
max_height_#{id} = L.marker(#{track[track.max_height_idx].lat_lon}).bindPopup('Max height #{track.max_height}')\n;
|
48
|
-
min_height_#{id} = L.marker(#{track[track.min_height_idx].lat_lon}).bindPopup('Min height #{track.min_height}')\n;
|
34
|
+
# load the template
|
35
|
+
template = File.join(File.dirname(__FILE__), "/../../html/track.js.erb")
|
36
|
+
renderer = ERB.new(File.read(template))
|
37
|
+
|
38
|
+
# context: the track and the track's id
|
39
|
+
@track = V900Track.new filename: filename
|
40
|
+
@filename = filename
|
49
41
|
|
50
|
-
#
|
51
|
-
|
52
|
-
|
42
|
+
# generate and save it to file
|
43
|
+
File.open(target, "w") do |file|
|
44
|
+
file << renderer.result(binding)
|
53
45
|
end
|
54
46
|
end
|
55
47
|
|
56
48
|
end
|
57
49
|
|
58
|
-
def self.
|
50
|
+
def self.to_geojson_filename filename
|
59
51
|
filename + ".js"
|
60
52
|
end
|
61
53
|
|
62
54
|
def self.to_leaflet_layername filename
|
63
|
-
"layer_"
|
55
|
+
to_varname "layer_", Sanitizer::sanitize(filename)
|
64
56
|
end
|
65
|
-
|
66
|
-
private
|
67
57
|
|
68
|
-
def self.
|
69
|
-
filename
|
58
|
+
def self.to_varname prefix, filename
|
59
|
+
prefix + Sanitizer::sanitize(filename)
|
70
60
|
end
|
71
|
-
|
72
61
|
end
|
73
62
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'gpx'
|
2
|
+
|
3
|
+
# convert from GPX to V900
|
4
|
+
module GPX2V900
|
5
|
+
|
6
|
+
# read a GPX file and make it into an array of V900 CSV files (one per GPX track)
|
7
|
+
def self.gpx2v900 file
|
8
|
+
input = GPX::GPXFile.new(gpx_file: file)
|
9
|
+
v900_files = Array.new
|
10
|
+
|
11
|
+
input.tracks.each_with_index do |track, track_index|
|
12
|
+
v900_file = V900Track.new filename: file.gsub(/\.[^.]+$/, "") + (input.tracks.size > 1 ? "-#{track_index}" : "") + ".csv", empty: true
|
13
|
+
track.points.each_with_index do |waypoint, index|
|
14
|
+
|
15
|
+
row = {"INDEX" => index,
|
16
|
+
"DATE" => waypoint.time.strftime("%y%m%d"),
|
17
|
+
"TIME" => waypoint.time.strftime("%H%M%S"),
|
18
|
+
"LONGITUDE E/W" => waypoint.lon.abs.to_s + (waypoint.lon > 0 ? "E" : ""),
|
19
|
+
"LATITUDE N/S" => waypoint.lat.abs.to_s + (waypoint.lat > 0 ? "N" : ""),
|
20
|
+
"HEIGHT" => waypoint.elevation.to_i,
|
21
|
+
"SPEED" => waypoint.speed.to_i,
|
22
|
+
"HEADING" => -1}
|
23
|
+
v900_file.add V900Waypoint.new(row)
|
24
|
+
end
|
25
|
+
v900_files << v900_file
|
26
|
+
end
|
27
|
+
|
28
|
+
v900_files
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -4,12 +4,28 @@ require 'geocoder'
|
|
4
4
|
require 'columbus3/v900track/v900waypoint'
|
5
5
|
|
6
6
|
class V900Track
|
7
|
-
|
8
|
-
|
7
|
+
attr_reader :filename
|
8
|
+
|
9
|
+
def initialize hash
|
10
|
+
@filename = hash[:filename]
|
11
|
+
if hash[:empty]
|
12
|
+
@data = []
|
13
|
+
else
|
14
|
+
read filename
|
15
|
+
end
|
9
16
|
end
|
10
17
|
|
11
18
|
def read filename
|
12
|
-
|
19
|
+
@filename = filename
|
20
|
+
@data = CSV::read(filename, headers: true).each.map { |item| V900Waypoint.new(item) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def save
|
24
|
+
File.open(@filename, 'w') {|f| f.write(to_s) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def add v900_waypoint
|
28
|
+
@data << v900_waypoint
|
13
29
|
end
|
14
30
|
|
15
31
|
def size
|
@@ -30,11 +46,11 @@ class V900Track
|
|
30
46
|
@data
|
31
47
|
end
|
32
48
|
|
33
|
-
#
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
49
|
+
# http://stackoverflow.com/questions/19226821/iterator-array-each-as-return-value-of-method-in-ruby
|
50
|
+
def each(&block)
|
51
|
+
@data.each(&block)
|
52
|
+
end
|
53
|
+
|
38
54
|
def get i
|
39
55
|
self[i]
|
40
56
|
end
|
@@ -131,6 +147,16 @@ class V900Track
|
|
131
147
|
metadata
|
132
148
|
end
|
133
149
|
|
150
|
+
# a slightly more robust implementation calls data["INDEX"] in the same order
|
151
|
+
# in which the header is printed
|
152
|
+
def to_s
|
153
|
+
string = "INDEX,TAG,DATE,TIME,LATITUDE N/S,LONGITUDE E/W,HEIGHT,SPEED,HEADING,VOX\n"
|
154
|
+
@data.each do |data|
|
155
|
+
string << data.to_s + "\n"
|
156
|
+
end
|
157
|
+
string
|
158
|
+
end
|
159
|
+
|
134
160
|
private
|
135
161
|
|
136
162
|
def get comparison, method
|