What is Skeleton Crew
Skeleton Crew is a tool designed to help you
quickly build model code. It uses it's own code model to represent models, not
the CodeDom. It's not designed to represent expressions and statements, just
basic structure. The purpose of tools like the Pseudo.Net modeler are to allow
you to easily and quickly specify your models, and render them in any language
desired. Think of Pseudo.Net code as a happy medium between UML class diagrams
and actual code. Many people get caught up building a UML model that takes far
longer than it would to just write the code. Pseudo.Net allows you to specify
the same structural design, without worrying about implementation details, and
easily translates directly to code in any language. Other tools such as the XML
modeler allow you to generate an XML serializable model that is virtually
interchangable with XML through the models generated serializer class.
What Skeleton Crew can do for you
Skeleton Crew is a code generation tool designed
to save time and improve productivity by doing large amounts of work for you.
It does not generate full applications, full application tiers or ready to use
libraries. It generates skeleton code for you to modify. These tools can shave
weeks of work off of most projects. If you know what your model will be and
dread typing all your property accessors and other tedious coding tasks,
Pseudo.Net can help. If you have a large XML structure that you have to work
with and would much rather work with a programmable model instead of XPath
queries through the XML DOM, the XML Modeler can help.
How Skeleton Crew works
There are four main interfaces that Skeleton Crew
2.0 employs to facilitate it's code generation.
-
ICodeBuilder
builds a code model from some type of input.
-
ICodeTransformer
modifies a code model.
-
ICodeRenderer
renders a code model to text.
-
ICodeGenerator generates text from some type of input. They do building
and rendering all in one. They don't necessarily use the code model.
These four interfaces are used in concert to
generate code based on your specifications. As an example, if you are using the
Pseudo.Net modeler with the C# renderer and XMLSerialize checked on the
renderer options form, Skeleton Crew takes the Pseudo.Net code you supply, uses
an instance of PseudoCodeBuilder to generate a code model, then uses an
instance of XmlSerializeTransformer to add XML serialization attributes to the
model, and finally uses an instance of CSharpCodeRenderer, which uses an
instance of TemplateCodeGenerator to render any collection statements in your
Psuedo.Net code using the "TypedCollection.cs.xslt" file in the application's
"Templates" directory, to produce your XML serializable C# output.
Skeleton Crew uses a proprietary code model that's
only represents structure such as types and members. The code model output of
an ICodeBuilder is a Package object, which contains Namespaces, which contain
types. ICodeTransformers can act on either Package objects or Namespace
objects, returning the same type as supplied. ICodeRenderers and
ICodeGenerators both produce SourcePacks, which are analogous to files. They
both have a RenderMode property that allows you to specify how to break up the
content into SourcePacks.
Below are abreviated definitions of the four
interfaces, and a list of their implementations.
1: public interface ICodeBuilder {
2: event ProgressHandler Progress;
3: Package Build();
4: }
|
ICodeBuilder Implementations |
DatabaseCodeBuilder |
Builds a code model from a database schema. |
PseudoCodeBuilder |
Builds a code model from Pseudo.Net code. |
XmlDeserializeCodeBuilder |
Builds a code model by deserializing code model XML. |
XmlNsCodeBuilder |
Builds a code model from a sample XML structure. |
1: public interface ICodeTransformer {
2: event ProgressHandler Progress;
3: Package Transform(Package pkg);
4: Namespace Transform(Namespace ns);
5: }
|
ICodeTransformer Implementations |
CodeTransformDecorator |
An abstract implementation that uses the Decorator design pattern to allow
multiple ICodeTransformers to act on a model. |
XmlSerializeTransformer |
Add XML serialization attributes to the members of a code model. |
1: public interface ICodeRenderer {
2: event ProgressHandler Progress;
3: RenderMode RenderMode { get; set; }
4: string IndentString { get; set; }
5: SourcePacks Render(Package pkg);
6: SourcePacks Render(Namespace ns);
7: SourcePack Render(IType itp);
8: }
|
ICodeRenderer Implementations |
AbstractCodeRenderer |
Provides base functionality for many of the implemented ICodeRenderers. |
CSharpCodeRenderer |
Renders a code model to C# code. |
CSharp2CodeRenderer |
Renders a code model to C# 2.0 code. |
DialogCodeRenderer |
Renders a code model to a C# dialog form. |
JavaCodeRenderer |
Renders a code model to Java code. |
PseudoCodeRenderer |
Renders a code model to Pseudo.Net code. |
SqlCodeRenderer |
Renders a code model to SQL script. |
VBCodeRenderer |
Renders a code model to VB.Net code. |
VB2CodeRenderer |
Renders a code model to VB.Net 2.0 code. |
XMLCodeRenderer |
Serializes a code model to XML. |
XsdCodeRenderer |
Renders a code model to an XML Schema (XSD). |
1: public interface ICodeGenerator {
2: event ProgressHandler Progress;
3: LanguageDescription LanguageDescription { get; set; }
4: RenderMode RenderMode { get; set; }
5: SourcePacks Render();
6: }
|
ICodeGenerator Implementations |
TemplateCodeGenerator |
Transforms an XML document to text using XSLT. |
HtmlCodeGenerator |
Generates HTML from input text using the colors and keywords specified in a
LanguageDescription object. |
SqlStoredProcGenerator |
Generates stored procedure SQL script from a database schema. |
XmlSerializerGenerator |
A specialized TemplateCodeGenerator used to generate a serializer class by the
XmlNsCodeBuilder. |
|
|
|