Estimate points on a SVG path
Estimate points on a bezier curve or a set of connexted bezier curves
Convert a series of points to a monotone cubic spline
Draw perfect pressure-sensitive freehand strokes.
Create api documentation for TypeScript projects.
An extension of svg.js which allows to select elements with mouse
Compute the Voronoi diagram of a set of two-dimensional points.
TypeScript definitions for d3-polygon
A very fast geospatial point clustering library.
Operations for two-dimensional polygons.
The ultimate javascript content-type utility.
Fill a polygon with lines
Figure out what a cmd-shim is pointing at. This acts as the equivalent of fs.readlink.
A very fast static 2D index for points based on kd-tree.
Takes a FeatureCollection of points and calculates the median center.
Core CLI commands for React Native
Fast robust predicates for computational geometry
Fast 2D concave hull algorithm in JavaScript (generates an outline of a point set)
Creates an interpolated grid of points using the Inverse Distance Weighting method.
Merges a specified property from a FeatureCollection of points into a FeatureCollection of polygons.
Utilities for determining if characters belong to character classes defined by the XML specs.
Generate hexmaps from data that uses the Open Data Institute's HexJSON format.
Fast nd point clustering.
Compute the Voronoi diagram of a set of two-dimensional points.
A simple Dijkstra Algorithm to find the shortest path between any two points in the undirected graph.
Sort and scale the points of a path encoded with the Google Polyline Algorithm by distance to one another.
A handy dandy autoload / require / load helper for your rubies. Similar to using[1], but with a few differences of opinion, and a bit shorter. Basically, expand path is fine, up until a point. Sometimes there's no point (i.e. when the load path already contains most of the path you're trying to open). When you're writing libs that users might require sub parts with 'libname/sub_part', then expand_path combined with say, rubygems, can lead to double requires. Lets not do that. :-) [1] http://github.com/smtlaissezfaire/using/
Including Google Charts in your SSL-protected site causes warnings about 'Mixed Content' (particularly in Internet Explorer). This Rack middleware allows you to point those img tags at a local path instead of Google. The image is retreived by your server then delivered to your client over your SSL connection.
Firefly is your own personal URL shortener for your own domain. It's written in Ruby and powered by Sinatra. You can run it with any Rack-capable web server. This version lets you point to an url as the root path instead of falling in the CMS right away.
A DSL for building matchers that validate nested data structures. Ruby literals like classes, ranges, regexps, arrays, and hashes are automatically converted into matchers. Mismatches produce error trees with paths pointing to each failing element.
A CocoaPods plugin that lets each developer maintain a local Podfile.local file (git-ignored) to override pod sources — pointing to git branches, local paths, tags, commits, or custom podspecs — without modifying the shared Podfile.
Perfect Shape is a collection of pure Ruby geometric algorithms that are mostly useful for GUI manipulation like checking viewport rectangle intersection or containment of a mouse click point in popular geometry shapes such as rectangle, square, arc (open, chord, and pie), ellipse, circle, polygon, and paths containing lines, quadratic bézier curves, and cubic bezier curves, potentially with affine transforms applied like translation, scale, rotation, shear/skew, and inversion (including both the Ray Casting Algorithm, aka Even-odd Rule, and the Winding Number Algorithm, aka Nonzero Rule). Additionally, it contains some purely mathematical algorithms like IEEEremainder (also known as IEEE-754 remainder).
Defines TG::Geometry with immutable Geom parsing and constructor wrappers, expanded geometry predicates and accessors, Rect helpers, Hex/GeoBIN writers, raw extra_json access, read-only borrowed Line/Ring/Polygon and GeometryCollection child wrappers, value Segment wrappers, Registry reload sugar, optional ActiveRecord source helpers, and an immutable geofencing-oriented Index with owned and borrowed geometry ingestion, flat/rtree strategies, deterministic ordered id results, exact rtree allocation accounting, and native-endian packed point batch queries, and FeatureSource GeoJSON FeatureCollection extraction/build paths over vendored C sources. Ractor support is not claimed.
Inventory-Rake Inventory-Rake provides Rake¹ tasks for your Inventory². This includes tasks for cleaning up our project, compiling extensions, installing dependencies, installing and uninstalling the project itself, and creating and pushing distribution files to distribution points. ¹ See http://rake.rubyforge.org/ ² See http://disu.se/software/inventory-1.0/ § Installation Install Inventory-Rake with % gem install inventory-rake § Usage Include the following code in your ‹Rakefile›, where ‹Package› is the top-level module of your project: require 'inventory-rake-3.0' load File.expand_path('../lib/package/version.rb', __FILE__) Inventory::Rake::Tasks.define Package::Version Inventory::Rake::Tasks.unless_installing_dependencies do # Any additional tasks that your project’s dependencies provide end ‹Inventory::Rake::Tasks.define› does the heavy lifting. It takes our inventory and sets up the tasks mentioned above. We also do some additional customization of the gem specification. As we want to be able to use our Rakefile to install our dependencies for us, the rest of the Rakefile is inside the conditional #unless_installing_dependencies, which, as the name certainly implies, executes its block unless the task being run is the one that installs our dependencies. This becomes relevant if we want to, for example, set up Travis¹ integration. To do so, simply add before_script: - gem install inventory-rake -v '~> VERSION' --no-rdoc --no-ri - rake gem:deps:install to your ‹.travis.yml› file. This’ll make sure that Travis installs all development, runtime, and optional dependencies that you’ve listed in your inventory before running any tests. There’s more information in the {API documentation}² that you’ll likely want to read up on if anything is unclear. ¹ See http://travis-ci.org/ ² See http://disu.se/software/inventory-rake-1.0/api/Inventory/Rake/ § Tasks The tasks that are created if you use Inventory-Rake are: = check. = Check that the package meets its expectations. = mostlyclean. = Delete targets built by rake that are ofter rebuilt. = clean. = Delete targets built by rake; depends on mostlyclean. = distclean. = Delete all files not meant for distribution; depends on clean. = compile. = Compile all extensions; depends on each compile:name. = compile:name. = Compile extension /name/; depends on lib/path/so file. = lib/path/so. = Installed dynamic library of extension /name/ inside inventory path; depends on ext/name/so. = ext/name/so. = Dynamic library of extension /name/; depends on ext/name/Makefile and the source files of the extension. = ext/name/Makefile. = Makefile for extension /name/; depends on inventory path, ext/name/extconf.rb file, and ext/name/depend file. Will be created by extconf.rb, which may take options from environment variable name#upcase_EXTCONF_OPTIONS or ‹EXTCONF_OPTIONS› if defined. = clean:name. = Clean files built for extension /name/; depended upon by clean. = spec. = Create specifications; depends on gem:spec. = gem:spec. = Create gem specification; depends on gemspec. = gemspec (file). = Gem specification file; depends on Rakefile, README, and inventory path. = dist. = Create files for distribution; depends on gem:dist. = gem:dist. = Create gem for distribution; depends on inventory:check and gem file. = inventory:check. = Check that the inventory is correct by looking for files not listed in the inventory that match the pattern and for files listed in the inventory that don’t exist; depends on distclean. = gem (file). = Gem file; depends on files included in gem. = dist:check. = Check files before distribution; depends on dist and gem:dist:check. = gem:dist:check. = Check gem before distribution; depends on gem:dist. = deps:install. = Install dependencies on the local system; depends on gem:deps:install. = gem:deps:install. = Install dependencies in ruby gem directory. = deps:install:user. = Install dependencies for the current user; depends on gem:deps:install:user. = gem:deps:install:user. = Install dependencies in the user gem directory. = install. = Install distribution files on the local system; depends on gem:install. = gem:install. = Install gem in ruby gem directory; depends on gem:dist. = install:user. = Install distribution files for the current user; depends on gem:install:user. = gem:install:user. = Install gem in the user gem directory. = uninstall. = Delete all files installed on the local system. = gem:uninstall. = Uninstall gem from ruby gem directory. = uninstall:user. = Delete all files installed for current user. = gem:uninstall:user. = Uninstall gem from ruby gem directory. = push. = Push distribution files to distribution hubs. = gem:push. = Push gem to rubygems.org. § Financing Currently, most of my time is spent at my day job and in my rather busy private life. Please motivate me to spend time on this piece of software by donating some of your money to this project. Yeah, I realize that requesting money to develop software is a bit, well, capitalistic of me. But please realize that I live in a capitalistic society and I need money to have other people give me the things that I need to continue living under the rules of said society. So, if you feel that this piece of software has helped you out enough to warrant a reward, please PayPal a donation to now@disu.se¹. Thanks! Your support won’t go unnoticed! ¹ Send a donation: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=now@disu.se&item_name=Inventory-Rake § Reporting Bugs Please report any bugs that you encounter to the {issue tracker}¹. ¹ See https://github.com/now/inventory-rake/issues § Authors Nikolai Weibull wrote the code, the tests, the manual pages, and this README. § Licensing Inventory-Rake is free software: you may redistribute it and/or modify it under the terms of the {GNU Lesser General Public License, version 3}¹ or later², as published by the {Free Software Foundation}³. ¹ See http://disu.se/licenses/lgpl-3.0/ ² See http://gnu.org/licenses/ ³ See http://fsf.org/
QA Robusta is an automation framework easing pain points away from automation test case writers. How is pain relieved? * Elements, such as links, buttons, and other html objects are defined in one location. This ensures over time the user won't have definitions spread out throughout different layers of code requiring time consuming updates if the application under test is modified. * Well defined flows allows the user to have a common means for navigating and controlling interactions with the application under test. This takes all logic out of test classes and yields in higher more modular code re-use. * When an application requiring testing has the elements and flows implemented less code savy resources can easily add new test cases once trained on how to access the flows and elements. * When ever a link or button is clicked a screen shot is taken * Results are available under site/results directory in html format. Report includes the rdoc on a per test class method along with any screen shots taken. Example report: https://cyberconnect.biz/opensource/demo_results.html * Transparent remote Unix command execution leading to well defined interfaces for common task. For example, one may have a class defined specifically for RemoteUnixNetwork. This class would have methods such as, assign_ip, ifup, ifdown, etc. This class then would be able to perform these task on any remote Unix machine. * Executes the same on Windows or Linux/Unix environments. Developers have the freedom to develop on the platform of choice. * Mechanize extension: Allows the user to define a web application's page elements in a YAML format and provide navigation paths accessing the YAML structure to interact with the web application. Users can also perform direct http.post or any other mechanize functionality when defining state-full interfaces to hit a web application without going through a browser.
In computer science, a disjoint-set data structure, also called a union–find data structure or merge–find set, is a data structure that keeps track of a set of elements partitioned into a number of disjoint (non-overlapping) subsets. It provides near-constant-time operations (bounded by the inverse Ackermann function) to add new sets, to merge existing sets, and to determine whether elements are in the same set. In addition to many other uses (see the Applications section), disjoint-sets play a key role in Kruskal's algorithm for finding the minimum spanning tree of a graph. A disjoint-set forest consists of a number of elements each of which stores an id, a parent pointer, and, in efficient algorithms, a value called the "rank". The parent pointers of elements are arranged to form one or more trees, each representing a set. If an element's parent pointer points to no other element, then the element is the root of a tree and is the representative member of its set. A set may consist of only a single element. However, if the element has a parent, the element is part of whatever set is identified by following the chain of parents upwards until a representative element (one without a parent) is reached at the root of the tree. Forests can be represented compactly in memory as arrays in which parents are indicated by their array index. Disjoint-set data structures model the partitioning of a set, for example to keep track of the connected components of an undirected graph. This model can then be used to determine whether two vertices belong to the same component, or whether adding an edge between them would result in a cycle. The Union–Find algorithm is used in high-performance implementations of unification. This data structure is used by the Boost Graph Library to implement its Incremental Connected Components functionality. It is also a key component in implementing Kruskal's algorithm to find the minimum spanning tree of a graph. Note that the implementation as disjoint-set forests doesn't allow the deletion of edges, even without path compression or the rank heuristic. Sharir and Agarwal report connections between the worst-case behavior of disjoint-sets and the length of Davenport–Schinzel sequences, a combinatorial structure from computational geometry.