Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 181 lines (129 sloc) 5.895 kb
1dbcc31 @Whiteknight index.html -> index.md
authored
1 ---
2 layout: rosella
1b968f4 @Whiteknight list libraries in the page header
authored
3 title: Rosella Library
1dbcc31 @Whiteknight index.html -> index.md
authored
4 ---
5
6 Rosella is a library of patterns and practices for use with the
7 Parrot Virtual Machine. The goal of Rosella is to provide a
8 library of building blocks for programmers on Parrot. By having
9 these tools and components available in a portable, usable way,
10 programmers should be empowered to create high quality,
11 maintainable software faster.
12
13 The Rosella project is actually a collection of individual
14 libraries, each of which implements a single pattern or best
15 practice. Rosella is intended to be used piece-wise. Use only the
16 parts you want and ignore the parts you do not want. Rosella
17 libraries tend not to be interdependent, although some of the more
18 advanced libraries rely on some of the more basic ones.
19
20 ## Rosella Components
21
22 ### Rosella Stable Libraries
23
24 Here is a list of Rosella's libraries which are currently
25 considered to be "stable" enough for general use:
26
27 #### Core
28
29 Rosella's Core library provides a handful of routines used by
30 the other Rosella libraries. This library provides basic behavior
31 for working with an assortment of "type" meta-objects, and for
32 implementing a standard system of object constructor behavior.
33
34 #### Action
35
36 The Action library implements the Command pattern. Sequences of
37 instructions can be bundled together into an Action object, and
38 can be invoked later.
39
40 #### Container
41
42 The Container library implements a Dependency Injection, Inversion
43 of Control container type which can be used to help decouple
44 modules in a program. The Container utilizes the Action library
45 to setup constructor injection and method injection behaviors
46 on registered types.
47
48 #### Test
49
50 Inspired by testing libraries such as xUnit and Test::More,
51 The Rosella Test library provides the tools and utilities to
52 quickly write unit tests for your software. Rosella's own test
53 suite is written using this library.
54
55 #### TAP Harness
56
57 A companion to the Test library, The TAP Harness library
58 implements the logic necessary to quickly construct a TAP harness
59 for executing unit tests and reporting the results. Rosella's own
60 test harness is written using this library.
61
62 #### Proxy
63
64 The Proxy library provides the tools necessary to create a wide
65 array of proxy objects.
66
67 #### Mock Objects
68
69 The MockObject library uses the Rosella Proxy library to implement
70 full-featured mock objects for use in testing with the Test
71 library. Several tests in the Rosella test suite are implemented
72 using this library.
73
74 ### Rosella Development Libraries
75
76 This is a list of libraries which are still in design or
77 development phases:
78
79 #### Event
80
81 The Event library provides a subscribe/observe interface over the
82 Action library. Multiple parts of a program can anonymously
83 subscribe to or publish named events. This library is inspired,
84 in part, by the event aggregation portions of the PRISM practices
85 library.
86
87 #### Prototype
88
89 The Prototype library provides facilities for implementing a
90 prototype-based object model system. Prototypes and object
91 constructors/initializers can be registered with the library. New
92 instances can be cloned from the prototype on demand.
93
94 #### Query
95
96 The Query library provides interfaces for interacting with
97 aggregate objects. This library provides a series of higher-order
98 utilities inspired by the .Net LINQ library.
99
100 #### Decorate
101
102 The Decorate library uses the Proxy library to implement a system
103 of cheap, efficient type decorators. A decorator allows
104 transparent passthrough of normal method calls, attribute
105 accesses, and primitive value operations while allowing the
106 programmer to inject additional methods and attributes on a
107 per-object (not per-class) basis.
108
109 #### Contract
110
111 The Contract library implements logic for "design by contract"
112 programming mechanisms. You can set up runtime checks for pre-
113 and post-conditions on method calls, and you can set up assertions
114 to verify invariant conditions. All the logic in the library can
115 be disabled once the software has been tested and deployed.
116
117 ## Install
118
119 ### Dependencies
120 <ul>
1b968f4 @Whiteknight list libraries in the page header
authored
121 <li>[Parrot](http://github.com/parrot/parrot)</li>
122 <li>[Winxed](http://code.google.com/p/winxed)</li>
1dbcc31 @Whiteknight index.html -> index.md
authored
123 </ul>
124
125 ### Installing With Plumage
126
1b968f4 @Whiteknight list libraries in the page header
authored
127 [Plumage](http://github.com/parrot/plumage) is a
1dbcc31 @Whiteknight index.html -> index.md
authored
128 package-management program for Parrot. If you have Plumage
129 and Winxed already installed getting Rosella is a breeze:
130
131 $ plumage install rosella</pre>
132
133 That's all there is to it! You now have Rosella. If you don't have
134 Plumage on your system you'll need to follow the rest of the
135 instructions below.
136
137 ### Get the Source
138
139 You can download this project in either
1b968f4 @Whiteknight list libraries in the page header
authored
140 [zip](http://github.com/Whiteknight/Rosella/zipball/master) or
141 [tar](http://github.com/Whiteknight/Rosella/tarball/master) formats.
1dbcc31 @Whiteknight index.html -> index.md
authored
142
1b968f4 @Whiteknight list libraries in the page header
authored
143 You can also clone the project with [Git](http://git-scm.com)
1dbcc31 @Whiteknight index.html -> index.md
authored
144 by running:
145
146 $ git clone git://github.com/Whiteknight/Rosella
147
148 ### Installing Manually
149
150 Once you have a copy of the source and all the necessary
151 dependencies you can build, test and install Rosella:
152
153 $ winxed setup.winxed build
154 $ winxed setup.winxed test
155 $ winxed setup.wixned install
156
157 ## Project Info
158
159 ### License
160
1b968f4 @Whiteknight list libraries in the page header
authored
161 Rosella is released under the terms of the Artistic 2.0 license.
162 See the LICENSE file in the repo for more details.
1dbcc31 @Whiteknight index.html -> index.md
authored
163
164 ### Authors
165
1b968f4 @Whiteknight list libraries in the page header
authored
166 Rosella is written by [Whiteknight](http://whiteknight.github.com)
167 (wknight8111@gmail.com). See the CREDITS file in the repo for more details
168 about contributors and the people and projects which have inspired Rosella.
1dbcc31 @Whiteknight index.html -> index.md
authored
169
170 <div class="footer">
171 get the source code on GitHub :
172 <a href="http://github.com/Whiteknight/Rosella">Whiteknight/Rosella</a>
173 <br/>
174 The image of the Crimson Rosella at the top of the page is from
175 <a href="http://commons.wikimedia.org/wiki/File:Crimson_Rosella,_Culburra_Beech.jpg">
176 D. Gordon E. Robertson on Wikipedia
177 </a>. The image is released under the terms of the CC-By-SA-3.0 and/or
178 the GFDL licenses.
179 </div>
180
Something went wrong with that request. Please try again.