zenweb 2.18.1 → 3.0.0.b1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +18 -0
  3. data/.gemtest +0 -0
  4. data/History.txt +6 -0
  5. data/Manifest.txt +52 -50
  6. data/README.txt +27 -22
  7. data/Rakefile +8 -9
  8. data/example-site/.isolate.rb +8 -0
  9. data/example-site/Rakefile +32 -0
  10. data/example-site/_config.yml +3 -0
  11. data/example-site/_includes/analytics.html.erb +11 -0
  12. data/example-site/_includes/header.html.erb +3 -0
  13. data/example-site/_includes/page_list_item.html +5 -0
  14. data/example-site/_includes/post_list_item.html +5 -0
  15. data/example-site/_layouts/post.erb +13 -0
  16. data/example-site/_layouts/project.erb +39 -0
  17. data/example-site/_layouts/site.erb +62 -0
  18. data/example-site/about/index.html.md +8 -0
  19. data/example-site/atom.xml.erb +43 -0
  20. data/example-site/blog/2012-01-02-page1.html.md +5 -0
  21. data/example-site/blog/2012-01-03-page2.html.md +5 -0
  22. data/example-site/blog/2012-01-04-page3.html.md +5 -0
  23. data/example-site/blog/_config.yml +1 -0
  24. data/example-site/blog/index.html.erb +19 -0
  25. data/example-site/config.ru +33 -0
  26. data/example-site/css/colors.css.less +71 -0
  27. data/example-site/css/styles.css +223 -0
  28. data/example-site/css/syntax.css +171 -0
  29. data/example-site/img/bg.png +0 -0
  30. data/example-site/index.html.erb +27 -0
  31. data/example-site/js/jquery.js +154 -0
  32. data/example-site/js/site.js +37 -0
  33. data/example-site/pages/index.html.erb +17 -0
  34. data/example-site/pages/nonblogpage.html.md +8 -0
  35. data/example-site/projects/index.html.erb +18 -0
  36. data/example-site/projects/zenweb.html.erb +9 -0
  37. data/example-site/sitemap.xml.erb +24 -0
  38. data/lib/zenweb.rb +12 -0
  39. data/lib/zenweb/config.rb +126 -0
  40. data/lib/zenweb/extensions.rb +51 -0
  41. data/lib/zenweb/page.rb +409 -0
  42. data/lib/zenweb/plugins/disqus.rb +18 -0
  43. data/lib/zenweb/plugins/erb.rb +43 -0
  44. data/lib/zenweb/plugins/google.rb +20 -0
  45. data/lib/zenweb/plugins/less.rb +10 -0
  46. data/lib/zenweb/plugins/markdown.rb +121 -0
  47. data/lib/zenweb/site.rb +237 -0
  48. data/lib/zenweb/tasks.rake +165 -0
  49. data/test/helper.rb +53 -0
  50. data/test/test_zenweb_config.rb +90 -0
  51. data/test/test_zenweb_extensions.rb +33 -0
  52. data/test/test_zenweb_page.rb +381 -0
  53. data/test/test_zenweb_plugins_disqus.rb +41 -0
  54. data/test/test_zenweb_plugins_erb.rb +60 -0
  55. data/test/test_zenweb_plugins_google.rb +38 -0
  56. data/test/test_zenweb_plugins_less.rb +33 -0
  57. data/test/test_zenweb_plugins_markdown.rb +227 -0
  58. data/test/test_zenweb_site.rb +294 -0
  59. metadata +230 -86
  60. metadata.gz.sig +0 -0
  61. data/bin/zenweb +0 -27
  62. data/bin/zenwebpage +0 -66
  63. data/bin/zenwebsite +0 -39
  64. data/design/REQUIREMENTS.txt +0 -52
  65. data/design/ZENWEB_2.txt +0 -69
  66. data/design/heirarchy.png +0 -0
  67. data/design/heirarchy.tgif +0 -311
  68. data/docs/Customizing +0 -76
  69. data/docs/FAQ +0 -12
  70. data/docs/Features +0 -128
  71. data/docs/Presentation +0 -88
  72. data/docs/QuickStart +0 -32
  73. data/docs/Renderers +0 -85
  74. data/docs/SiteMap +0 -13
  75. data/docs/YourOwnWebsite +0 -32
  76. data/docs/index +0 -14
  77. data/docs/metadata.txt +0 -10
  78. data/lib/ZenWeb.rb +0 -850
  79. data/lib/ZenWeb/CalendarRenderer.rb +0 -162
  80. data/lib/ZenWeb/CompactRenderer.rb +0 -45
  81. data/lib/ZenWeb/CompositeRenderer.rb +0 -63
  82. data/lib/ZenWeb/FileAttachmentRenderer.rb +0 -57
  83. data/lib/ZenWeb/FooterRenderer.rb +0 -38
  84. data/lib/ZenWeb/GenericRenderer.rb +0 -143
  85. data/lib/ZenWeb/HeaderRenderer.rb +0 -52
  86. data/lib/ZenWeb/HtmlRenderer.rb +0 -81
  87. data/lib/ZenWeb/HtmlTableRenderer.rb +0 -94
  88. data/lib/ZenWeb/HtmlTemplateRenderer.rb +0 -173
  89. data/lib/ZenWeb/MetadataRenderer.rb +0 -83
  90. data/lib/ZenWeb/RelativeRenderer.rb +0 -97
  91. data/lib/ZenWeb/RubyCodeRenderer.rb +0 -56
  92. data/lib/ZenWeb/SitemapRenderer.rb +0 -56
  93. data/lib/ZenWeb/StandardRenderer.rb +0 -40
  94. data/lib/ZenWeb/StupidRenderer.rb +0 -91
  95. data/lib/ZenWeb/SubpageRenderer.rb +0 -45
  96. data/lib/ZenWeb/TextToHtmlRenderer.rb +0 -219
  97. data/lib/ZenWeb/TocRenderer.rb +0 -60
  98. data/lib/ZenWeb/XXXRenderer.rb +0 -32
  99. data/test/SiteMap +0 -14
  100. data/test/Something +0 -4
  101. data/test/include.txt +0 -3
  102. data/test/index +0 -8
  103. data/test/metadata.txt +0 -10
  104. data/test/ryand/SiteMap +0 -10
  105. data/test/ryand/blah +0 -4
  106. data/test/ryand/blah-blah +0 -4
  107. data/test/ryand/index +0 -52
  108. data/test/ryand/metadata.txt +0 -2
  109. data/test/ryand/stuff/index +0 -4
  110. data/test/test_zenweb.rb +0 -1619
data/bin/zenwebsite DELETED
@@ -1,39 +0,0 @@
1
- #!/usr/local/bin/ruby -w
2
-
3
- def usage
4
- puts "#{$0} dir"
5
- exit 1
6
- end
7
-
8
- def error(msg)
9
- $stderr.puts(msg)
10
- exit 1
11
- end
12
-
13
- base = File.expand_path(File.dirname($0))
14
- path = ARGV.shift || usage()
15
-
16
- cmd = "#{base}/ZenWebpage.rb"
17
- unless test ?f, cmd then
18
- puts "Can't find ZenWebpage.rb in #{base}, falling back to PATH"
19
- cmd = "ZenWebpage.rb"
20
- end
21
-
22
- puts "Using #{cmd} to create files"
23
- puts "Creating directory #{File.basename(path)}"
24
-
25
- Dir.mkdir(path)
26
- Dir.chdir(path)
27
-
28
- system("#{base}/ZenWebpage.rb Makefile") or error("Failed: #{$?}")
29
-
30
- Dir.mkdir("data")
31
- Dir.chdir("data")
32
-
33
- system("#{base}/ZenWebpage.rb SiteMap SiteMap") or error("Failed: #{$?}")
34
- system("#{base}/ZenWebpage.rb metadata.txt") or error("Failed: #{$?}")
35
- system("#{base}/ZenWebpage.rb index Welcome") or error("Failed: #{$?}")
36
-
37
- Dir.chdir("..")
38
-
39
- system("make") or error("Failed: #{$?}")
@@ -1,52 +0,0 @@
1
- Requirements Document, Version 1.0.1,
2
- Created: 2001-01-17
3
- Modified: 2001-01-17
4
-
5
- + Must provide a generic architecture for generating a website from a
6
- file called a sitemap, and a directory of files that provide the
7
- content.
8
-
9
- + The sitemap consists of a list of urls and metadata.
10
-
11
- + The urls in the sitemap correspond to the files in the content
12
- directory.
13
-
14
- + The urls in the sitemap will also have an optional pagetype, which
15
- will dictate what will generate the page, and correspondingly, what
16
- the page will look like.
17
-
18
- + Another file, named Metadata.txt, contains metadata of it's own that
19
- is scoped to all files in the directory and below. This file may exist
20
- in any directory and will overlay the metadata defined in files in any
21
- parent directories.
22
-
23
- + A simple, default, markup scheme will be defined and will determine
24
- the overall structure of the page.
25
-
26
- + Embedded ruby should be evaluated and the result should be emitted
27
- into the resulting content.
28
-
29
- + Scope of Metadata:
30
-
31
- { Sitemap { Metadata.txt { Metadata.txt* { File }}}}
32
-
33
- + General Structure:
34
-
35
- data/
36
- SiteMap [ urls, pagetypes, metadata ]
37
- other content files
38
- Metadata.txt
39
- subdir/
40
- other content files
41
- Metadata.txt
42
-
43
- + General Algorithm:
44
-
45
- 1) Open Sitemap:
46
- 1) Read all urls:
47
- 1) Find page corresponding to url.
48
- 2) Open file.
49
- 3) Parse file, extracting metadata and content.
50
- 4) Based on current metadata, instantiate the correct type of page.
51
- 2) Generate a makefile OR dependency map.
52
- 3) Run make OR iterate over each page instance and IF it should be generated, generate it.
data/design/ZENWEB_2.txt DELETED
@@ -1,69 +0,0 @@
1
- # -*- outline -*-
2
-
3
- * ZenWeb 2.0 Planning:
4
-
5
- ** Requirements:
6
-
7
- *** Major
8
-
9
- These items are needed for betatesting.
10
-
11
- **** Sitemap
12
-
13
- Reads simple sitemap description file, from there generates website.
14
-
15
- Urls in sitemap must map to filesystem.
16
-
17
- Must deal with ~username urls correctly.
18
-
19
- Sitemap must give each document the knowedge of it's relatives (parent, children, siblings)
20
-
21
- **** Flexible metadata system
22
-
23
- Metadata must be available per directory, each child overlaying the parents.
24
-
25
- Metadata must be available per file, overlaying the directory.
26
-
27
- Metadata must be flexible, allowing for basically anything to be a value.
28
-
29
- Metadata will drive most of the process.
30
-
31
- **** Rendering Engine(s)
32
-
33
- System must allow for multiple rendering engines to be applied to any given datafile.
34
-
35
- Engines are specified by metadata.
36
-
37
- Example engines must be supplied:
38
- Raw
39
- text2html
40
- embedded ruby
41
- header/footer.
42
-
43
- *** Minor
44
-
45
- These items are not needed for betatesting, but should be implemented
46
- for final shipment.
47
-
48
- **** Differential Rendering
49
-
50
- Whatever generates the HTML should know about the structure and
51
- generate the minimum set necessary. This includes building parents,
52
- children, and immediate siblings ONLY when we actually need them
53
- built.
54
-
55
- Important relationships should be specified by metadata.
56
-
57
- **** Tools
58
-
59
- System could use sitemap and metadata to simply generate a makefile
60
- and execute it.
61
-
62
- Tool to find files not in sitemap.
63
-
64
- Tool to find files in sitemap, but not on filesystem. Generate
65
- template for quick prototyping of website.
66
-
67
- **** Extras
68
-
69
- Possibly design for live execution in server.
data/design/heirarchy.png DELETED
Binary file
@@ -1,311 +0,0 @@
1
- %TGIF 4.1.41
2
- state(0,37,100.000,0,0,0,16,1,9,2,2,0,0,1,0,1,1,'Courier',0,57600,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,0,0,2880,0).
3
- %
4
- % @(#)$Header$
5
- % %W%
6
- %
7
- unit("1 pixel/pixel").
8
- color_info(13,65535,0,[
9
- "magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
10
- "red", 65535, 0, 0, 65535, 0, 0, 1,
11
- "green", 0, 65535, 0, 0, 65535, 0, 1,
12
- "blue", 0, 0, 65535, 0, 0, 65535, 1,
13
- "yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
14
- "pink", 65535, 49931, 53052, 65535, 49344, 52171, 1,
15
- "cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
16
- "CadetBlue", 22885, 40569, 42649, 24415, 40606, 41120, 1,
17
- "white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
18
- "black", 0, 0, 0, 0, 0, 0, 1,
19
- "DarkSlateGray", 10402, 19764, 18724, 12079, 20303, 20303, 1,
20
- "#0000ff", 0, 0, 65535, 0, 0, 65280, 1,
21
- "#ff00ff", 65535, 0, 65535, 65280, 0, 65280, 1
22
- ]).
23
- script_frac("0.6").
24
- fg_bg_colors('black','white').
25
- dont_reencode("FFDingbests:ZapfDingbats").
26
- page(1,"",1,'').
27
- group([
28
- box('black','',32,32,544,352,2,1,1,161,0,0,0,0,0,'1',0,[
29
- ]),
30
- group([
31
- box('black','',304,144,400,176,2,1,1,0,0,0,0,0,0,'1',0,[
32
- ]),
33
- text('black',352,153,1,1,1,56,14,1,11,3,2,0,0,0,2,56,14,0,0,"",0,0,0,0,164,'',[
34
- minilines(56,14,0,0,1,0,0,[
35
- mini_line(56,11,3,0,0,0,[
36
- str_block(0,56,11,3,0,0,0,0,0,[
37
- str_seg('black','Courier',0,69120,56,11,3,0,0,0,0,0,0,0,
38
- "Metadata")])
39
- ])
40
- ])])
41
- ],
42
- 6,0,0,[
43
- ]),
44
- group([
45
- box('black','',432,48,528,80,2,1,1,11,0,0,0,0,0,'1',0,[
46
- ]),
47
- text('black',480,59,1,1,1,90,11,12,9,2,2,0,0,0,2,90,11,0,0,"",0,0,0,0,68,'',[
48
- minilines(90,11,0,0,1,0,0,[
49
- mini_line(90,9,2,0,0,0,[
50
- str_block(0,90,9,2,0,0,0,0,0,[
51
- str_seg('black','Courier',0,57600,90,9,2,0,0,0,0,0,0,0,
52
- "GenericRenderer")])
53
- ])
54
- ])])
55
- ],
56
- 10,0,0,[
57
- ]),
58
- group([
59
- box('black','',176,48,272,80,2,1,1,14,0,0,0,0,0,'1',0,[
60
- ]),
61
- text('black',224,57,1,1,1,77,14,15,11,3,2,0,0,0,2,77,14,0,0,"",0,0,0,0,68,'',[
62
- minilines(77,14,0,0,1,0,0,[
63
- mini_line(77,11,3,0,0,0,[
64
- str_block(0,77,11,3,0,0,0,0,0,[
65
- str_seg('black','Courier',0,69120,77,11,3,0,0,0,0,0,0,0,
66
- "ZenDocument")])
67
- ])
68
- ])])
69
- ],
70
- 13,0,0,[
71
- ]),
72
- group([
73
- box('black','',176,144,272,176,2,1,1,17,0,0,0,0,0,'1',0,[
74
- ]),
75
- text('black',224,153,1,1,1,70,14,18,11,3,2,0,0,0,2,70,14,0,0,"",0,0,0,0,164,'',[
76
- minilines(70,14,0,0,1,0,0,[
77
- mini_line(70,11,3,0,0,0,[
78
- str_block(0,70,11,3,0,-1,0,0,0,[
79
- str_seg('black','Courier',0,69120,70,11,3,0,-1,0,0,0,0,0,
80
- "ZenSitemap")])
81
- ])
82
- ])])
83
- ],
84
- 16,0,0,[
85
- ]),
86
- group([
87
- box('black','',48,48,144,80,2,1,1,20,0,0,0,0,0,'1',0,[
88
- ]),
89
- text('black',96,57,1,1,1,70,14,21,11,3,2,0,0,0,2,70,14,0,0,"",0,0,0,0,68,'',[
90
- minilines(70,14,0,0,1,0,0,[
91
- mini_line(70,11,3,0,0,0,[
92
- str_block(0,70,11,3,0,-1,0,0,0,[
93
- str_seg('black','Courier',0,69120,70,11,3,0,-1,0,0,0,0,0,
94
- "ZenWebsite")])
95
- ])
96
- ])])
97
- ],
98
- 19,0,0,[
99
- ]),
100
- poly('black','',2,[
101
- 224,144,224,80],1,1,1,31,0,2,0,0,0,0,0,'1',0,0,
102
- "0","",[
103
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
104
- ]),
105
- group([
106
- box('black','',304,48,400,80,2,1,1,40,0,0,0,0,0,'1',0,[
107
- ]),
108
- text('black',352,57,1,1,1,28,14,41,11,3,2,0,0,0,2,28,14,0,0,"",0,0,0,0,68,'',[
109
- minilines(28,14,0,0,1,0,0,[
110
- mini_line(28,11,3,0,0,0,[
111
- str_block(0,28,11,3,0,0,0,0,0,[
112
- str_seg('black','Courier',0,69120,28,11,3,0,0,0,0,0,0,0,
113
- "Hash")])
114
- ])
115
- ])])
116
- ],
117
- 39,0,0,[
118
- ]),
119
- poly('black','',2,[
120
- 352,144,352,80],1,1,1,56,0,2,0,0,0,0,0,'1',0,0,
121
- "0","",[
122
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
123
- ]),
124
- group([
125
- box('black','',432,144,528,176,2,1,1,59,0,0,0,0,0,'1',0,[
126
- ]),
127
- text('black',480,155,1,1,1,18,11,60,9,2,2,0,0,0,2,18,11,0,0,"",0,0,0,0,164,'',[
128
- minilines(18,11,0,0,1,0,0,[
129
- mini_line(18,9,2,0,0,0,[
130
- str_block(0,18,9,2,0,-3,0,0,0,[
131
- str_seg('black','Courier',0,57600,18,9,2,0,-3,0,0,0,0,0,
132
- "...")])
133
- ])
134
- ])])
135
- ],
136
- 58,0,0,[
137
- ]),
138
- poly('black','',2,[
139
- 480,144,480,80],1,1,1,66,0,2,0,0,0,0,0,'1',0,0,
140
- "0","",[
141
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
142
- ]),
143
- poly('black','',2,[
144
- 496,144,480,80],1,1,1,68,0,2,0,0,0,0,0,'1',0,0,
145
- "0","",[
146
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
147
- ]),
148
- poly('black','',2,[
149
- 464,144,480,80],1,1,1,69,0,2,0,0,0,0,0,'1',0,0,
150
- "0","",[
151
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
152
- ]),
153
- group([
154
- box('black','',400,304,496,336,2,1,1,73,0,0,0,0,0,'1',0,[
155
- ]),
156
- text('black',448,313,1,1,1,56,14,74,11,3,2,0,0,0,2,56,14,0,0,"",0,0,0,0,324,'',[
157
- minilines(56,14,0,0,1,0,0,[
158
- mini_line(56,11,3,0,0,0,[
159
- str_block(0,56,11,3,0,0,0,0,0,[
160
- str_seg('black','Courier',0,69120,56,11,3,0,0,0,0,0,0,0,
161
- "Metadata")])
162
- ])
163
- ])])
164
- ],
165
- 72,0,0,[
166
- ]),
167
- group([
168
- box('black','',80,304,176,336,2,1,1,76,0,0,0,0,0,'1',0,[
169
- ]),
170
- text('black',128,315,1,1,1,90,11,77,9,2,2,0,0,0,2,90,11,0,0,"",0,0,0,0,324,'',[
171
- minilines(90,11,0,0,1,0,0,[
172
- mini_line(90,9,2,0,0,0,[
173
- str_block(0,90,9,2,0,0,0,0,0,[
174
- str_seg('black','Courier',0,57600,90,9,2,0,0,0,0,0,0,0,
175
- "GenericRenderer")])
176
- ])
177
- ])])
178
- ],
179
- 75,0,0,[
180
- ]),
181
- group([
182
- box('black','',240,304,336,336,2,1,1,79,0,0,0,0,0,'1',0,[
183
- ]),
184
- text('black',288,313,1,1,1,77,14,80,11,3,2,0,0,0,2,77,14,0,0,"",0,0,0,0,324,'',[
185
- minilines(77,14,0,0,1,0,0,[
186
- mini_line(77,11,3,0,0,0,[
187
- str_block(0,77,11,3,0,0,0,0,0,[
188
- str_seg('black','Courier',0,69120,77,11,3,0,0,0,0,0,0,0,
189
- "ZenDocument")])
190
- ])
191
- ])])
192
- ],
193
- 78,0,0,[
194
- ]),
195
- group([
196
- box('black','',240,208,336,240,2,1,1,82,0,0,0,0,0,'1',0,[
197
- ]),
198
- text('black',288,217,1,1,1,70,14,83,11,3,2,0,0,0,2,70,14,0,0,"",0,0,0,0,228,'',[
199
- minilines(70,14,0,0,1,0,0,[
200
- mini_line(70,11,3,0,0,0,[
201
- str_block(0,70,11,3,0,-1,0,0,0,[
202
- str_seg('black','Courier',0,69120,70,11,3,0,-1,0,0,0,0,0,
203
- "ZenSitemap")])
204
- ])
205
- ])])
206
- ],
207
- 81,0,0,[
208
- ]),
209
- group([
210
- box('black','',80,208,176,240,2,1,1,85,0,0,0,0,0,'1',0,[
211
- ]),
212
- text('black',128,217,1,1,1,70,14,86,11,3,2,0,0,0,2,70,14,0,0,"",0,0,0,0,228,'',[
213
- minilines(70,14,0,0,1,0,0,[
214
- mini_line(70,11,3,0,0,0,[
215
- str_block(0,70,11,3,0,-1,0,0,0,[
216
- str_seg('black','Courier',0,69120,70,11,3,0,-1,0,0,0,0,0,
217
- "ZenWebsite")])
218
- ])
219
- ])])
220
- ],
221
- 84,0,0,[
222
- ]),
223
- poly('black','',2,[
224
- 288,304,288,240],2,1,1,87,0,2,0,0,0,0,0,'1',0,0,
225
- "0","",[
226
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
227
- ]),
228
- poly('black','',2,[
229
- 32,192,544,192],0,3,1,98,0,2,0,0,0,0,0,'3',0,0,
230
- "0","",[
231
- 0,12,5,0,'12','5','0'],[0,12,5,0,'12','5','0'],[
232
- ]),
233
- poly('black','',2,[
234
- 176,224,240,224],1,1,1,137,0,2,0,0,0,0,0,'1',0,0,
235
- "0","",[
236
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
237
- ]),
238
- text('black',207,232,1,1,1,30,11,142,9,2,2,0,0,0,2,30,11,0,0,"",0,0,0,0,241,'',[
239
- minilines(30,11,0,0,1,0,0,[
240
- mini_line(30,9,2,0,0,0,[
241
- str_block(0,30,9,2,0,0,0,0,0,[
242
- str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0,
243
- "has-a")])
244
- ])
245
- ])]),
246
- text('black',319,264,1,1,1,48,11,151,9,2,2,0,0,0,2,48,11,0,0,"",0,0,0,0,273,'',[
247
- minilines(48,11,0,0,1,0,0,[
248
- mini_line(48,9,2,0,0,0,[
249
- str_block(0,48,9,2,0,-1,0,0,0,[
250
- str_seg('black','Courier',0,57600,48,9,2,0,-1,0,0,0,0,0,
251
- "has-many")])
252
- ])
253
- ])]),
254
- poly('black','',2,[
255
- 128,240,128,304],1,1,1,152,0,2,0,0,0,0,0,'1',0,0,
256
- "0","",[
257
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
258
- ]),
259
- poly('black','',2,[
260
- 336,320,400,320],1,1,1,153,0,2,0,0,0,0,0,'1',0,0,
261
- "0","",[
262
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
263
- ]),
264
- text('black',143,264,1,1,1,24,11,156,9,2,2,0,0,0,2,24,11,0,0,"",0,0,0,0,273,'',[
265
- minilines(24,11,0,0,1,0,0,[
266
- mini_line(24,9,2,0,0,0,[
267
- str_block(0,24,9,2,0,-1,0,0,0,[
268
- str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0,
269
- "uses")])
270
- ])
271
- ])]),
272
- text('black',367,328,1,1,1,30,11,159,9,2,2,0,0,0,2,30,11,0,0,"",0,0,0,0,337,'',[
273
- minilines(30,11,0,0,1,0,0,[
274
- mini_line(30,9,2,0,0,0,[
275
- str_block(0,30,9,2,0,0,0,0,0,[
276
- str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0,
277
- "has-a")])
278
- ])
279
- ])]),
280
- text('black',96,151,1,1,1,54,11,375,9,2,2,0,0,0,2,54,11,0,0,"",0,0,0,0,160,'',[
281
- minilines(54,11,0,0,1,0,0,[
282
- mini_line(54,9,2,0,0,0,[
283
- str_block(0,54,9,2,0,-1,0,0,0,[
284
- str_seg('black','Courier',0,57600,54,9,2,0,-1,0,0,0,0,0,
285
- "heirarchy")])
286
- ])
287
- ])]),
288
- text('black',432,215,1,1,1,54,11,377,9,2,2,0,0,0,2,54,11,0,0,"",0,0,0,0,224,'',[
289
- minilines(54,11,0,0,1,0,0,[
290
- mini_line(54,9,2,0,0,0,[
291
- str_block(0,54,9,2,0,-1,0,0,0,[
292
- str_seg('black','Courier',0,57600,54,9,2,0,-1,0,0,0,0,0,
293
- "relations")])
294
- ])
295
- ])]),
296
- poly('black','',5,[
297
- 496,320,528,320,528,288,480,288,480,304],1,1,1,720,0,0,0,0,0,0,0,'1',0,0,
298
- "00","",[
299
- 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
300
- ]),
301
- text('black',511,264,1,1,1,30,11,726,9,2,2,0,0,0,2,30,11,0,0,"",0,0,0,0,273,'',[
302
- minilines(30,11,0,0,1,0,0,[
303
- mini_line(30,9,2,0,0,0,[
304
- str_block(0,30,9,2,0,0,0,0,0,[
305
- str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0,
306
- "has-a")])
307
- ])
308
- ])])
309
- ],
310
- 782,0,0,[
311
- ]).