Efficiently test whether an object contains the specified value
Copy a descriptor from object A to object B
Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
Persistent ordered mapping from strings
Returns true if a value has the characteristics of a valid JavaScript data descriptor.
Read/write IEEE754 floating point numbers from/to a Buffer or array-like object
Properties file reader for Node.js
Binary value packing and unpacking
Run an array of functions in parallel
An Implementation of ES Observables
Test if an object has a specified property.
No description provided.
ProseMirror's rowspan/colspan tables component
An LRU cache of weak references
Utilities for watching file trees.
Generate all possible permutations of an object's key-value pairs
Parse HTTP request cookies
Define a lazily evaluated property on an object
Read/write IEEE754 floating point numbers from/to a Buffer or array-like object
Force V8 to use fast properties for an object
Delete nested properties from an object using dot notation.
Set nested properties on an object using dot notation.
option parsing and help generation
HTTP server cookie parsing and serialization
In a class inherited this class, constant variables get the behavior like records of ActiveRecord.
Similar in behavior to Object#presence defined in ActiveSupport, Significance is a state which determines not just the blank-ness of an object but whether or not the non-blank object has any real-world value. The utility of this gem can best be demonstrated when considering the merging of two hashes. Under normal circumstances the mere existence of an equivalent key in the second hash results in its overriding the corresponding value in the original hash. Using Hash#significant_merge, however, the second hash will retain only key-value pairs whose values are "significant," even applying the significance filter recursively into child hashes or arrays.
Ohm is a library that allows to store an object in Redis, a persistent key-value database. It has very good performance.
TimedCache implements a cache in which you can place objects and specify a timeout value. If you attempt to retrieve the object within the specified timeout, the object will be returned. If the timeout period has elapsed, the TimedCache will return nil.
This gem takes your ruby input, plus an object such as a Sequel::Model object, and generates HTML code. If the object has values, they're inserted into the HTML, and if the object has error messages, code is generated to display them. You can use CSS, but it's not automated in this class of methods.
Ohm is a library that allows to store an object in Redis, a persistent key-value database. It has very good performance.
This gem adds a new method called `Boolean`, analogous to builtins like `Integer` or `String`, which converts a Ruby value to either `true` or `false` based on its truthiness. It also has optional core extensions that add a `to_bool` method to all Ruby objects and allow you to check if a value is boolean with `val.is_a?(Boolean)`.
On large results of ActiveRecord queries, instanciation + GC of objects has a real cost of allocating memory, setting values, and after all GC garbage ... Inside a without_instanciation block, data is returned as hash of values. Objects instanciation process id skipped and though GC of theses objects too. Performance up to 80% for large query result. Of course, you no longer work with Ruby AR objects in this block.
Provides a lightweight solution for object-oriented enumerations in Ruby in a similar ways as other languages, like Java, do. It consists of a single class (Enum), that can be subclassed to create enumerated types. Each class has a set of predefined instances, that represent the enumerated values. Fatures like support for inheritance and declaring instance methods on enumerated values are supported as well.
Value Value is a library for defining immutable value objects in Ruby. A value object is an object whose equality to other objects is determined by its value, not its identity, think dates and amounts of money. A value object should also be immutable, as you don’t want the date “2013-04-22” itself to change but the current date to change from “2013-04-22” to “2013-04-23”. That is, you don’t want entries in a calendar for 2013-04-22 to move to 2013-04-23 simply because the current date changes from 2013-04-22 to 2013-04-23. A value object consists of one or more attributes stored in instance variables. Value sets up an #initialize method for you that let’s you set these attributes, as, value objects being immutable, this’ll be your only chance to do so. Value also adds equality checks ‹#==› and ‹#eql?› (which are themselves equivalent), a ‹#hash› method, a nice ‹#inspect› method, and a protected attribute reader for each attribute. You may of course add any additional methods that your value object will benefit from. That’s basically all there’s too it. Let’s now look at using the Value library. § Usage You create value object class by invoking ‹#Value› inside the class (module) you wish to make into a value object class. Let’s create a class that represent points on a plane: class Point Value :x, :y end A ‹Point› is thus a value object consisting of two sub-values ‹x› and ‹y› (the coordinates). Just from invoking ‹#Value›, a ‹Point› object will have a constructor that takes two arguments to set instance variables ‹@x› and ‹@y›, equality checks ‹#==› and ‹#eql?› (which are the same), a ‹#hash› method, a nice ‹#inspect› method, and two protected attribute readers ‹#x› and ‹#y›. We can thus already creat ‹Point›s: origo = Point.new(0, 0) The default of making the attribute readers protected is often good practice, but for a ‹Point› it probably makes sense to be able to access its coordinates: class Point public(*attributes) end This’ll make all attributes of ‹Point› public. You can of course choose to only make certain attributes public: class Point public :x end Note that this public is standard Ruby functionality. Adding a method to ‹Point› is of course also possible and very much Rubyish: class Point def distance(other) Math.sqrt((other.x - x)**2 + (other.y - y)**2) end end For some value object classes you might want to support optional attributes. This is done by providing a default value for the attribute, like so: class Money Value :amount, [:currency, :USD] end Here, the ‹currency› attribute will default to ‹:USD›. You can create ‹Money› via dollars = Money.new(2) but also kronor = Money.new(2, :SEK) All required attributes must come before any optional attributes. Splat attributes are also supported: class List Value :'*elements' end empty = List.new suits = List.new(:spades, :hearts, :diamonds, :clubs) Splat attributes are optional. Finally, block attributes are also available: class Block Value :'&block' end block = Block.new{ |e| e * 2 } Block attributes are optional. Comparison beyond ‹#==› is possible by specifingy the ‹:comparable› option to ‹#Value›, listing one or more attributes that should be included in the comparison: class Vector Value :a, :b, :comparable => :a end Note that equality (‹#==› and ‹#eql?›) is always defined based on all attributes, regardless of arguments to ‹:comparable›. Here we say that comparisons between ‹Vector›s should be made between the values of the ‹a› attribute only. We can also make comparisons between all attributes of a value object: class Vector Value :a, :b, :comparable => true end To sum things up, let’s use all possible arguments to ‹#Value› at once: class Method Value :file, :line, [:name, 'unnamed'], :'*args', :'&block', :comparable => [:file, :line] end A ‹Method› consists of file and line information, a possible name, some arguments, possibly a block, and is comparable on the file and line on which they appear. Check out the {full API documentation}¹ for a more explicit description, should you need it or should you want to extend it. ¹ See http://disu.se/software/value/api/ § 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%40disu%2ese&item_name=Value § Reporting Bugs Please report any bugs that you encounter to the {issue tracker}¹. ¹ See https://github.com/now/value/issues § Authors Nikolai Weibull wrote the code, the tests, the manual pages, and this README. § Licensing Value 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/
This plugin implements Flickr's machine tags as explained here[http://www.flickr.com/groups/api/discuss/72157594497877875] while still maintaining standard tagging behavior. Basically, a machine tag has a namespace, a predicate and a value in the format [namespace]:[predicate]=[value] This allows for more precise tagging as tags can have unlimited contexts provided by combinations of namespaces and predicates. These unlimited contexts also make machine tags ripe for modeling relationships between objects. Read the HasMachineTags::TagMethods class documentation for a more thorough explanation. A demo app using this plugin is here. This gem should run on all major Ruby versions and work with Rails 2.3.x and up.
LazyData provides data types featuring thread-safe lazy computation. These objects are constructed with a block that can be called to compute the final value, but it is not actually called until the value is requested. Once requested, the computation takes place only once, in the first thread that requested the value. Future requests will return a cached value. Furthermore, any other threads that request the value during the initial computation will block until the first thread has completed the computation. This implementation also provides retry and expiration features. The code was extracted from the google-cloud-env gem that originally used it.
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.