Difference between revisions of "Alchemist"

From Free Software Directory
Jump to: navigation, search
(Add alchemist.)
 
Line 1: Line 1:
 
{{Entry
 
{{Entry
 
|Name=alchemist
 
|Name=alchemist
|Short description= A functional, Ruby DSL for casting, transforming and transposing objects
+
|Short description=A functional, Ruby DSL for casting, transforming and transposing objects
|Full description=Casting complex objects from one type to another can be an uncomfortable process to express well. Objects that we use on a daily basis are not always in our control, and, even when they are, some don't lend themselves to simple construction. Remote service communication objects or complex data structures from libraries we use in our applications can result in large piles of casting code.
+
|Full description=This package provides a functional, Ruby Domain-Specific Language (DSL)  for casting, transforming and transposing objects.
 +
 
 +
From the projects README file:
 +
 
 +
<blockquote>
 +
==Rationale==
 +
Casting complex objects from one type to another can be an uncomfortable process to express well. Objects that we use on a daily basis are not always in our control, and, even when they are, some don't lend themselves to simple construction. Remote service communication objects or complex data structures from libraries we use in our applications can result in large piles of casting code.
  
 
This circumstance often produces large swaths of procedural code, even if split up into separate function calls. This code can be not only difficult to understand, but difficult to test if an object requires a great deal of set up. Field or method assignments midway through can change and break the entire operation.
 
This circumstance often produces large swaths of procedural code, even if split up into separate function calls. This code can be not only difficult to understand, but difficult to test if an object requires a great deal of set up. Field or method assignments midway through can change and break the entire operation.
  
 
The goal of this project is to provide a method of defining easily digestible specifications for object translation that are also easily testable and changeable. The project focuses on writing specifications for transformations and not doing direct mutation in the recipes. The result is something that should seem somewhat functional, but also exceedingly separable.
 
The goal of this project is to provide a method of defining easily digestible specifications for object translation that are also easily testable and changeable. The project focuses on writing specifications for transformations and not doing direct mutation in the recipes. The result is something that should seem somewhat functional, but also exceedingly separable.
 +
</blockquote>
 
|Homepage URL=https://github.com/acumenbrands/alchemist
 
|Homepage URL=https://github.com/acumenbrands/alchemist
 
|User level=advanced
 
|User level=advanced
Line 13: Line 20:
 
|Version identifier=0.4b
 
|Version identifier=0.4b
 
|Version download=https://github.com/acumenbrands/alchemist/archive/0.4b.tar.gz
 
|Version download=https://github.com/acumenbrands/alchemist/archive/0.4b.tar.gz
 +
|Last review by=Jgay
 +
|Last review date=2014/01/03
 
|Status=
 
|Status=
 
|Is GNU=No
 
|Is GNU=No
Line 19: Line 28:
 
|License=X11
 
|License=X11
 
|License copyright=Copyright (C) 2013 Acumen Brands, Inc.
 
|License copyright=Copyright (C) 2013 Acumen Brands, Inc.
 +
|License verified by=Jgay
 +
|License verified date=2014/01/03
 
}}
 
}}
 
{{Person
 
{{Person

Revision as of 17:42, 3 January 2014


[edit]

alchemist

https://github.com/acumenbrands/alchemist
A functional, Ruby DSL for casting, transforming and transposing objects

This package provides a functional, Ruby Domain-Specific Language (DSL) for casting, transforming and transposing objects.

The project's README file provides the following explanation of the purpose of this library:

Rationale


Casting complex objects from one type to another can be an uncomfortable process to express well. Objects that we use on a daily basis are not always in our control, and, even when they are, some don't lend themselves to simple construction. Remote service communication objects or complex data structures from libraries we use in our applications can result in large piles of casting code.

This circumstance often produces large swaths of procedural code, even if split up into separate function calls. This code can be not only difficult to understand, but difficult to test if an object requires a great deal of set up. Field or method assignments midway through can change and break the entire operation.

The goal of this project is to provide a method of defining easily digestible specifications for object translation that are also easily testable and changeable. The project focuses on writing specifications for transformations and not doing direct mutation in the recipes. The result is something that should seem somewhat functional, but also exceedingly separable.





Licensing

License

Verified by

Verified on

Notes

License

X11

Verified by

Jgay

Verified on

3 January 2014




Leaders and contributors

Contact(s)Role
James Christie Author
Alex Williams Co-Author


Resources and communication

AudienceResource typeURI
Python (Ref)https://pypi.org/project/alchemist
Ruby (Ref)https://rubygems.org/gems/alchemist


Software prerequisites

KindDescription
Required to useRuby




Entry








"Author" is not in the list (Maintainer, Contributor, Developer, Sponsor, Unknown) of allowed values for the "Role" property.



"Co-Author" is not in the list (Maintainer, Contributor, Developer, Sponsor, Unknown) of allowed values for the "Role" property.










Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.

The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.