mdarray-sol 0.1.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +35 -0
- data/LICENSE.txt~ +73 -0
- data/README.md +140 -0
- data/README.md~ +290 -0
- data/Rakefile +80 -0
- data/config.rb +223 -0
- data/doc/Nashorn.html +1406 -0
- data/doc/Sol.html +692 -0
- data/doc/Sol/BarChart.html +181 -0
- data/doc/Sol/BaseChart.html +799 -0
- data/doc/Sol/Bootstrap.html +1134 -0
- data/doc/Sol/Bridge.html +448 -0
- data/doc/Sol/Chart.html +1162 -0
- data/doc/Sol/CoordinateChart.html +673 -0
- data/doc/Sol/DCFX.html +807 -0
- data/doc/Sol/Dashboard.html +1967 -0
- data/doc/Sol/ExecMessages.html +332 -0
- data/doc/Sol/GuiCommunication.html +230 -0
- data/doc/Sol/Interval.html +1213 -0
- data/doc/Sol/JS.html +448 -0
- data/doc/Sol/LineChart.html +344 -0
- data/doc/Sol/LinearScale.html +334 -0
- data/doc/Sol/Margins.html +219 -0
- data/doc/Sol/OrdinalScale.html +263 -0
- data/doc/Sol/ReadBuffer.html +302 -0
- data/doc/Sol/Scale.html +462 -0
- data/doc/Sol/Stack.html +199 -0
- data/doc/Sol/TimeScale.html +396 -0
- data/doc/_index.html +362 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +95 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +95 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +849 -0
- data/doc/top-level-namespace.html +135 -0
- data/examples/bar_chart/bar_chart.rb +268 -0
- data/examples/bar_plot.rb +96 -0
- data/examples/charts/area.rb +25 -0
- data/examples/charts/area_script.rb +69 -0
- data/examples/charts/env.rb +8 -0
- data/examples/charts/monthly-move.csv +6725 -0
- data/examples/charts/morley.csv +101 -0
- data/examples/charts/morley2.csv +81 -0
- data/examples/charts/morley3.csv +121 -0
- data/examples/d3_tutorial.rb +98 -0
- data/examples/sc_plot.rb +57 -0
- data/examples/scatterplot/axes.rb +111 -0
- data/examples/scatterplot/scatterplot.rb +221 -0
- data/examples/us_states/map.rb +90 -0
- data/examples/us_states/us-ag-productivity2004.csv +49 -0
- data/examples/us_states/us-cities.csv +51 -0
- data/examples/util/linear_scale.rb +83 -0
- data/examples/util/ordinal_scale.rb +72 -0
- data/init.rb +39 -0
- data/lib/jx/array_handler.js +70 -0
- data/lib/jx/callback.rb +255 -0
- data/lib/jx/hash_handler.js +87 -0
- data/lib/jx/irbobject.rb +121 -0
- data/lib/jx/js.rb +442 -0
- data/lib/jx/js_array.rb +31 -0
- data/lib/jx/js_hash.rb +76 -0
- data/lib/jx/js_init.rb +62 -0
- data/lib/jx/jsarray.rb +66 -0
- data/lib/jx/jsfunction.rb +73 -0
- data/lib/jx/jsobject.rb +188 -0
- data/lib/jx/jsstyle_sheet.rb +231 -0
- data/lib/jx/jsundefined.rb +46 -0
- data/lib/jx/proxy_array.rb +62 -0
- data/lib/jx/rbobject.rb +80 -0
- data/lib/jx/ruby_proxy.js +176 -0
- data/lib/jx/ruby_rich.js +70 -0
- data/lib/jx/sol.rb +109 -0
- data/lib/mdarray-sol.rb +34 -0
- data/lib/mdarray/jsmdarray.rb +39 -0
- data/lib/ruby_rich/bootstrap.rb +230 -0
- data/lib/ruby_rich/config.html +22 -0
- data/lib/ruby_rich/dashboard.rb +299 -0
- data/lib/ruby_rich/ruby_rich.rb +120 -0
- data/lib/sol/bar_chart.rb +35 -0
- data/lib/sol/base_chart.rb +148 -0
- data/lib/sol/chart.rb +138 -0
- data/lib/sol/coordinate_chart.rb +128 -0
- data/lib/sol/interval.rb +156 -0
- data/lib/sol/line_chart.rb +58 -0
- data/lib/sol/margins.rb +52 -0
- data/lib/sol/scale.rb +212 -0
- data/lib/sol/stack.rb +44 -0
- data/node_modules/bootstrap/Gruntfile.js +533 -0
- data/node_modules/bootstrap/dist/js/bootstrap.js +2363 -0
- data/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
- data/node_modules/bootstrap/dist/js/npm.js +13 -0
- data/node_modules/bootstrap/grunt/bs-commonjs-generator.js +30 -0
- data/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
- data/node_modules/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
- data/node_modules/bootstrap/grunt/bs-raw-files-generator.js +44 -0
- data/node_modules/bootstrap/js/affix.js +162 -0
- data/node_modules/bootstrap/js/alert.js +94 -0
- data/node_modules/bootstrap/js/button.js +120 -0
- data/node_modules/bootstrap/js/carousel.js +237 -0
- data/node_modules/bootstrap/js/collapse.js +211 -0
- data/node_modules/bootstrap/js/dropdown.js +165 -0
- data/node_modules/bootstrap/js/modal.js +337 -0
- data/node_modules/bootstrap/js/popover.js +108 -0
- data/node_modules/bootstrap/js/scrollspy.js +172 -0
- data/node_modules/bootstrap/js/tab.js +155 -0
- data/node_modules/bootstrap/js/tooltip.js +514 -0
- data/node_modules/bootstrap/js/transition.js +59 -0
- data/node_modules/chai/chai.js +6142 -0
- data/node_modules/chai/index.js +1 -0
- data/node_modules/chai/karma.conf.js +28 -0
- data/node_modules/chai/karma.sauce.js +41 -0
- data/node_modules/chai/lib/chai.js +93 -0
- data/node_modules/chai/lib/chai/assertion.js +131 -0
- data/node_modules/chai/lib/chai/config.js +55 -0
- data/node_modules/chai/lib/chai/core/assertions.js +1860 -0
- data/node_modules/chai/lib/chai/interface/assert.js +1645 -0
- data/node_modules/chai/lib/chai/interface/expect.js +34 -0
- data/node_modules/chai/lib/chai/interface/should.js +201 -0
- data/node_modules/chai/lib/chai/utils/addChainableMethod.js +112 -0
- data/node_modules/chai/lib/chai/utils/addMethod.js +44 -0
- data/node_modules/chai/lib/chai/utils/addProperty.js +48 -0
- data/node_modules/chai/lib/chai/utils/expectTypes.js +42 -0
- data/node_modules/chai/lib/chai/utils/flag.js +33 -0
- data/node_modules/chai/lib/chai/utils/getActual.js +20 -0
- data/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +26 -0
- data/node_modules/chai/lib/chai/utils/getMessage.js +51 -0
- data/node_modules/chai/lib/chai/utils/getName.js +22 -0
- data/node_modules/chai/lib/chai/utils/getPathInfo.js +111 -0
- data/node_modules/chai/lib/chai/utils/getPathValue.js +43 -0
- data/node_modules/chai/lib/chai/utils/getProperties.js +36 -0
- data/node_modules/chai/lib/chai/utils/hasProperty.js +64 -0
- data/node_modules/chai/lib/chai/utils/index.js +130 -0
- data/node_modules/chai/lib/chai/utils/inspect.js +335 -0
- data/node_modules/chai/lib/chai/utils/objDisplay.js +50 -0
- data/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +54 -0
- data/node_modules/chai/lib/chai/utils/overwriteMethod.js +52 -0
- data/node_modules/chai/lib/chai/utils/overwriteProperty.js +55 -0
- data/node_modules/chai/lib/chai/utils/test.js +28 -0
- data/node_modules/chai/lib/chai/utils/transferFlags.js +45 -0
- data/node_modules/chai/node_modules/assertion-error/index.js +116 -0
- data/node_modules/chai/node_modules/deep-eql/index.js +1 -0
- data/node_modules/chai/node_modules/deep-eql/karma.conf.js +20 -0
- data/node_modules/chai/node_modules/deep-eql/lib/eql.js +257 -0
- data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/index.js +1 -0
- data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/lib/type.js +142 -0
- data/node_modules/chai/node_modules/type-detect/index.js +1 -0
- data/node_modules/chai/node_modules/type-detect/lib/type.js +134 -0
- data/node_modules/chai/sauce.browsers.js +128 -0
- data/node_modules/dc/Gruntfile.js +437 -0
- data/node_modules/dc/dc.js +10477 -0
- data/node_modules/dc/dc.min.js +23 -0
- data/node_modules/dc/docs/coverage.js +203 -0
- data/node_modules/dc/grunt/format-file-list.js +33 -0
- data/node_modules/dc/index.js +5 -0
- data/node_modules/dc/node_modules/crossfilter2/crossfilter.js +1401 -0
- data/node_modules/dc/node_modules/crossfilter2/crossfilter.min.js +1 -0
- data/node_modules/dc/node_modules/crossfilter2/index.js +1 -0
- data/node_modules/dc/node_modules/crossfilter2/src/array.js +46 -0
- data/node_modules/dc/node_modules/crossfilter2/src/bisect.js +44 -0
- data/node_modules/dc/node_modules/crossfilter2/src/crossfilter.js +872 -0
- data/node_modules/dc/node_modules/crossfilter2/src/filter.js +19 -0
- data/node_modules/dc/node_modules/crossfilter2/src/heap.js +44 -0
- data/node_modules/dc/node_modules/crossfilter2/src/heapselect.js +36 -0
- data/node_modules/dc/node_modules/crossfilter2/src/identity.js +3 -0
- data/node_modules/dc/node_modules/crossfilter2/src/insertionsort.js +18 -0
- data/node_modules/dc/node_modules/crossfilter2/src/null.js +3 -0
- data/node_modules/dc/node_modules/crossfilter2/src/permute.js +8 -0
- data/node_modules/dc/node_modules/crossfilter2/src/quicksort.js +283 -0
- data/node_modules/dc/node_modules/crossfilter2/src/reduce.js +19 -0
- data/node_modules/dc/node_modules/crossfilter2/src/zero.js +3 -0
- data/node_modules/dc/node_modules/d3/d3.js +9554 -0
- data/node_modules/dc/node_modules/d3/d3.min.js +5 -0
- data/node_modules/dc/node_modules/d3/package.js +13 -0
- data/node_modules/dc/node_modules/d3/src/arrays/ascending.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/bisect.js +36 -0
- data/node_modules/dc/node_modules/d3/src/arrays/descending.js +3 -0
- data/node_modules/dc/node_modules/d3/src/arrays/deviation.js +6 -0
- data/node_modules/dc/node_modules/d3/src/arrays/entries.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/extent.js +21 -0
- data/node_modules/dc/node_modules/d3/src/arrays/index.js +25 -0
- data/node_modules/dc/node_modules/d3/src/arrays/keys.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/map.js +84 -0
- data/node_modules/dc/node_modules/d3/src/arrays/max.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/mean.js +15 -0
- data/node_modules/dc/node_modules/d3/src/arrays/median.js +16 -0
- data/node_modules/dc/node_modules/d3/src/arrays/merge.js +21 -0
- data/node_modules/dc/node_modules/d3/src/arrays/min.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/nest.js +97 -0
- data/node_modules/dc/node_modules/d3/src/arrays/pairs.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/permute.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/quantile.js +8 -0
- data/node_modules/dc/node_modules/d3/src/arrays/range.js +26 -0
- data/node_modules/dc/node_modules/d3/src/arrays/set.js +27 -0
- data/node_modules/dc/node_modules/d3/src/arrays/shuffle.js +9 -0
- data/node_modules/dc/node_modules/d3/src/arrays/sum.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/transpose.js +15 -0
- data/node_modules/dc/node_modules/d3/src/arrays/values.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/variance.js +29 -0
- data/node_modules/dc/node_modules/d3/src/arrays/zip.js +5 -0
- data/node_modules/dc/node_modules/d3/src/behavior/behavior.js +1 -0
- data/node_modules/dc/node_modules/d3/src/behavior/drag.js +88 -0
- data/node_modules/dc/node_modules/d3/src/behavior/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/behavior/zoom.js +348 -0
- data/node_modules/dc/node_modules/d3/src/color/color.js +7 -0
- data/node_modules/dc/node_modules/d3/src/color/hcl.js +34 -0
- data/node_modules/dc/node_modules/d3/src/color/hsl.js +56 -0
- data/node_modules/dc/node_modules/d3/src/color/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/color/lab.js +60 -0
- data/node_modules/dc/node_modules/d3/src/color/rgb.js +301 -0
- data/node_modules/dc/node_modules/d3/src/color/xyz.js +7 -0
- data/node_modules/dc/node_modules/d3/src/compat/array.js +15 -0
- data/node_modules/dc/node_modules/d3/src/compat/date.js +3 -0
- data/node_modules/dc/node_modules/d3/src/compat/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/compat/style.js +23 -0
- data/node_modules/dc/node_modules/d3/src/core/array.js +2 -0
- data/node_modules/dc/node_modules/d3/src/core/class.js +8 -0
- data/node_modules/dc/node_modules/d3/src/core/document.js +15 -0
- data/node_modules/dc/node_modules/d3/src/core/functor.js +5 -0
- data/node_modules/dc/node_modules/d3/src/core/identity.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/noop.js +1 -0
- data/node_modules/dc/node_modules/d3/src/core/ns.js +18 -0
- data/node_modules/dc/node_modules/d3/src/core/rebind.js +16 -0
- data/node_modules/dc/node_modules/d3/src/core/source.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/subclass.js +11 -0
- data/node_modules/dc/node_modules/d3/src/core/target.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/true.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/vendor.js +10 -0
- data/node_modules/dc/node_modules/d3/src/core/zero.js +3 -0
- data/node_modules/dc/node_modules/d3/src/d3.js +23 -0
- data/node_modules/dc/node_modules/d3/src/dsv/csv.js +3 -0
- data/node_modules/dc/node_modules/d3/src/dsv/dsv.js +136 -0
- data/node_modules/dc/node_modules/d3/src/dsv/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/dsv/tsv.js +3 -0
- data/node_modules/dc/node_modules/d3/src/end.js +4 -0
- data/node_modules/dc/node_modules/d3/src/event/dispatch.js +69 -0
- data/node_modules/dc/node_modules/d3/src/event/drag.js +36 -0
- data/node_modules/dc/node_modules/d3/src/event/event.js +50 -0
- data/node_modules/dc/node_modules/d3/src/event/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/event/mouse.js +39 -0
- data/node_modules/dc/node_modules/d3/src/event/timer.js +82 -0
- data/node_modules/dc/node_modules/d3/src/event/touch.js +11 -0
- data/node_modules/dc/node_modules/d3/src/event/touches.js +12 -0
- data/node_modules/dc/node_modules/d3/src/format/collapse.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/format.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/formatPrefix.js +24 -0
- data/node_modules/dc/node_modules/d3/src/format/index.js +4 -0
- data/node_modules/dc/node_modules/d3/src/format/precision.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/requote.js +5 -0
- data/node_modules/dc/node_modules/d3/src/format/round.js +5 -0
- data/node_modules/dc/node_modules/d3/src/geo/albers-usa.js +129 -0
- data/node_modules/dc/node_modules/d3/src/geo/albers.js +11 -0
- data/node_modules/dc/node_modules/d3/src/geo/area.js +69 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equal-area.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equidistant.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal.js +25 -0
- data/node_modules/dc/node_modules/d3/src/geo/bounds.js +168 -0
- data/node_modules/dc/node_modules/d3/src/geo/cartesian.js +47 -0
- data/node_modules/dc/node_modules/d3/src/geo/centroid.js +149 -0
- data/node_modules/dc/node_modules/d3/src/geo/circle.js +81 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-antimeridian.js +95 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-circle.js +178 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-extent.js +196 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-polygon.js +104 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip.js +149 -0
- data/node_modules/dc/node_modules/d3/src/geo/compose.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-conformal.js +39 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-equal-area.js +33 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-equidistant.js +36 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic.js +16 -0
- data/node_modules/dc/node_modules/d3/src/geo/distance.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/equirectangular.js +10 -0
- data/node_modules/dc/node_modules/d3/src/geo/geo.js +1 -0
- data/node_modules/dc/node_modules/d3/src/geo/gnomonic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/graticule.js +103 -0
- data/node_modules/dc/node_modules/d3/src/geo/greatArc.js +42 -0
- data/node_modules/dc/node_modules/d3/src/geo/index.js +33 -0
- data/node_modules/dc/node_modules/d3/src/geo/interpolate.js +38 -0
- data/node_modules/dc/node_modules/d3/src/geo/length.js +44 -0
- data/node_modules/dc/node_modules/d3/src/geo/mercator.js +48 -0
- data/node_modules/dc/node_modules/d3/src/geo/orthographic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-area.js +41 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-bounds.js +21 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-buffer.js +59 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-centroid.js +78 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-context.js +49 -0
- data/node_modules/dc/node_modules/d3/src/geo/path.js +87 -0
- data/node_modules/dc/node_modules/d3/src/geo/point-in-polygon.js +71 -0
- data/node_modules/dc/node_modules/d3/src/geo/projection.js +121 -0
- data/node_modules/dc/node_modules/d3/src/geo/resample.js +109 -0
- data/node_modules/dc/node_modules/d3/src/geo/rotation.js +79 -0
- data/node_modules/dc/node_modules/d3/src/geo/spherical.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/stereographic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/stream.js +71 -0
- data/node_modules/dc/node_modules/d3/src/geo/transform.js +36 -0
- data/node_modules/dc/node_modules/d3/src/geo/transverse-mercator.js +31 -0
- data/node_modules/dc/node_modules/d3/src/geom/clip-line.js +66 -0
- data/node_modules/dc/node_modules/d3/src/geom/delaunay.js +6 -0
- data/node_modules/dc/node_modules/d3/src/geom/geom.js +1 -0
- data/node_modules/dc/node_modules/d3/src/geom/hull.js +91 -0
- data/node_modules/dc/node_modules/d3/src/geom/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/geom/point.js +7 -0
- data/node_modules/dc/node_modules/d3/src/geom/polygon.js +105 -0
- data/node_modules/dc/node_modules/d3/src/geom/quadtree.js +243 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi.js +110 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/beach.js +186 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/cell.js +64 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/circle.js +73 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/clip.js +80 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/edge.js +50 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/index.js +59 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/red-black.js +235 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/array.js +19 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/ease.js +111 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/hcl.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/hsl.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/index.js +14 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/interpolate.js +26 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/lab.js +17 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/number.js +6 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/object.js +25 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/rgb.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/round.js +6 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/string.js +54 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/transform.js +59 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/uninterpolate.js +9 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/zoom.js +53 -0
- data/node_modules/dc/node_modules/d3/src/layout/bundle.js +59 -0
- data/node_modules/dc/node_modules/d3/src/layout/chord.js +157 -0
- data/node_modules/dc/node_modules/d3/src/layout/cluster.js +92 -0
- data/node_modules/dc/node_modules/d3/src/layout/force.js +372 -0
- data/node_modules/dc/node_modules/d3/src/layout/hierarchy.js +136 -0
- data/node_modules/dc/node_modules/d3/src/layout/histogram.js +110 -0
- data/node_modules/dc/node_modules/d3/src/layout/index.js +13 -0
- data/node_modules/dc/node_modules/d3/src/layout/layout.js +1 -0
- data/node_modules/dc/node_modules/d3/src/layout/pack.js +211 -0
- data/node_modules/dc/node_modules/d3/src/layout/partition.js +51 -0
- data/node_modules/dc/node_modules/d3/src/layout/pie.js +78 -0
- data/node_modules/dc/node_modules/d3/src/layout/stack.js +247 -0
- data/node_modules/dc/node_modules/d3/src/layout/tree.js +240 -0
- data/node_modules/dc/node_modules/d3/src/layout/treemap.js +229 -0
- data/node_modules/dc/node_modules/d3/src/locale/ca-ES.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/de-CH.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/de-DE.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-CA.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-GB.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-US.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/es-ES.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fi-FI.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fr-CA.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fr-FR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/he-IL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/hu-HU.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/it-IT.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ja-JP.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ko-KR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/locale.js +9 -0
- data/node_modules/dc/node_modules/d3/src/locale/mk-MK.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/nl-NL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/number-format.js +155 -0
- data/node_modules/dc/node_modules/d3/src/locale/pl-PL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/pt-BR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ru-RU.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/sv-SE.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/time-format.js +370 -0
- data/node_modules/dc/node_modules/d3/src/locale/time-scale.js +0 -0
- data/node_modules/dc/node_modules/d3/src/locale/zh-CN.js +16 -0
- data/node_modules/dc/node_modules/d3/src/math/abs.js +1 -0
- data/node_modules/dc/node_modules/d3/src/math/adder.js +34 -0
- data/node_modules/dc/node_modules/d3/src/math/index.js +2 -0
- data/node_modules/dc/node_modules/d3/src/math/number.js +7 -0
- data/node_modules/dc/node_modules/d3/src/math/random.js +34 -0
- data/node_modules/dc/node_modules/d3/src/math/transform.js +64 -0
- data/node_modules/dc/node_modules/d3/src/math/trigonometry.js +44 -0
- data/node_modules/dc/node_modules/d3/src/scale/bilinear.js +7 -0
- data/node_modules/dc/node_modules/d3/src/scale/category.js +58 -0
- data/node_modules/dc/node_modules/d3/src/scale/identity.js +33 -0
- data/node_modules/dc/node_modules/d3/src/scale/index.js +11 -0
- data/node_modules/dc/node_modules/d3/src/scale/linear.js +160 -0
- data/node_modules/dc/node_modules/d3/src/scale/log.js +92 -0
- data/node_modules/dc/node_modules/d3/src/scale/nice.js +30 -0
- data/node_modules/dc/node_modules/d3/src/scale/ordinal.js +102 -0
- data/node_modules/dc/node_modules/d3/src/scale/polylinear.js +24 -0
- data/node_modules/dc/node_modules/d3/src/scale/pow.js +57 -0
- data/node_modules/dc/node_modules/d3/src/scale/quantile.js +55 -0
- data/node_modules/dc/node_modules/d3/src/scale/quantize.js +44 -0
- data/node_modules/dc/node_modules/d3/src/scale/scale.js +10 -0
- data/node_modules/dc/node_modules/d3/src/scale/sqrt.js +6 -0
- data/node_modules/dc/node_modules/d3/src/scale/threshold.js +36 -0
- data/node_modules/dc/node_modules/d3/src/selection/append.js +28 -0
- data/node_modules/dc/node_modules/d3/src/selection/attr.js +62 -0
- data/node_modules/dc/node_modules/d3/src/selection/call.js +8 -0
- data/node_modules/dc/node_modules/d3/src/selection/classed.js +76 -0
- data/node_modules/dc/node_modules/d3/src/selection/data.js +117 -0
- data/node_modules/dc/node_modules/d3/src/selection/datum.js +7 -0
- data/node_modules/dc/node_modules/d3/src/selection/each.js +16 -0
- data/node_modules/dc/node_modules/d3/src/selection/empty.js +5 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter-insert.js +20 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter-select.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter.js +21 -0
- data/node_modules/dc/node_modules/d3/src/selection/filter.js +28 -0
- data/node_modules/dc/node_modules/d3/src/selection/html.js +10 -0
- data/node_modules/dc/node_modules/d3/src/selection/index.js +1 -0
- data/node_modules/dc/node_modules/d3/src/selection/insert.js +9 -0
- data/node_modules/dc/node_modules/d3/src/selection/interrupt.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/node.js +11 -0
- data/node_modules/dc/node_modules/d3/src/selection/on.js +106 -0
- data/node_modules/dc/node_modules/d3/src/selection/order.js +13 -0
- data/node_modules/dc/node_modules/d3/src/selection/property.js +43 -0
- data/node_modules/dc/node_modules/d3/src/selection/remove.js +13 -0
- data/node_modules/dc/node_modules/d3/src/selection/select.js +32 -0
- data/node_modules/dc/node_modules/d3/src/selection/selectAll.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/selection.js +81 -0
- data/node_modules/dc/node_modules/d3/src/selection/size.js +7 -0
- data/node_modules/dc/node_modules/d3/src/selection/sort.js +15 -0
- data/node_modules/dc/node_modules/d3/src/selection/style.js +59 -0
- data/node_modules/dc/node_modules/d3/src/selection/text.js +10 -0
- data/node_modules/dc/node_modules/d3/src/selection/transition.js +21 -0
- data/node_modules/dc/node_modules/d3/src/start.js +2 -0
- data/node_modules/dc/node_modules/d3/src/svg/arc.js +292 -0
- data/node_modules/dc/node_modules/d3/src/svg/area-radial.js +14 -0
- data/node_modules/dc/node_modules/d3/src/svg/area.js +121 -0
- data/node_modules/dc/node_modules/d3/src/svg/axis.js +160 -0
- data/node_modules/dc/node_modules/d3/src/svg/brush.js +429 -0
- data/node_modules/dc/node_modules/d3/src/svg/chord.js +90 -0
- data/node_modules/dc/node_modules/d3/src/svg/diagonal-radial.js +27 -0
- data/node_modules/dc/node_modules/d3/src/svg/diagonal.js +43 -0
- data/node_modules/dc/node_modules/d3/src/svg/index.js +12 -0
- data/node_modules/dc/node_modules/d3/src/svg/line-radial.js +27 -0
- data/node_modules/dc/node_modules/d3/src/svg/line.js +432 -0
- data/node_modules/dc/node_modules/d3/src/svg/svg.js +1 -0
- data/node_modules/dc/node_modules/d3/src/svg/symbol.js +105 -0
- data/node_modules/dc/node_modules/d3/src/time/day.js +21 -0
- data/node_modules/dc/node_modules/d3/src/time/format-iso.js +19 -0
- data/node_modules/dc/node_modules/d3/src/time/format-utc.js +3 -0
- data/node_modules/dc/node_modules/d3/src/time/format.js +4 -0
- data/node_modules/dc/node_modules/d3/src/time/hour.js +14 -0
- data/node_modules/dc/node_modules/d3/src/time/index.js +14 -0
- data/node_modules/dc/node_modules/d3/src/time/interval.js +71 -0
- data/node_modules/dc/node_modules/d3/src/time/minute.js +13 -0
- data/node_modules/dc/node_modules/d3/src/time/month.js +16 -0
- data/node_modules/dc/node_modules/d3/src/time/scale-utc.js +25 -0
- data/node_modules/dc/node_modules/d3/src/time/scale.js +155 -0
- data/node_modules/dc/node_modules/d3/src/time/second.js +13 -0
- data/node_modules/dc/node_modules/d3/src/time/time.js +33 -0
- data/node_modules/dc/node_modules/d3/src/time/week.js +31 -0
- data/node_modules/dc/node_modules/d3/src/time/year.js +16 -0
- data/node_modules/dc/node_modules/d3/src/transition/attr.js +58 -0
- data/node_modules/dc/node_modules/d3/src/transition/delay.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/duration.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/each.js +26 -0
- data/node_modules/dc/node_modules/d3/src/transition/ease.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/filter.js +22 -0
- data/node_modules/dc/node_modules/d3/src/transition/index.js +1 -0
- data/node_modules/dc/node_modules/d3/src/transition/remove.js +9 -0
- data/node_modules/dc/node_modules/d3/src/transition/select.js +28 -0
- data/node_modules/dc/node_modules/d3/src/transition/selectAll.js +31 -0
- data/node_modules/dc/node_modules/d3/src/transition/style.js +53 -0
- data/node_modules/dc/node_modules/d3/src/transition/subtransition.js +25 -0
- data/node_modules/dc/node_modules/d3/src/transition/text.js +11 -0
- data/node_modules/dc/node_modules/d3/src/transition/transition.js +161 -0
- data/node_modules/dc/node_modules/d3/src/transition/tween.js +17 -0
- data/node_modules/dc/node_modules/d3/src/xhr/html.js +12 -0
- data/node_modules/dc/node_modules/d3/src/xhr/index.js +5 -0
- data/node_modules/dc/node_modules/d3/src/xhr/json.js +9 -0
- data/node_modules/dc/node_modules/d3/src/xhr/text.js +5 -0
- data/node_modules/dc/node_modules/d3/src/xhr/xhr.js +126 -0
- data/node_modules/dc/node_modules/d3/src/xhr/xml.js +5 -0
- data/node_modules/dc/regression/inject-serializer.js +6 -0
- data/node_modules/dc/regression/stock-regression-test.js +140 -0
- data/node_modules/dc/spec/bar-chart-spec.js +1230 -0
- data/node_modules/dc/spec/base-mixin-spec.js +611 -0
- data/node_modules/dc/spec/biggish-data-spec.js +136 -0
- data/node_modules/dc/spec/box-plot-spec.js +211 -0
- data/node_modules/dc/spec/bubble-chart-spec.js +450 -0
- data/node_modules/dc/spec/bubble-overlay-spec.js +102 -0
- data/node_modules/dc/spec/color-spec.js +89 -0
- data/node_modules/dc/spec/composite-chart-spec.js +691 -0
- data/node_modules/dc/spec/coordinate-grid-chart-spec.js +962 -0
- data/node_modules/dc/spec/core-spec.js +301 -0
- data/node_modules/dc/spec/data-addition-spec.js +122 -0
- data/node_modules/dc/spec/data-count-spec.js +180 -0
- data/node_modules/dc/spec/data-grid-spec.js +124 -0
- data/node_modules/dc/spec/data-table-spec.js +251 -0
- data/node_modules/dc/spec/event-spec.js +41 -0
- data/node_modules/dc/spec/filter-dates-spec.js +92 -0
- data/node_modules/dc/spec/filters-spec.js +140 -0
- data/node_modules/dc/spec/geo-choropleth-chart-spec.js +225 -0
- data/node_modules/dc/spec/heatmap-spec.js +363 -0
- data/node_modules/dc/spec/helpers/custom_matchers.js +213 -0
- data/node_modules/dc/spec/helpers/fixtures.js +81 -0
- data/node_modules/dc/spec/helpers/geoFixtures.js +113 -0
- data/node_modules/dc/spec/helpers/load-jsreporter.js +37 -0
- data/node_modules/dc/spec/helpers/spec-helper.js +53 -0
- data/node_modules/dc/spec/legend-spec.js +266 -0
- data/node_modules/dc/spec/line-chart-spec.js +709 -0
- data/node_modules/dc/spec/logger-spec.js +80 -0
- data/node_modules/dc/spec/number-display-spec.js +168 -0
- data/node_modules/dc/spec/pie-chart-spec.js +677 -0
- data/node_modules/dc/spec/row-chart-spec.js +362 -0
- data/node_modules/dc/spec/scatter-plot-spec.js +336 -0
- data/node_modules/dc/spec/series-chart-spec.js +133 -0
- data/node_modules/dc/spec/utils-spec.js +110 -0
- data/node_modules/dc/src/banner.js +2 -0
- data/node_modules/dc/src/bar-chart.js +374 -0
- data/node_modules/dc/src/base-mixin.js +1478 -0
- data/node_modules/dc/src/box-plot.js +240 -0
- data/node_modules/dc/src/bubble-chart.js +177 -0
- data/node_modules/dc/src/bubble-mixin.js +244 -0
- data/node_modules/dc/src/bubble-overlay.js +207 -0
- data/node_modules/dc/src/cap-mixin.js +151 -0
- data/node_modules/dc/src/color-mixin.js +172 -0
- data/node_modules/dc/src/composite-chart.js +544 -0
- data/node_modules/dc/src/coordinate-grid-mixin.js +1300 -0
- data/node_modules/dc/src/core.js +425 -0
- data/node_modules/dc/src/d3.box.js +317 -0
- data/node_modules/dc/src/data-count.js +110 -0
- data/node_modules/dc/src/data-grid.js +243 -0
- data/node_modules/dc/src/data-table.js +419 -0
- data/node_modules/dc/src/errors.js +28 -0
- data/node_modules/dc/src/events.js +37 -0
- data/node_modules/dc/src/filters.js +124 -0
- data/node_modules/dc/src/footer.js +35 -0
- data/node_modules/dc/src/geo-choropleth-chart.js +279 -0
- data/node_modules/dc/src/heatmap.js +378 -0
- data/node_modules/dc/src/legend.js +277 -0
- data/node_modules/dc/src/line-chart.js +504 -0
- data/node_modules/dc/src/logger.js +40 -0
- data/node_modules/dc/src/margin-mixin.js +44 -0
- data/node_modules/dc/src/number-display.js +141 -0
- data/node_modules/dc/src/pie-chart.js +571 -0
- data/node_modules/dc/src/row-chart.js +425 -0
- data/node_modules/dc/src/scatter-plot.js +338 -0
- data/node_modules/dc/src/series-chart.js +192 -0
- data/node_modules/dc/src/stack-mixin.js +319 -0
- data/node_modules/dc/src/utils.js +290 -0
- data/node_modules/dc/web/docs/html/scripts/docstrap.lib.js +11 -0
- data/node_modules/dc/web/docs/html/scripts/fulltext-search-ui.js +89 -0
- data/node_modules/dc/web/docs/html/scripts/fulltext-search.js +36 -0
- data/node_modules/dc/web/docs/html/scripts/lunr.min.js +7 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/jquery.min.js +6 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/lang-css.js +21 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/prettify.js +496 -0
- data/node_modules/dc/web/docs/html/scripts/sunlight.js +1157 -0
- data/node_modules/dc/web/docs/html/scripts/toc.js +203 -0
- data/node_modules/dc/web/ep/list.js +106 -0
- data/node_modules/dc/web/examples/lysenko-interval-tree.js +447 -0
- data/node_modules/dc/web/highlighter/shAutoloader.js +17 -0
- data/node_modules/dc/web/highlighter/shBrushJScript.js +52 -0
- data/node_modules/dc/web/highlighter/shBrushXml.js +69 -0
- data/node_modules/dc/web/highlighter/shCore.js +17 -0
- data/node_modules/dc/web/js/colorbrewer.js +1 -0
- data/node_modules/dc/web/js/crossfilter.js +1401 -0
- data/node_modules/dc/web/js/d3.js +9554 -0
- data/node_modules/dc/web/js/dc.js +10477 -0
- data/node_modules/dc/web/js/dc.min.js +23 -0
- data/node_modules/dc/web/js/env-data.js +218 -0
- data/node_modules/dc/web/js/jasmine-jsreporter.js +394 -0
- data/node_modules/dc/web/stock.js +685 -0
- data/node_modules/dc/web/transitions/transition-test.js +45 -0
- data/node_modules/jquery/dist/jquery.js +9814 -0
- data/node_modules/jquery/dist/jquery.min.js +4 -0
- data/node_modules/jquery/external/sizzle/dist/sizzle.js +2143 -0
- data/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/node_modules/jquery/src/ajax.js +845 -0
- data/node_modules/jquery/src/ajax/jsonp.js +100 -0
- data/node_modules/jquery/src/ajax/load.js +83 -0
- data/node_modules/jquery/src/ajax/parseJSON.js +13 -0
- data/node_modules/jquery/src/ajax/parseXML.js +27 -0
- data/node_modules/jquery/src/ajax/script.js +68 -0
- data/node_modules/jquery/src/ajax/var/location.js +3 -0
- data/node_modules/jquery/src/ajax/var/nonce.js +5 -0
- data/node_modules/jquery/src/ajax/var/rquery.js +3 -0
- data/node_modules/jquery/src/ajax/xhr.js +167 -0
- data/node_modules/jquery/src/attributes.js +11 -0
- data/node_modules/jquery/src/attributes/attr.js +142 -0
- data/node_modules/jquery/src/attributes/classes.js +177 -0
- data/node_modules/jquery/src/attributes/prop.js +125 -0
- data/node_modules/jquery/src/attributes/support.js +36 -0
- data/node_modules/jquery/src/attributes/val.js +177 -0
- data/node_modules/jquery/src/callbacks.js +232 -0
- data/node_modules/jquery/src/core.js +494 -0
- data/node_modules/jquery/src/core/access.js +65 -0
- data/node_modules/jquery/src/core/init.js +134 -0
- data/node_modules/jquery/src/core/parseHTML.js +41 -0
- data/node_modules/jquery/src/core/ready.js +103 -0
- data/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
- data/node_modules/jquery/src/css.js +502 -0
- data/node_modules/jquery/src/css/addGetHookIf.js +24 -0
- data/node_modules/jquery/src/css/adjustCSS.js +65 -0
- data/node_modules/jquery/src/css/curCSS.js +60 -0
- data/node_modules/jquery/src/css/defaultDisplay.js +72 -0
- data/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
- data/node_modules/jquery/src/css/showHide.js +48 -0
- data/node_modules/jquery/src/css/support.js +121 -0
- data/node_modules/jquery/src/css/var/cssExpand.js +3 -0
- data/node_modules/jquery/src/css/var/getStyles.js +15 -0
- data/node_modules/jquery/src/css/var/isHidden.js +16 -0
- data/node_modules/jquery/src/css/var/rmargin.js +3 -0
- data/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
- data/node_modules/jquery/src/css/var/swap.js +24 -0
- data/node_modules/jquery/src/data.js +187 -0
- data/node_modules/jquery/src/data/Data.js +200 -0
- data/node_modules/jquery/src/data/var/acceptData.js +18 -0
- data/node_modules/jquery/src/data/var/dataPriv.js +5 -0
- data/node_modules/jquery/src/data/var/dataUser.js +5 -0
- data/node_modules/jquery/src/deferred.js +158 -0
- data/node_modules/jquery/src/deprecated.js +32 -0
- data/node_modules/jquery/src/dimensions.js +54 -0
- data/node_modules/jquery/src/effects.js +629 -0
- data/node_modules/jquery/src/effects/Tween.js +121 -0
- data/node_modules/jquery/src/effects/animatedSelector.js +13 -0
- data/node_modules/jquery/src/event.js +711 -0
- data/node_modules/jquery/src/event/ajax.js +20 -0
- data/node_modules/jquery/src/event/alias.js +27 -0
- data/node_modules/jquery/src/event/focusin.js +53 -0
- data/node_modules/jquery/src/event/support.js +9 -0
- data/node_modules/jquery/src/event/trigger.js +183 -0
- data/node_modules/jquery/src/exports/amd.js +24 -0
- data/node_modules/jquery/src/exports/global.js +26 -0
- data/node_modules/jquery/src/intro.js +44 -0
- data/node_modules/jquery/src/jquery.js +37 -0
- data/node_modules/jquery/src/manipulation.js +481 -0
- data/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
- data/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
- data/node_modules/jquery/src/manipulation/getAll.js +21 -0
- data/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/node_modules/jquery/src/manipulation/support.js +33 -0
- data/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
- data/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
- data/node_modules/jquery/src/offset.js +218 -0
- data/node_modules/jquery/src/outro.js +2 -0
- data/node_modules/jquery/src/queue.js +143 -0
- data/node_modules/jquery/src/queue/delay.js +22 -0
- data/node_modules/jquery/src/selector-native.js +211 -0
- data/node_modules/jquery/src/selector-sizzle.js +14 -0
- data/node_modules/jquery/src/selector.js +1 -0
- data/node_modules/jquery/src/serialize.js +125 -0
- data/node_modules/jquery/src/traversing.js +175 -0
- data/node_modules/jquery/src/traversing/findFilter.js +100 -0
- data/node_modules/jquery/src/traversing/var/dir.js +20 -0
- data/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/node_modules/jquery/src/traversing/var/siblings.js +15 -0
- data/node_modules/jquery/src/var/arr.js +3 -0
- data/node_modules/jquery/src/var/class2type.js +5 -0
- data/node_modules/jquery/src/var/concat.js +5 -0
- data/node_modules/jquery/src/var/document.js +3 -0
- data/node_modules/jquery/src/var/documentElement.js +5 -0
- data/node_modules/jquery/src/var/hasOwn.js +5 -0
- data/node_modules/jquery/src/var/indexOf.js +5 -0
- data/node_modules/jquery/src/var/pnum.js +3 -0
- data/node_modules/jquery/src/var/push.js +5 -0
- data/node_modules/jquery/src/var/rcssNum.js +7 -0
- data/node_modules/jquery/src/var/rnotwhite.js +3 -0
- data/node_modules/jquery/src/var/slice.js +5 -0
- data/node_modules/jquery/src/var/support.js +5 -0
- data/node_modules/jquery/src/var/toString.js +5 -0
- data/node_modules/jquery/src/wrap.js +79 -0
- data/target/mdarray_sol.jar +0 -0
- data/test/jx/test_complete.rb +35 -0
- data/test/jx/test_js.rb +543 -0
- data/test/jx/test_proxy_array.rb +239 -0
- data/test/jx/test_proxy_hash.rb +160 -0
- data/test/jx/test_proxy_lambda.rb +80 -0
- data/test/jx/test_rb_js_compat.rb +135 -0
- data/test/jx/test_style_sheets.rb +90 -0
- data/test/mdarray/test_mdarray.rb +75 -0
- data/util/cacert.pem +4095 -0
- data/util/download.rb +256 -0
- data/vendor/jxbrowser-6.8.jar +0 -0
- data/vendor/licence.jar +0 -0
- data/version.rb +2 -0
- metadata +817 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/******************************************************************************************
|
|
2
|
+
* @author Rodrigo Botafogo
|
|
3
|
+
*
|
|
4
|
+
* Copyright © 2016 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
|
5
|
+
* and distribute this software and its documentation, without fee and without a signed
|
|
6
|
+
* licensing agreement, is hereby granted, provided that the above copyright notice, this
|
|
7
|
+
* paragraph and the following two paragraphs appear in all copies, modifications, and
|
|
8
|
+
* distributions.
|
|
9
|
+
*
|
|
10
|
+
* IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
|
11
|
+
* INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
|
12
|
+
* THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
|
13
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
14
|
+
*
|
|
15
|
+
* RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
16
|
+
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
|
17
|
+
* SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
|
18
|
+
* RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
|
19
|
+
* OR MODIFICATIONS.
|
|
20
|
+
*****************************************************************************************/
|
|
21
|
+
|
|
22
|
+
/****************************************************************************************
|
|
23
|
+
* Methods to proxy a Ruby Hash
|
|
24
|
+
****************************************************************************************/
|
|
25
|
+
|
|
26
|
+
function HashHandler(ruby_obj) {
|
|
27
|
+
RubyHandler.call(this, ruby_obj);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
HashHandler.prototype = Object.create(RubyHandler.prototype, {
|
|
31
|
+
constructor: {
|
|
32
|
+
configurable: true,
|
|
33
|
+
enumerable: true,
|
|
34
|
+
value: HashHandler,
|
|
35
|
+
writable: true
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
HashHandler.prototype.get = function(target, property) {
|
|
40
|
+
|
|
41
|
+
// check to see if 'property' is a hash value
|
|
42
|
+
if ((res = this.ruby_obj.get_key(property)) != null)
|
|
43
|
+
return res;
|
|
44
|
+
|
|
45
|
+
switch(property) {
|
|
46
|
+
case "isProxy":
|
|
47
|
+
return true
|
|
48
|
+
case "ruby_obj":
|
|
49
|
+
return this.ruby_obj;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (this.ruby_obj.run("respond_to?", property))
|
|
53
|
+
return RubyHandler.prototype.get.call(this, target, property);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
HashHandler.prototype.set = function(target, property, value, receiver) {
|
|
57
|
+
if (this.ruby_obj.run("respond_to?", property)) {
|
|
58
|
+
return RubyHandler.prototype.set.call(this, target, property, value, receiver);
|
|
59
|
+
} else {
|
|
60
|
+
return this.ruby_obj.run("[]=", property, value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
HashHandler.prototype.getOwnPropertyDescriptor = function(target, property) {
|
|
65
|
+
var res = this.ruby_obj.run("[]", property);
|
|
66
|
+
return { configurable: true, enumerable:true, value: res };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
HashHandler.prototype.ownKeys = function(target) {
|
|
70
|
+
return this.ruby_obj.run("keys");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
HashHandler.prototype.has = function(target, property) {
|
|
75
|
+
return this.ruby_obj.run("respond_to?", property)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
HashHandler.prototype.isExtensible = function(target) {
|
|
79
|
+
console.log("Method isExtensible in file hash_handler.js");
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
HashHandler.prototype.preventExtensions = function(target) {
|
|
84
|
+
console.log("Method preventExtensions in file hash_handler.js");
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
*/
|
data/lib/jx/irbobject.rb
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
##########################################################################################
|
|
4
|
+
# @author Rodrigo Botafogo
|
|
5
|
+
#
|
|
6
|
+
# Copyright © 2016 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
|
7
|
+
# and distribute this software and its documentation, without fee and without a signed
|
|
8
|
+
# licensing agreement, is hereby granted, provided that the above copyright notice, this
|
|
9
|
+
# paragraph and the following two paragraphs appear in all copies, modifications, and
|
|
10
|
+
# distributions.
|
|
11
|
+
#
|
|
12
|
+
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
|
13
|
+
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
|
14
|
+
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
|
15
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
|
16
|
+
#
|
|
17
|
+
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
18
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
|
19
|
+
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
|
20
|
+
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
|
21
|
+
# OR MODIFICATIONS.
|
|
22
|
+
##########################################################################################
|
|
23
|
+
|
|
24
|
+
class Sol
|
|
25
|
+
|
|
26
|
+
##########################################################################################
|
|
27
|
+
# An IRBObject is an "Internal" Ruby Object, i.e., is is created while executing a
|
|
28
|
+
# callback method that returns a Ruby Object and it stays inside a javascript script.
|
|
29
|
+
# This happens when a ruby block is passed as argument to a javascript function that
|
|
30
|
+
# expects a function as parameter. The block is converted to a javascript function
|
|
31
|
+
# in ruby_rich.rb by the call to:
|
|
32
|
+
# // Makes a callback function from a given Ruby block
|
|
33
|
+
# this.make_callback = function(blk) {
|
|
34
|
+
# return function (...args) { blk.set_this(this); return blk.run("call", ...args); }
|
|
35
|
+
# }
|
|
36
|
+
# When this function is called, blk.run is called, which call Callback.run. In
|
|
37
|
+
# Callback.run the arguments are converted to ruby arguments. If the block returns
|
|
38
|
+
# a ruby Object, this Object is packed in a IRBObject.
|
|
39
|
+
##########################################################################################
|
|
40
|
+
|
|
41
|
+
class IRBObject
|
|
42
|
+
include Java::ComRbMdarray_sol.RubyCallbackInterface
|
|
43
|
+
|
|
44
|
+
attr_reader :jsvalue
|
|
45
|
+
attr_reader :ruby_obj
|
|
46
|
+
|
|
47
|
+
#------------------------------------------------------------------------------------
|
|
48
|
+
# Undefine methods so that they are caught by method_missing and send to the
|
|
49
|
+
# actual object
|
|
50
|
+
#------------------------------------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
undef :instance_variable_defined?
|
|
53
|
+
undef :instance_variable_get
|
|
54
|
+
undef :instance_variable_set
|
|
55
|
+
undef :instance_variables
|
|
56
|
+
undef :method
|
|
57
|
+
undef :methods
|
|
58
|
+
undef :private_methods
|
|
59
|
+
undef :protected_methods
|
|
60
|
+
undef :public_method
|
|
61
|
+
undef :public_methods
|
|
62
|
+
undef :public_send
|
|
63
|
+
undef :remove_instance_variable
|
|
64
|
+
undef :respond_to?
|
|
65
|
+
undef :respond_to_missing?
|
|
66
|
+
undef :singleton_methods
|
|
67
|
+
undef :taint
|
|
68
|
+
undef :tainted?
|
|
69
|
+
undef :tap
|
|
70
|
+
undef :to_enum
|
|
71
|
+
undef :to_s
|
|
72
|
+
undef :trust
|
|
73
|
+
undef :untaint
|
|
74
|
+
undef :untrust
|
|
75
|
+
undef :untrusted?
|
|
76
|
+
# undef :singleton_method
|
|
77
|
+
|
|
78
|
+
#------------------------------------------------------------------------------------
|
|
79
|
+
#
|
|
80
|
+
#------------------------------------------------------------------------------------
|
|
81
|
+
|
|
82
|
+
def initialize(jsvalue)
|
|
83
|
+
@jsvalue = jsvalue
|
|
84
|
+
@run_func = @jsvalue.getProperty("run")
|
|
85
|
+
@ruby_obj = @jsvalue.asJavaObject().ruby_obj
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
#----------------------------------------------------------------------------------------
|
|
89
|
+
#
|
|
90
|
+
#----------------------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
def is_instance_of(class_name)
|
|
93
|
+
B.invoke(@jsvalue, @run_func, "is_instance_of", class_name)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
#------------------------------------------------------------------------------------
|
|
97
|
+
# An IRBObject is called with ruby arguments, so it does not need to call any
|
|
98
|
+
# process_arguments method as it is proxies a Ruby object
|
|
99
|
+
# TODO: Might actually need to process_args on the argument since we use invoke
|
|
100
|
+
# BUG!!!
|
|
101
|
+
#------------------------------------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
def method_missing(symbol, *args, &blk)
|
|
104
|
+
# B.invoke(@jsvalue, @run_func, symbol, *args)
|
|
105
|
+
@ruby_obj.send(symbol, *args, &blk)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
#------------------------------------------------------------------------------------
|
|
109
|
+
#
|
|
110
|
+
#------------------------------------------------------------------------------------
|
|
111
|
+
|
|
112
|
+
def native(*args)
|
|
113
|
+
p "IRBObject native method. NOT WORKING YET!!"
|
|
114
|
+
method = args.shift
|
|
115
|
+
# other is a ruby object
|
|
116
|
+
other = args.shift
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
data/lib/jx/js.rb
ADDED
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
##########################################################################################
|
|
4
|
+
# @author Rodrigo Botafogo
|
|
5
|
+
#
|
|
6
|
+
# Copyright © 2016 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
|
7
|
+
# and distribute this software and its documentation, without fee and without a signed
|
|
8
|
+
# licensing agreement, is hereby granted, provided that the above copyright notice, this
|
|
9
|
+
# paragraph and the following two paragraphs appear in all copies, modifications, and
|
|
10
|
+
# distributions.
|
|
11
|
+
#
|
|
12
|
+
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
|
13
|
+
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
|
14
|
+
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
|
15
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
|
16
|
+
#
|
|
17
|
+
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
18
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
|
19
|
+
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
|
20
|
+
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
|
21
|
+
# OR MODIFICATIONS.
|
|
22
|
+
##########################################################################################
|
|
23
|
+
|
|
24
|
+
require 'benchmark'
|
|
25
|
+
|
|
26
|
+
require 'json'
|
|
27
|
+
require_relative 'jsobject'
|
|
28
|
+
require_relative 'rbobject'
|
|
29
|
+
require_relative 'irbobject'
|
|
30
|
+
|
|
31
|
+
class Sol
|
|
32
|
+
|
|
33
|
+
#==========================================================================================
|
|
34
|
+
# Class to communicate with the embedded browser (jxBrowser), by sending javascript
|
|
35
|
+
# messages
|
|
36
|
+
#==========================================================================================
|
|
37
|
+
|
|
38
|
+
class Js
|
|
39
|
+
java_import com.teamdev.jxbrowser.chromium.events.ConsoleListener
|
|
40
|
+
java_import com.teamdev.jxbrowser.chromium.JSONString
|
|
41
|
+
|
|
42
|
+
#========================================================================================
|
|
43
|
+
# Class RBListener listen for the Browser console.log messages
|
|
44
|
+
#========================================================================================
|
|
45
|
+
|
|
46
|
+
class RBListener
|
|
47
|
+
include ConsoleListener
|
|
48
|
+
# include DisposeListener
|
|
49
|
+
|
|
50
|
+
def onMessage(event)
|
|
51
|
+
puts "JS> #{event.getMessage()}"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
#========================================================================================
|
|
57
|
+
# @attr_reader [Browser] jxBrowser instance
|
|
58
|
+
# @attr_reader identity [jsFunction] A javascript function that implements the identity
|
|
59
|
+
# function
|
|
60
|
+
# @attr_reader instanceOf [jsFunction] A javascript function that returns if a JSObject
|
|
61
|
+
# is an instance of a class
|
|
62
|
+
#========================================================================================
|
|
63
|
+
|
|
64
|
+
attr_reader :browser
|
|
65
|
+
attr_accessor :identity
|
|
66
|
+
attr_accessor :instanceOf
|
|
67
|
+
|
|
68
|
+
#------------------------------------------------------------------------------------
|
|
69
|
+
# @param browser [Browser] the jxBrowser instance
|
|
70
|
+
#------------------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
def initialize(browser)
|
|
73
|
+
|
|
74
|
+
@browser = browser
|
|
75
|
+
|
|
76
|
+
# listen for console events
|
|
77
|
+
@browser.addConsoleListener(RBListener.new)
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
#------------------------------------------------------------------------------------
|
|
82
|
+
#
|
|
83
|
+
#------------------------------------------------------------------------------------
|
|
84
|
+
|
|
85
|
+
def typeof(object)
|
|
86
|
+
object.typeof
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#------------------------------------------------------------------------------------
|
|
90
|
+
# @return the browser 'window' object
|
|
91
|
+
#------------------------------------------------------------------------------------
|
|
92
|
+
|
|
93
|
+
def window
|
|
94
|
+
@browser.executeJavaScriptAndReturnValue("window")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
#------------------------------------------------------------------------------------
|
|
98
|
+
# @return the browser 'document' object
|
|
99
|
+
#------------------------------------------------------------------------------------
|
|
100
|
+
|
|
101
|
+
def document
|
|
102
|
+
@browser.executeJavaScriptAndReturnValue("document")
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
#------------------------------------------------------------------------------------
|
|
106
|
+
# @return the browser JSContext
|
|
107
|
+
#------------------------------------------------------------------------------------
|
|
108
|
+
|
|
109
|
+
def jscontext
|
|
110
|
+
@browser.getJSContext()
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
#------------------------------------------------------------------------------------
|
|
114
|
+
# Calls Chrome printing popup interface
|
|
115
|
+
#------------------------------------------------------------------------------------
|
|
116
|
+
|
|
117
|
+
def print_page
|
|
118
|
+
@browser.print
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
#------------------------------------------------------------------------------------
|
|
122
|
+
# Applies javascript method 'instanceOf' defined in ruby_rich.rb to the given object
|
|
123
|
+
# and type. 'instanceOf' is a JSFunction.
|
|
124
|
+
# @param object [JSObject]
|
|
125
|
+
# @param type [String] the type to check
|
|
126
|
+
#------------------------------------------------------------------------------------
|
|
127
|
+
|
|
128
|
+
def instanceof(object, type)
|
|
129
|
+
@instanceOf[object, type]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
#------------------------------------------------------------------------------------
|
|
133
|
+
# Applies the javascript 'identity' function to the given value.
|
|
134
|
+
# @return [JSObject || primitive] a proxy object or a primitive that does not need to
|
|
135
|
+
# be proxied
|
|
136
|
+
#------------------------------------------------------------------------------------
|
|
137
|
+
|
|
138
|
+
def push(value)
|
|
139
|
+
@identity[value]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
#------------------------------------------------------------------------------------
|
|
143
|
+
# return [JSObject || primitive] the given property from the 'window' scope
|
|
144
|
+
#------------------------------------------------------------------------------------
|
|
145
|
+
|
|
146
|
+
def pull(name)
|
|
147
|
+
eval("#{name};")
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
#------------------------------------------------------------------------------------
|
|
151
|
+
# Proxies a ruby object into a javascript object. The javascript object captures
|
|
152
|
+
# all method calls and forwads them to a packed ruby object, by calling method 'run'
|
|
153
|
+
# on this packed object
|
|
154
|
+
# @param obj [Object] The ruby object to be proxied
|
|
155
|
+
# @return [JSObject || RBObject]
|
|
156
|
+
#------------------------------------------------------------------------------------
|
|
157
|
+
|
|
158
|
+
def proxy(obj)
|
|
159
|
+
|
|
160
|
+
case obj
|
|
161
|
+
when TrueClass, FalseClass, Numeric, String, NilClass
|
|
162
|
+
obj
|
|
163
|
+
when Java::ComTeamdevJxbrowserChromium::JSValue
|
|
164
|
+
JSObject.build(obj)
|
|
165
|
+
when Proc
|
|
166
|
+
# TODO: Needs to test Proc proxying. I don´t think the code ever gets here
|
|
167
|
+
blk2func(obj)
|
|
168
|
+
when Object
|
|
169
|
+
# B.obj = Callback.new(obj)
|
|
170
|
+
B.obj = Callback.build(obj)
|
|
171
|
+
RBObject.new(jeval("new RubyProxy(obj)"), obj, true)
|
|
172
|
+
else
|
|
173
|
+
raise "No method to proxy the given object: #{obj}"
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
#----------------------------------------------------------------------------------------
|
|
179
|
+
# Pack a ruby object for use inside a javascript script. A packed ruby object is
|
|
180
|
+
# identical to a proxy object exect by the return value that is a java.JSValue and not
|
|
181
|
+
# a Sol::xxx object.
|
|
182
|
+
# @param obj [Object] The ruby object to be packed
|
|
183
|
+
# @return [java.JSObject] A java.JSObject that that implements the 'run' interface
|
|
184
|
+
#----------------------------------------------------------------------------------------
|
|
185
|
+
|
|
186
|
+
def pack(obj)
|
|
187
|
+
|
|
188
|
+
case obj
|
|
189
|
+
when TrueClass, FalseClass, Numeric, String, NilClass,
|
|
190
|
+
Java::ComTeamdevJxbrowserChromium::JSValue
|
|
191
|
+
obj
|
|
192
|
+
when Proc
|
|
193
|
+
blk2func(obj).jsvalue
|
|
194
|
+
when Object
|
|
195
|
+
B.obj = Callback.build(obj)
|
|
196
|
+
jeval("new RubyProxy(obj)")
|
|
197
|
+
else
|
|
198
|
+
raise "No method to pack the given object: #{obj}"
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
#------------------------------------------------------------------------------------
|
|
204
|
+
# Evaluates the javascript script synchronously and then proxies the result in a
|
|
205
|
+
# Ruby JSObject or RBObject
|
|
206
|
+
# @param scrpt [String] a javascript script to be executed synchronously
|
|
207
|
+
# @return [JSObject || RBObject] a JSObject or one of its subclasses
|
|
208
|
+
#------------------------------------------------------------------------------------
|
|
209
|
+
|
|
210
|
+
def eval(scrpt)
|
|
211
|
+
proxy(@browser.executeJavaScriptAndReturnValue(scrpt))
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
#------------------------------------------------------------------------------------
|
|
215
|
+
# Evaluates the javascript script synchronously, but does not pack in JSObject. This
|
|
216
|
+
# method should not be normally called by normal users. This should be used only in
|
|
217
|
+
# some special cases, usually developers of this application.
|
|
218
|
+
# @param scrpt [String] a javascript script to be executed synchronously
|
|
219
|
+
# @return [java.JSObject] a java.JSObject
|
|
220
|
+
#------------------------------------------------------------------------------------
|
|
221
|
+
|
|
222
|
+
def jeval(scrpt)
|
|
223
|
+
@browser.executeJavaScriptAndReturnValue(scrpt)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
#------------------------------------------------------------------------------------
|
|
227
|
+
#
|
|
228
|
+
#------------------------------------------------------------------------------------
|
|
229
|
+
|
|
230
|
+
def eval_obj(jsobject, prop)
|
|
231
|
+
B.obj = push(jsobject)
|
|
232
|
+
jeval(<<-EOT)
|
|
233
|
+
obj.#{prop}
|
|
234
|
+
EOT
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
#------------------------------------------------------------------------------------
|
|
238
|
+
# Invokes the function
|
|
239
|
+
# @param scope [Java::JSObject] the object that holds the function, i.e., it´s scope
|
|
240
|
+
# @param function [java JSFunction] the function to be invoked, already in its java
|
|
241
|
+
# form
|
|
242
|
+
# @param *args [Args] a list of java arguments to pass to the function
|
|
243
|
+
# @return jsobject [JSObject] a JSObject or one of its subclasses depending on the
|
|
244
|
+
# result of the function invokation
|
|
245
|
+
# TODO: needs implementation/tests to call functions in the scope of a given object.
|
|
246
|
+
# method_missing in jsobject does create fix the scope, but needs to check if this
|
|
247
|
+
# also needs to be done in this (invoke) method.
|
|
248
|
+
#------------------------------------------------------------------------------------
|
|
249
|
+
|
|
250
|
+
def invoke(scope, function, *args)
|
|
251
|
+
args = nil if (args.size == 1 && args[0].nil?)
|
|
252
|
+
proxy(function.invoke(scope, *(args)))
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
#------------------------------------------------------------------------------------
|
|
256
|
+
# Duplicates the given Ruby data into a javascript object in the Browser
|
|
257
|
+
# @param name [Symbol, String] the name of the javascript variable into which to dup
|
|
258
|
+
# @param data [Object] a Ruby object
|
|
259
|
+
#------------------------------------------------------------------------------------
|
|
260
|
+
|
|
261
|
+
def dup(data)
|
|
262
|
+
push(JSONString.new(data.to_json))
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
#------------------------------------------------------------------------------------
|
|
266
|
+
# Creates a new function in javascript and returns it as a jsfunction
|
|
267
|
+
# @param symbol [Symbol] the name of the function in javascript namespace. If not
|
|
268
|
+
# given, then a temporary name is used just to be able to create the function.
|
|
269
|
+
# @return [JSFunction] a jsfunction.
|
|
270
|
+
#------------------------------------------------------------------------------------
|
|
271
|
+
|
|
272
|
+
def function(definition)
|
|
273
|
+
eval("var __tmpvar__ = function #{definition}")
|
|
274
|
+
eval("__tmpvar__")
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
#------------------------------------------------------------------------------------
|
|
278
|
+
# TODO: Something is wrong here!!!! Need to set B.block, but if we pass the B.block
|
|
279
|
+
# variable to make_callback, the application crashes.
|
|
280
|
+
#------------------------------------------------------------------------------------
|
|
281
|
+
|
|
282
|
+
def blk2func(blk)
|
|
283
|
+
B.block = Callback.build(blk)
|
|
284
|
+
B.rr.make_callback(nil)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
#------------------------------------------------------------------------------------
|
|
288
|
+
#
|
|
289
|
+
#------------------------------------------------------------------------------------
|
|
290
|
+
|
|
291
|
+
def method_missing(symbol, *args, &blk)
|
|
292
|
+
|
|
293
|
+
# if block is given, then create a javascript function that will call the block
|
|
294
|
+
# passing the args
|
|
295
|
+
args.push(blk2func(blk)) if (blk)
|
|
296
|
+
|
|
297
|
+
name = symbol.id2name
|
|
298
|
+
name.gsub!(/__/,"$")
|
|
299
|
+
|
|
300
|
+
if name =~ /(.*)=$/
|
|
301
|
+
ret = assign_window($1, process_args(args)[0])
|
|
302
|
+
else
|
|
303
|
+
if (((ret = pull(name)).is_a? Sol::JSObject) && ret.function?)
|
|
304
|
+
if (args.size > 0)
|
|
305
|
+
if (args.size == 1 && args[0].nil?)
|
|
306
|
+
ret = ret.send
|
|
307
|
+
else
|
|
308
|
+
ret = ret.send(*args)
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
ret
|
|
314
|
+
end
|
|
315
|
+
#=begin
|
|
316
|
+
#------------------------------------------------------------------------------------
|
|
317
|
+
# Converts Ruby arguments into a javascript objects to run in a javascript
|
|
318
|
+
# script. A Sol::JSObject and Sol::RBObject are similar in that they pack a 'native'
|
|
319
|
+
# object (either java.JSObject or ruby Object). These objects show up in a ruby
|
|
320
|
+
# script and when injected in javascript their jsvalue is made available. An
|
|
321
|
+
# IRBObject (Internal Ruby Object) appears when a Ruby Callback is executed and
|
|
322
|
+
# exists for the case that this object transitions between javascript and ends up
|
|
323
|
+
# in a Ruby script.
|
|
324
|
+
# @param args [Array] Ruby array with ruby arguments
|
|
325
|
+
# @return args [Array] Ruby array with ruby arguments converted to javascript
|
|
326
|
+
# arguments
|
|
327
|
+
# TODO: Can an IRBObject end up in a javascript script? If so, will it work fine?
|
|
328
|
+
# TODO: Make tests that allow Proc/block to be injected into javascript
|
|
329
|
+
#------------------------------------------------------------------------------------
|
|
330
|
+
|
|
331
|
+
def process_args(args)
|
|
332
|
+
|
|
333
|
+
args.map do |arg|
|
|
334
|
+
case arg
|
|
335
|
+
when Sol::IRBObject # Sol::Callback
|
|
336
|
+
arg
|
|
337
|
+
when Sol::JSObject, Sol::RBObject
|
|
338
|
+
arg.jsvalue
|
|
339
|
+
when Hash, Array
|
|
340
|
+
pack(arg)
|
|
341
|
+
when Symbol
|
|
342
|
+
raise "Ruby Symbols are not supported in jxBrowser. Converting ':#{arg}' not supported."
|
|
343
|
+
when Proc
|
|
344
|
+
p "i´m a proc... not implemented yet"
|
|
345
|
+
arg
|
|
346
|
+
else
|
|
347
|
+
arg
|
|
348
|
+
end
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
end
|
|
352
|
+
#=end
|
|
353
|
+
#------------------------------------------------------------------------------------
|
|
354
|
+
# Converts Ruby arguments into a javascript objects to run in a javascript
|
|
355
|
+
# script. A Sol::JSObject and Sol::RBObject are similar in that they pack a 'native'
|
|
356
|
+
# object (either java.JSObject or ruby Object). These objects show up in a ruby
|
|
357
|
+
# script and when injected in javascript their jsvalue is made available. An
|
|
358
|
+
# IRBObject (Internal Ruby Object) appears when a Ruby Callback is executed and
|
|
359
|
+
# exists for the case that this object transitions between javascript and ends up
|
|
360
|
+
# in a Ruby script.
|
|
361
|
+
# @param args [Array] Ruby array with ruby arguments
|
|
362
|
+
# @return args [Array] Ruby array with ruby arguments converted to javascript
|
|
363
|
+
# arguments
|
|
364
|
+
# TODO: Can an IRBObject end up in a javascript script? If so, will it work fine?
|
|
365
|
+
# TODO: Make tests that allow Proc/block to be injected into javascript
|
|
366
|
+
#------------------------------------------------------------------------------------
|
|
367
|
+
|
|
368
|
+
def process_args2(args)
|
|
369
|
+
|
|
370
|
+
args.map do |arg|
|
|
371
|
+
case arg
|
|
372
|
+
when Sol::IRBObject
|
|
373
|
+
arg.to_java
|
|
374
|
+
when Sol::JSObject, Sol::RBObject
|
|
375
|
+
arg.jsvalue.to_java
|
|
376
|
+
when Hash, Array
|
|
377
|
+
pack(arg).to_java
|
|
378
|
+
when Symbol
|
|
379
|
+
raise "Ruby Symbols are not supported in jxBrowser. Converting ':#{arg}' not supported."
|
|
380
|
+
when Proc
|
|
381
|
+
p "i´m a proc... not implemented yet"
|
|
382
|
+
arg.to_java
|
|
383
|
+
else
|
|
384
|
+
arg.to_java
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
#------------------------------------------------------------------------------------
|
|
391
|
+
# Loads a javascript file relative to the callers directory
|
|
392
|
+
#------------------------------------------------------------------------------------
|
|
393
|
+
|
|
394
|
+
def load(filename)
|
|
395
|
+
|
|
396
|
+
file = caller.first.split(/:\d/,2).first
|
|
397
|
+
dir = File.dirname(File.expand_path(file))
|
|
398
|
+
|
|
399
|
+
scrpt = ""
|
|
400
|
+
begin
|
|
401
|
+
file = File.new("#{dir}/#{filename}", "r")
|
|
402
|
+
while (line = file.gets)
|
|
403
|
+
scrpt << line
|
|
404
|
+
end
|
|
405
|
+
file.close
|
|
406
|
+
rescue => err
|
|
407
|
+
puts "Exception: #{err}"
|
|
408
|
+
err
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
@browser.executeJavaScriptAndReturnValue(scrpt)
|
|
412
|
+
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
#------------------------------------------------------------------------------------
|
|
416
|
+
# Returns a list of StyleSheet's
|
|
417
|
+
#------------------------------------------------------------------------------------
|
|
418
|
+
|
|
419
|
+
def style_sheets
|
|
420
|
+
eval(<<-EOT)
|
|
421
|
+
var __style_sheets__ = document.styleSheets;
|
|
422
|
+
EOT
|
|
423
|
+
CSSStyleSheets.new
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
#------------------------------------------------------------------------------------
|
|
427
|
+
# Private methods
|
|
428
|
+
#------------------------------------------------------------------------------------
|
|
429
|
+
|
|
430
|
+
private
|
|
431
|
+
|
|
432
|
+
#------------------------------------------------------------------------------------
|
|
433
|
+
# Assign the data to the given named window property
|
|
434
|
+
#------------------------------------------------------------------------------------
|
|
435
|
+
|
|
436
|
+
def assign_window(property_name, data)
|
|
437
|
+
window.setProperty(property_name, data)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
end
|