I hereby claim:
- I am snusnu on github.
- I am snusnu (https://keybase.io/snusnu) on keybase.
- I have a public key ASCeI7S7w8ue_uXin09T3QyJEqTsv0Jc6ugaGxiDTktOago
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| require 'mom' | |
| entities = Mom::Registry.build do # build models using :anima | |
| register :user do | |
| map :id | |
| map :name | |
| group :tasks | |
| end | |
| register :task do |
| class MethodObject < Module | |
| DEFAULT_NAME = :call | |
| def initialize(name = DEFAULT_NAME) | |
| @name = name | |
| end | |
| def self.included(host) | |
| host.instance_exec(@name) do |name| | |
| define_method :call do |*args| |
| require 'concord' | |
| class Iterator < Module | |
| include Concord.new(:collection) | |
| private | |
| def included(host) | |
| enumerable = collection | |
| host.class_eval do |
| require 'axiom-schema' | |
| # A schema (definition) is pure RA, no RDMBS | |
| # concepts are in the mix. Those are only | |
| # added with Axiom::Database objects shown | |
| # further below. Even renaming of attributes | |
| # is not done at this level. It's database | |
| # business. Internally, this is implemented | |
| # by performing a #rename op on an axiom | |
| # relation tho. |
| class Path < BasicObject | |
| def initialize(path = []) | |
| @path = path | |
| end | |
| def to_a | |
| @path.dup | |
| end |
| require 'ducktrap' | |
| # Very simple ducktrap without any real world use | |
| # | |
| # Not transforming. | |
| # | |
| string = Ducktrap.build do | |
| primitive(String) | |
| end |
| require 'concord' | |
| class Request | |
| include Concord.new(:input) | |
| end | |
| class Response | |
| include Concord.new(:input, :output) | |
| def to_request(new_input = output) |
| " a function that preserves the state | |
| " see http://technotales.wordpress.com/2010/03/31/preserve-a-vim-function-that-keeps-your-state/ | |
| function! Preserve(command) | |
| " Preparation: save last search, and cursor position. | |
| let _s=@/ | |
| let l = line(".") | |
| let c = col(".") | |
| " Do the business: | |
| execute a:command | |
| " Clean up: restore previous search history, and cursor position |
Graph::Node only exists because of our pimped jersey header that supports renaming the attributes during a join (and currently only a join, i.e. no support for other binary ops). If axiom would support Relation#join(other, join_definition) there would be no need for Graph::Node. The graph's nodes would be Axiom::Relation instances and the (directed) edges would continue to be composed of a name, a JoinDefinition instance and pointers to both source and target nodes.
ROM::Relation instances should be composed of an Axiom::Relation and a Mapper. Pushing the mapper to the tuple level renders our current AttributeSet useless, or rather, i suspect that its functionality will be subsumed in Mapper. If axiom would support an injectable EvaluatorContext for operations that accept a block (like #join etc), we should be able to come up with a context that is composed of the axiom relation and the mapper, thus allowing us to use "object land" attribute names inside the block, while still const