Get all but the last element or last n elements of an array.
TypeScript definitions for array-initial
Reduce initial definitions to the actual initial value, where possible.
PostCSS plugin to fallback initial keyword.
PostCSS plugin to fallback initial keyword.
Utility for converting between WGS84 lat/lng and MGRS coordinates
No description provided.
Array manipulation, ordering, searching, summarizing, etc.
Safe defaults for cssnano which require minimal configuration.
A function that accepts the full name of a person in any format, parses it, and returns its parts { title, first name, middle name, last name, nickname, suffix, [and any parsing errors] }.
A simple list of possible Typed Array names.
Which kind of Typed Array is this JavaScript value? Works cross-realm, without `instanceof`, and despite Symbol.toStringTag.
Is this value a JS ArrayBuffer?
Get the byte length of an ArrayBuffer, even in engines without a `.byteLength` method.
An ES7/ES2016 spec-compliant `Array.prototype.includes` shim/polyfill/replacement that works as far down as ES3.
Robustly get the length of a Typed Array
Robustly get the byte offset of a Typed Array
`Array.prototype.concat`, but made safe by ignoring Symbol.isConcatSpreadable
Is this value a JS SharedArrayBuffer?
Get the ArrayBuffer out of a TypedArray, robustly.
Robustly get the byte length of a Typed Array
General purpose glob-based configuration matching.
Is this value a JS Typed Array? This module works cross-realm/iframe, does not depend on `instanceof` or mutable properties, and despite ES6 Symbol.toStringTag.
Extremely fast double-ended queue implementation
This is a gem that will convert to CSV if you pass an array. In addition to conversion, sorting, column specification, and translation can be optionally specified. You can also register default settings in initializers.
Ruby module to make interacting with the Equallogic PSxxxE series command line interface a breeze. Initial development and testing done with firmware V3.3.1 and PS100E/PS300E series arrays.
All methods that alter the contents of an array that implements this Gem are first checked to ensure that the added items are of the types allowed. All methods behave exactly as their Array counterparts, including additional forms, block processing, etc. Defining a TypedArray Class: ```ruby class ThingsArray < Array extend TypedArray restrict_types Thing1, Thing2 end things = ThingsArray.new ``` Generating a single TypedArray ```ruby things = TypedArray(Thing1,Thing2).new These classes can be extended, and their accepted-types appended to after their initial definition.
Recursively traverse a hash or array *ha* (potentially of other nested hashes and/or arrays), doing manipulations. Two methods are available: rsubhak (do substitutions to hash values) and rstrip (strip whitespace from params hash).. Though the initial intent of the rsubhak method was to sanitize the params hash as far as removing currency symbols and/or commas from attributes such as price and quantity, there is a better approach: see the note on the homepage.
Interface for very simple trees. You only have to implement parent (returns the single parent of the current node) and children (returns an Array of all the children of this node) and initialize. Drop this class in via include and presto!
A collection of algorithms for generating cellular automata. Currently only contains "elementary cellular automata" or aka the cool pictures from the Wolfram book. Provides a Automata::Elementary class that takes rule number, initial state along with a #run(steps) method. Produces an array of strings as a result.
This gem implements: 1.) a logistic map function (#logistic_map), which is a discrete, non-linear, dynamic equation which can show - with proper parameters - chaotic behaviour with super-sensitivity to the initial parameters. Very small changes to initial parameters cause huge changes in the result (can be used as a PRNG as iterated over and over); 2.) A tent-map version of the logistic map (#logistic_points) which returns an array of Nth iterated values of several logistic maps with their initial X0 parameter ranging from 0 to 1 by user defined steps, showing curve-like properties when plotted.
== DESCRIPTION: Wrapper library for myID.net's Group ID API == FEATURES/PROBLEMS: * TBD == SYNOPSIS: require 'group_open_id' # Initialize a client GroupOpenID::Client.app_key = 'your_application_key' client = GroupOpenID::Client.new('user_open_id_url', 'user_key') group_id = GroupOpenID::URI.new('http://ruby.myid.net', client) # Get the membership location puts group_id.membership_location # => 'http://some.url/' # Get member lists puts group_id.members # => array of GroupOpenID::Member # Determine where a given open_id is the member of a group id puts group_id.member?('http://deepblue.myid.net') # => true
Glimmer is a Ruby DSL Framework for Ruby GUI and More, consisting of a DSL Engine and a Data-Binding Library (including Observer Design Pattern, Observable Model, Observable Array, and Observable Hash). Used in Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), Glimmer DSL for Web (Ruby in the Browser Web Frontend Framework and Winner of Fukuoka Prefecture Future IT Initiative 2025 Money Forward Award), Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI Library and Winner of Fukuoka Ruby Award Competition 2022 Special Award), Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library), Glimmer DSL for GTK (Ruby-GNOME Desktop Development GUI Library), Glimmer DSL for FX (FOX Toolkit Ruby Desktop Development GUI Library), Glimmer DSL for WX (wxWidgets Ruby Desktop Development GUI Library), Glimmer DSL for Swing (JRuby Swing Desktop Development GUI Library), Glimmer DSL for JFX (JRuby JavaFX Desktop Development GUI Library), Glimmer DSL for XML (& HTML), and Glimmer DSL for CSS.
:: wmainfo-rb :: Author: Darren Kirby mailto:bulliver@badcomputer.org License: Ruby = Quick API docs = == Initializing == require 'wmainfo' foo = WmaInfo.new("someSong.wma") ... or ... foo = WmaInfo.new("someVideo.wmv", :encoding=>"UTF-16LE") (default encoding is ASCII) ... or ... foo = WmaInfo.new("someVideo.wmv", :debug=>1) == Public attributes == @drm :: 'true' if DRM present else 'false' @tags :: dict of strings (id3 like data) @info :: dict of variable types (non-id3 like data) @ext_info :: dict of variable types (non-id3 like data) from ASF_Extended_Content_Description_Object @headerObject :: dict of arrays (name, GUID, size and offset of ASF objects) @stream :: dict of variable types (stream properties data) == Public methods == print_objects :: pretty-print header objects hasdrm? :: returns True if file has DRM hastag?('str') :: returns True if @tags['str'] exists print_tags :: pretty-print @tags dict hasinfo?('str') :: returns True if @info['str'] exists print_info :: pretty-print @info dict print_stream :: pretty-print @stream dict For more/different documentation see http://badcomputer.org/unix/code/wmainfo/ == Thanks/Contributors == Ilmari Heikkinen sent in a fix for uninitialized '@ext_info'. Guillaume Pierronnet sent in a patch which improves character encoding handling.
:: wmainfo-rb :: Authors: Darren Kirby, Guillaume Pierronnet mailto:bulliver@gmail.com License: Ruby = Quick API docs = == Initializing == require 'wmainfo' foo = WmaInfo.new("someSong.wma") ... or ... foo = WmaInfo.new("someVideo.wmv", :encoding=>"UTF-16LE") (default encoding is ASCII) ... or ... foo = WmaInfo.new("someVideo.wmv", :debug=>1) == Public attributes == @drm :: 'true' if DRM present else 'false' @tags :: dict of strings (id3 like data) @info :: dict of variable types (non-id3 like data) @ext_info :: dict of variable types (non-id3 like data) from ASF_Extended_Content_Description_Object @headerObject :: dict of arrays (name, GUID, size and offset of ASF objects) @stream :: dict of variable types (stream properties data) == Public methods == print_objects :: pretty-print header objects hasdrm? :: returns True if file has DRM hastag?('str') :: returns True if @tags['str'] exists print_tags :: pretty-print @tags dict hasinfo?('str') :: returns True if @info['str'] exists print_info :: pretty-print @info dict print_stream :: pretty-print @stream dict == Thanks/Contributors == Ilmari Heikkinen sent in a fix for uninitialized '@ext_info'. Guillaume Pierronnet sent in a patch which improves character encoding handling.
# Trope **[Documentation][docs] - [Gem][gems] - [Source][source]** Prototyping language that transcompiles into pure Ruby code. 1. Build your concept in Trope. 2. Write specs. 3. Transcompile into Ruby. 4. Destroy Trope files. 5. Red, green, refactor. ## Install > NOTE: Trope is not released yet, the gem is just a placeholder. ### Bundler: `gem 'trope'` ### RubyGems: `gem install trope` ## Example Create `library.trope`: ```ruby object Book attr name <String> -!wd 'Unnamed book' attr isbn <Integer> -w attr library <Library> -w do before write { @library.books.delete(self) unless @library.nil? } after write { @library.books.push(self) unless @library.books.include?(self) } end end object Library attr books <Array> -d Array.new meth add_book do |attributes_or_book <Hash, Book>| book = attributes_or_book.is_a?(Book) ? attributes_or_book : Book.new(attributes_or_book) book.library = self @books << book end end ``` Now generate the Ruby code: ```sh $ trope compile libary.trope ``` Those 15 lines will be transcompiled into the following pure Ruby code in `library.rb`: ```ruby class Book class Error < RuntimeError; end class InvalidAttributesError < Error def to_s 'attributes must be a Hash or respond to #to_h' end end class MissingAttributeError < Error def initialize(attr_name, attr_class) @name, @class = attr_name.to_s, attr_class.to_s end def to_s "attribute '#@name' does not exist for #@class" end end class MissingNameError < Error def to_s 'name cannot be nil' end end class InvalidNameError < Error def to_s 'name must be an instance of String or respond to :to_s' end end class InvalidIsbnError < Error def to_s 'isbn must be an instance of Integer or respond to :to_i' end end class MissingLibraryError < Error def to_s 'library cannot be nil' end end class InvalidLibraryError < Error def to_s 'library must be an instance of Library' end end attr_reader *(@@_attributes = [:name, :isbn, :library]) def initialize(attributes={}) raise InvalidAttributesError unless attributes.is_a?(Hash) || attributes.respond_to?(:to_h) attributes = attributes.to_h unless attributes.is_a?(Hash) raise MissingNameError if attributes.has_key?(:name) && attributes[:name].nil? attributes[:name] = 'Unnamed book' unless attributes.has_key?(:name) attributes.each do |name, value| raise MissingAttributeError.new(name, self.class) unless @@_attributes.include?(name.to_sym) setter_method = "#{name}=" setter_method = "_#{setter_method}" unless self.class.method_defined?(setter_method) send(setter_method, value) end end def name=(value) raise MissingNameError if value.nil? raise InvalidNameError unless value.is_a?(String) || value.respond_to?(:to_s) value = value.to_i unless value.is_a?(Integer) @name = value end def isbn=(value) raise InvalidIsbnError unless value.is_a?(Integer) || value.respond_to?(:to_i) value = value.to_i unless value.is_a?(Integer) @isbn = value end def library=(value) raise InvalidLibraryError unless value.is_a?(Library) || value.nil? @library.books.delete(self) unless @library.nil? @library = value @library.books.push(self) unless @library.books.include?(self) @library end end class Library class Error < RuntimeError; end class InvalidAttributesError < Error def to_s 'attributes must be an instance of Hash or respond to #to_h' end end class MissingAttributeError < Error def initialize(attr_name, attr_class) @name, @class = attr_name.to_s, attr_class.to_s end def to_s "attribute '#@name' does not exist for #@class" end end class InvalidBooksError < Error def to_s 'books must be an instance of Array or respond to #to_a' end end attr_reader *(@@_attributes = [:books]) def initialize(attributes={}) raise InvalidAttributesError unless attributes.is_a?(Hash) || attributes.respond_to?(:to_h) attributes = attributes.to_h unless attributes.is_a?(Hash) attributes[:books] = Array.new unless attributes.has_key?(:books) attributes.each do |name, value| raise MissingAttributeError.new(name, self.class) unless @@_attributes.include?(name.to_sym) setter_method = "#{name}=" setter_method = "_#{setter_method}" unless self.class.method_defined?(setter_method) send(setter_method, value) end end def add_book(attributes_or_book={}) raise InvalidAttributesError unless attributes_or_book.is_a?(Hash) || attributes_or_book.respond_to?(:to_h) || attributes_or_book.is_a?(Book) attributes_or_book = attributes_or_book.to_h unless attributes_or_book.is_a?(Hash) || attributes_or_book.is_a?(Book) book = attributes_or_book.is_a?(Book) ? attributes_or_book : Book.new(attributes_or_book) book.library = self @books << book end protected def _books=(value) raise InvalidBooksError unless value.is_a?(Array) || value.respond_to?(:to_a) value = value.to_a unless value.is_a?(Array) @books = value end end ``` Using the transcompiled Ruby code will produce the expected results: ```ruby p library = Library.new # => #<Library:0x007fc55c0ce418 @books=[]> p library.add_book name: 'Book 1', isbn: 1 # => [#<Book:0x007fc55c0cde78 @name=0, @isbn=1, @library=#<Library:0x007fc55c0ce418 @books=[...]>>] p library # => #<Library:0x007fc55c0ce418 @books=[#<Book:0x007fc55c0cde78 @name=0, @isbn=1, @library=#<Library:0x007fc55c0ce418 ...>>]> p library.books.first # => #<Book:0x007fc55c0cde78 @name=0, @isbn=1, @library=#<Library:0x007fc55c0ce418 @books=[#<Book:0x007fc55c0cde78 ...>]>> p library.books.first.isbn = nil # => nil p library.books.first.name = nil # => Book::MissingNameError: name cannot be nil p library.books.first.library = nil # => Book::MissingLibraryError: library cannot be nil p library.books.first.isbn = ['array'] # => Book::InvalidIsbnError: isbn must be an instance of Integer or respond to :to_i p library = Library.new(books: 123) # => Library::InvalidBooksError: books must be an instance of Array or respond to #to_a ``` ### Breakdown ```ruby object Book attr name <String> -!wd 'Unnamed book' end ``` This says that I have an object `Book` that has an attribute `name` (`attr name`) that must either be an instance/subclass of `String` or be able to convert to an instance of `String` using `#to_s` (`<String>`). It is a required attribute that can never be set to nil (`!`), has a writer method (`w`), and defaults to 'Unnamed book'. The minus sign (`-`) indicates a 'switch' or 'option', must like most *nix command line programs. The example could also have been written like so: ```ruby object Book attr name <String> -! -w -d 'Unnamed book' end ``` The above examples will transcompile into the following: ```ruby class Book class Error < RuntimeError; end class InvalidAttributesError < Error def to_s 'attributes must be a Hash or respond to #to_h' end end class MissingAttributeError < Error def initialize(attr_name, attr_class) @name, @class = attr_name.to_s, attr_class.to_s end def to_s "attribute '#@name' does not exist for #@class" end end class MissingNameError < Error def to_s 'name cannot be nil' end end class InvalidNameError < Error def to_s 'name must be an instance of String or respond to :to_s' end end attr_reader *(@@_attributes = [:name]) @@_required_attributes = [:name] def initialize(attributes={}) raise InvalidAttributesError unless attributes.is_a?(Hash) || attributes.respond_to?(:to_h) attributes = attributes.to_h unless attributes.is_a?(Hash) raise MissingNameError if attributes.has_key?(:name) && attributes[:name].nil? attributes[:name] = 'Unnamed book' unless attributes.has_key?(:name) attributes.each do |name, value| raise MissingAttributeError.new(name, self.class) unless @@_attributes.include?(name.to_sym) setter_method = "#{name}=" setter_method = "_#{setter_method}" unless self.class.method_defined?(setter_method) send(setter_method, value) end end def name=(value) raise MissingNameError if value.nil? raise InvalidNameError unless value.is_a?(String) || value.respond_to?(:to_s) value = value.to_i unless value.is_a?(Integer) @name = value end end ``` ## Contributing * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it * Fork the project * Start a feature/bugfix branch * Commit and push until you are happy with your contribution * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally. * Please try not to mess with the Rakefile, VERSION, or Gemfile. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it. ## Copyright Copyright © 2012 Ryan Scott Lewis <ryan@rynet.us>. The MIT License (MIT) - See LICENSE for further details. [docs]: http://rubydoc.info/gems/trope/frames [gems]: https://rubygems.org/gems/trope [source]: https://github.com/RyanScottLewis/trope
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.