├── .gitignore
├── ColdDoc.cfc
├── README.md
├── licence.txt
├── run.cfm
└── strategy
├── AbstractTemplateStrategy.cfc
├── api
├── HTMLAPIStrategy.cfc
└── resources
│ ├── static
│ ├── index.html
│ ├── resources
│ │ └── inherit.gif
│ └── stylesheet.css
│ └── templates
│ ├── allclasses-frame.html
│ ├── class.html
│ ├── inc
│ └── nav.html
│ ├── index.html
│ ├── overview-frame.html
│ ├── overview-summary.html
│ ├── package-frame.html
│ └── package-summary.html
└── uml2tools
├── XMIStrategy.cfc
└── resources
└── templates
└── template.uml
/.gitignore:
--------------------------------------------------------------------------------
1 | #ignore these files
2 | .*
3 | !.gitignore
4 | settings.xml
5 | *.iml
6 | docs/*
7 |
--------------------------------------------------------------------------------
/ColdDoc.cfc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | variables.instance = {};
8 |
9 | return this;
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | var qMetaData = 0;
18 | var source = 0;
19 |
20 | if(NOT hasStrategy())
21 | {
22 | throwException("colddoc.StrategyNotSetException", "No Template Strategy has been set.",
23 | "Create a Template Strategy, and set it with setStrategy() before calling generate()");
24 | }
25 |
26 | if(isSimpleValue(arguments.inputSource))
27 | {
28 | source = [{ inputDir=arguments.inputSource, inputMapping=arguments.inputMapping }];
29 | }
30 | else
31 | {
32 | source = arguments.inputSource;
33 | }
34 |
35 | qMetaData = buildMetaDataCollection(source);
36 |
37 | getStrategy().run(qMetaData);
38 |
39 |
40 |
41 |
43 |
44 |
45 |
46 |
47 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | var qFiles = 0;
65 | var currentPath = 0;
66 | var qMetaData = QueryNew("package,name,extends,metadata,type,implements,fullextends");
67 | var cfcPath = 0;
68 | var packagePath = 0;
69 | var cfcName = 0;
70 | var meta = 0;
71 | var i = 0;
72 | var implements = 0;
73 | var fullextends = 0;
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | currentPath = replace(directory, arguments.inputSource[i].inputDir, "");
83 | currentPath = reReplace(currentPath, "[/\\]", "");
84 | currentPath = reReplace(currentPath, "[/\\]", ".", "all");
85 |
86 | if(len(currentPath))
87 | {
88 | packagePath = ListAppend(arguments.inputSource[i].inputMapping, currentPath, ".");
89 | }
90 | else
91 | {
92 | packagePath = arguments.inputSource[i].inputMapping;
93 | }
94 |
95 | cfcName = ListGetAt(name, 1, ".");
96 |
97 | try
98 | {
99 | if (Len(packagePath)) {
100 | meta = getComponentMetaData(packagePath & "." & cfcName);
101 | }
102 | else {
103 | meta = getComponentMetaData(cfcName);
104 | }
105 |
106 | //let's do some cleanup, in case CF sucks.
107 | if(Len (packagePath) AND NOT meta.name contains packagePath)
108 | {
109 | meta.name = packagePath & "." & cfcName;
110 | }
111 |
112 | QueryAddRow(qMetaData);
113 | QuerySetCell(qMetaData, "package", packagePath);
114 | QuerySetCell(qMetaData, "name", cfcName);
115 | QuerySetCell(qMetaData, "metadata", meta);
116 | QuerySetCell(qMetaData, "type", meta.type);
117 |
118 | implements = getImplements(meta);
119 | implements = listQualify(arrayToList(implements), ':');
120 |
121 | QuerySetCell(qMetaData, "implements", implements);
122 |
123 | fullextends = getInheritence(meta);
124 | fullextends = listQualify(arrayToList(fullextends), ':');
125 |
126 | QuerySetCell(qMetaData, "fullextends", fullextends);
127 |
128 | //so we cane easily query direct desendents
129 | if(StructKeyExists(meta, "extends"))
130 | {
131 | if(meta.type eq "interface")
132 | {
133 | QuerySetCell(qMetaData, "extends", meta.extends[structKeyList(meta.extends)].name);
134 | }
135 | else
136 | {
137 | QuerySetCell(qMetaData, "extends", meta.extends.name);
138 | }
139 | }
140 | else
141 | {
142 | QuerySetCell(qMetaData, "extends", "-");
143 | }
144 |
145 | }
146 | catch(Any exc)
147 | {
148 | warnError(packagePath & "." & cfcName, exc);
149 | }
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 | var localmeta = arguments.metadata;
173 | var interfaces = {};
174 | var key = 0;
175 | var imeta = 0;
176 |
177 | if(arguments.metadata.type neq "component")
178 | {
179 | return ArrayNew(1);
180 | }
181 |
182 | while(StructKeyExists(localmeta, "extends"))
183 | {
184 | if(StructKeyExists(localmeta, "implements"))
185 | {
186 | for(key in localmeta.implements)
187 | {
188 | imeta = localmeta.implements[local.key];
189 | interfaces[imeta.name] = 1;
190 | }
191 | }
192 | localmeta = localmeta.extends;
193 | }
194 |
195 | interfaces = structKeyArray(interfaces);
196 |
197 | arraySort(interfaces, "textnocase");
198 |
199 | return interfaces;
200 |
201 |
202 |
203 |
204 |
205 |
206 | var localmeta = arguments.metadata;
207 | //ignore top level
208 | var inheritence = [];
209 |
210 | while(StructKeyExists(localmeta, "extends"))
211 | {
212 | //manage interfaces
213 | if(localmeta.type eq "interface")
214 | {
215 | localmeta = localmeta.extends[structKeyList(localmeta.extends)];
216 | }
217 | else
218 | {
219 | localmeta = localmeta.extends;
220 | }
221 |
222 | ArrayPrepend(inheritence, localmeta.name);
223 | }
224 |
225 | return inheritence;
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ColdDoc 1.0
2 | ==========
3 |
4 | Thanks for taking the time to look at ColdDoc!
5 |
6 | The ColdDoc home page can be found at [http://www.compoundtheory.com/?action=colddoc.index][1]
7 |
8 | Documentation for ColdDoc can be found on the [GitHub Wiki][2].
9 |
10 | The main Git repository and downloads can be found on [GitHub][3].
11 |
12 | For support, the ColdDoc mailing list can be found on [Google Groups][4].
13 |
14 | [1]: http://www.compoundtheory.com/?action=colddoc.index
15 | [2]: https://github.com/markmandel/ColdDoc/wiki
16 | [3]: https://github.com/markmandel/ColdDoc
17 | [4]: https://groups.google.com/forum/#!forum/colddoc-dev
18 |
19 |
--------------------------------------------------------------------------------
/licence.txt:
--------------------------------------------------------------------------------
1 | Common Public License Version 1.0
2 |
3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
6 |
7 | 1. DEFINITIONS
8 |
9 | "Contribution" means:
10 |
11 | a) in the case of the initial Contributor, the initial code and
12 | documentation distributed under this Agreement, and
13 |
14 | b) in the case of each subsequent Contributor:
15 |
16 | i) changes to the Program, and
17 |
18 | ii) additions to the Program;
19 |
20 | where such changes and/or additions to the Program originate from and are
21 | distributed by that particular Contributor. A Contribution 'originates' from a
22 | Contributor if it was added to the Program by such Contributor itself or anyone
23 | acting on such Contributor's behalf. Contributions do not include additions to
24 | the Program which: (i) are separate modules of software distributed in
25 | conjunction with the Program under their own license agreement, and (ii) are not
26 | derivative works of the Program.
27 |
28 | "Contributor" means any person or entity that distributes the Program.
29 |
30 | "Licensed Patents " mean patent claims licensable by a Contributor which are
31 | necessarily infringed by the use or sale of its Contribution alone or when
32 | combined with the Program.
33 |
34 | "Program" means the Contributions distributed in accordance with this Agreement.
35 |
36 | "Recipient" means anyone who receives the Program under this Agreement,
37 | including all Contributors.
38 |
39 | 2. GRANT OF RIGHTS
40 |
41 | a) Subject to the terms of this Agreement, each Contributor hereby grants
42 | Recipient a non-exclusive, worldwide, royalty-free copyright license to
43 | reproduce, prepare derivative works of, publicly display, publicly perform,
44 | distribute and sublicense the Contribution of such Contributor, if any, and such
45 | derivative works, in source code and object code form.
46 |
47 | b) Subject to the terms of this Agreement, each Contributor hereby grants
48 | Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
49 | Patents to make, use, sell, offer to sell, import and otherwise transfer the
50 | Contribution of such Contributor, if any, in source code and object code form.
51 | This patent license shall apply to the combination of the Contribution and the
52 | Program if, at the time the Contribution is added by the Contributor, such
53 | addition of the Contribution causes such combination to be covered by the
54 | Licensed Patents. The patent license shall not apply to any other combinations
55 | which include the Contribution. No hardware per se is licensed hereunder.
56 |
57 | c) Recipient understands that although each Contributor grants the licenses
58 | to its Contributions set forth herein, no assurances are provided by any
59 | Contributor that the Program does not infringe the patent or other intellectual
60 | property rights of any other entity. Each Contributor disclaims any liability to
61 | Recipient for claims brought by any other entity based on infringement of
62 | intellectual property rights or otherwise. As a condition to exercising the
63 | rights and licenses granted hereunder, each Recipient hereby assumes sole
64 | responsibility to secure any other intellectual property rights needed, if any.
65 | For example, if a third party patent license is required to allow Recipient to
66 | distribute the Program, it is Recipient's responsibility to acquire that license
67 | before distributing the Program.
68 |
69 | d) Each Contributor represents that to its knowledge it has sufficient
70 | copyright rights in its Contribution, if any, to grant the copyright license set
71 | forth in this Agreement.
72 |
73 | 3. REQUIREMENTS
74 |
75 | A Contributor may choose to distribute the Program in object code form under its
76 | own license agreement, provided that:
77 |
78 | a) it complies with the terms and conditions of this Agreement; and
79 |
80 | b) its license agreement:
81 |
82 | i) effectively disclaims on behalf of all Contributors all warranties and
83 | conditions, express and implied, including warranties or conditions of title and
84 | non-infringement, and implied warranties or conditions of merchantability and
85 | fitness for a particular purpose;
86 |
87 | ii) effectively excludes on behalf of all Contributors all liability for
88 | damages, including direct, indirect, special, incidental and consequential
89 | damages, such as lost profits;
90 |
91 | iii) states that any provisions which differ from this Agreement are offered
92 | by that Contributor alone and not by any other party; and
93 |
94 | iv) states that source code for the Program is available from such
95 | Contributor, and informs licensees how to obtain it in a reasonable manner on or
96 | through a medium customarily used for software exchange.
97 |
98 | When the Program is made available in source code form:
99 |
100 | a) it must be made available under this Agreement; and
101 |
102 | b) a copy of this Agreement must be included with each copy of the Program.
103 |
104 | Contributors may not remove or alter any copyright notices contained within the
105 | Program.
106 |
107 | Each Contributor must identify itself as the originator of its Contribution, if
108 | any, in a manner that reasonably allows subsequent Recipients to identify the
109 | originator of the Contribution.
110 |
111 | 4. COMMERCIAL DISTRIBUTION
112 |
113 | Commercial distributors of software may accept certain responsibilities with
114 | respect to end users, business partners and the like. While this license is
115 | intended to facilitate the commercial use of the Program, the Contributor who
116 | includes the Program in a commercial product offering should do so in a manner
117 | which does not create potential liability for other Contributors. Therefore, if
118 | a Contributor includes the Program in a commercial product offering, such
119 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
120 | every other Contributor ("Indemnified Contributor") against any losses, damages
121 | and costs (collectively "Losses") arising from claims, lawsuits and other legal
122 | actions brought by a third party against the Indemnified Contributor to the
123 | extent caused by the acts or omissions of such Commercial Contributor in
124 | connection with its distribution of the Program in a commercial product
125 | offering. The obligations in this section do not apply to any claims or Losses
126 | relating to any actual or alleged intellectual property infringement. In order
127 | to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
128 | Contributor in writing of such claim, and b) allow the Commercial Contributor to
129 | control, and cooperate with the Commercial Contributor in, the defense and any
130 | related settlement negotiations. The Indemnified Contributor may participate in
131 | any such claim at its own expense.
132 |
133 | For example, a Contributor might include the Program in a commercial product
134 | offering, Product X. That Contributor is then a Commercial Contributor. If that
135 | Commercial Contributor then makes performance claims, or offers warranties
136 | related to Product X, those performance claims and warranties are such
137 | Commercial Contributor's responsibility alone. Under this section, the
138 | Commercial Contributor would have to defend claims against the other
139 | Contributors related to those performance claims and warranties, and if a court
140 | requires any other Contributor to pay any damages as a result, the Commercial
141 | Contributor must pay those damages.
142 |
143 | 5. NO WARRANTY
144 |
145 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
146 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
147 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
148 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
149 | Recipient is solely responsible for determining the appropriateness of using and
150 | distributing the Program and assumes all risks associated with its exercise of
151 | rights under this Agreement, including but not limited to the risks and costs of
152 | program errors, compliance with applicable laws, damage to or loss of data,
153 | programs or equipment, and unavailability or interruption of operations.
154 |
155 | 6. DISCLAIMER OF LIABILITY
156 |
157 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
158 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
159 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
160 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
161 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
162 | OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
163 | GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
164 |
165 | 7. GENERAL
166 |
167 | If any provision of this Agreement is invalid or unenforceable under applicable
168 | law, it shall not affect the validity or enforceability of the remainder of the
169 | terms of this Agreement, and without further action by the parties hereto, such
170 | provision shall be reformed to the minimum extent necessary to make such
171 | provision valid and enforceable.
172 |
173 | If Recipient institutes patent litigation against a Contributor with respect to
174 | a patent applicable to software (including a cross-claim or counterclaim in a
175 | lawsuit), then any patent licenses granted by that Contributor to such Recipient
176 | under this Agreement shall terminate as of the date such litigation is filed. In
177 | addition, if Recipient institutes patent litigation against any entity
178 | (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
179 | itself (excluding combinations of the Program with other software or hardware)
180 | infringes such Recipient's patent(s), then such Recipient's rights granted under
181 | Section 2(b) shall terminate as of the date such litigation is filed.
182 |
183 | All Recipient's rights under this Agreement shall terminate if it fails to
184 | comply with any of the material terms or conditions of this Agreement and does
185 | not cure such failure in a reasonable period of time after becoming aware of
186 | such noncompliance. If all Recipient's rights under this Agreement terminate,
187 | Recipient agrees to cease use and distribution of the Program as soon as
188 | reasonably practicable. However, Recipient's obligations under this Agreement
189 | and any licenses granted by Recipient relating to the Program shall continue and
190 | survive.
191 |
192 | Everyone is permitted to copy and distribute copies of this Agreement, but in
193 | order to avoid inconsistency the Agreement is copyrighted and may only be
194 | modified in the following manner. The Agreement Steward reserves the right to
195 | publish new versions (including revisions) of this Agreement from time to time.
196 | No one other than the Agreement Steward has the right to modify this Agreement.
197 | IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
198 | as the Agreement Steward to a suitable separate entity. Each new version of the
199 | Agreement will be given a distinguishing version number. The Program (including
200 | Contributions) may always be distributed subject to the version of the Agreement
201 | under which it was received. In addition, after a new version of the Agreement
202 | is published, Contributor may elect to distribute the Program (including its
203 | Contributions) under the new version. Except as expressly stated in Sections
204 | 2(a) and 2(b) above, Recipient receives no rights or licenses to the
205 | intellectual property of any Contributor under this Agreement, whether
206 | expressly, by implication, estoppel or otherwise. All rights in the Program not
207 | expressly granted under this Agreement are reserved.
208 |
209 | This Agreement is governed by the laws of the State of New York and the
210 | intellectual property laws of the United States of America. No party to this
211 | Agreement will bring a legal action under this Agreement more than one year
212 | after the cause of action arose. Each party waives its rights to a jury trial in
213 | any resulting litigation.
214 |
--------------------------------------------------------------------------------
/run.cfm:
--------------------------------------------------------------------------------
1 |
4 |
5 | colddoc = createObject("component", "ColdDoc").init();
6 |
7 | strategy = createObject("component", "colddoc.strategy.api.HTMLAPIStrategy").init(expandPath("./docs"), "ColdDoc 1.0");
8 | colddoc.setStrategy(strategy);
9 |
10 | colddoc.generate(expandPath("/colddoc"), "colddoc");
11 |
12 |
13 |
34 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
35 |
36 | Link toNon-frame version.
37 |