k_doc 0.0.28 → 0.0.36
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.builders/_.rb +1 -0
- data/.builders/boot.rb +90 -0
- data/.builders/generators/domain_diagram.rb +198 -0
- data/.builders/generators/project_plan.rb +42 -0
- data/.builders/setup.rb +14 -14
- data/.rubocop.yml +4 -0
- data/README.md +2 -1
- data/docs/class-diagram-dsl.png +0 -0
- data/docs/class-diagram.png +0 -0
- data/docs/domain-custom.drawio +97 -0
- data/docs/domain-custom.svg +1 -0
- data/docs/domain-modal.md +7 -0
- data/docs/domain.drawio +82 -0
- data/docs/domain_model.svg +3 -0
- data/docs/project-plan.drawio +29 -0
- data/docs/project-plan.md +24 -0
- data/docs/project_in_progress.svg +3 -0
- data/lib/k_doc/container.rb +1 -1
- data/lib/k_doc/fake_opinion.rb +0 -4
- data/lib/k_doc/mixins/block_processor.rb +166 -26
- data/lib/k_doc/mixins/guarded.rb +1 -1
- data/lib/k_doc/mixins/taggable.rb +2 -0
- data/lib/k_doc/model.rb +12 -19
- data/lib/k_doc/settings.rb +26 -35
- data/lib/k_doc/table.rb +35 -31
- data/lib/k_doc/version.rb +1 -1
- metadata +16 -6
- data/.builders/initializers/_.rb +0 -7
- data/.builders/initializers/configure_builder.rb +0 -38
- data/.builders/initializers/handlebars_helpers.rb +0 -27
- data/lib/k_doc/model_backup.rb +0 -191
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f4c4eb060f1bcac024d2a59e1984b6058d372d682afc0f3ec540e7e3ff9a440
|
4
|
+
data.tar.gz: 24c1f2a9d1f9f64e2cc54d96de97298f9ab0e8ad2a2a3c984c3071576f464394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff5e9407fdfb941a3c44aecd84a6f6993165a461c0fc61c91b2c919476a5ec5a535dfbc0b475067b409b8eb25c3826ec4465950a09c01b73cd79d6c69dce2aa5
|
7
|
+
data.tar.gz: 9389c343c78ff4e29986dba392d84741aad0ac00197aafc2c155e891865f9336501877e870ef464fff34f58c7efe351e68bb02a53abb49e046bbd78b311a90ff
|
data/.builders/_.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# require_relative './path/here'
|
data/.builders/boot.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# Boot Sequence
|
2
|
+
|
3
|
+
include KLog::Logging
|
4
|
+
|
5
|
+
CONFIG_KEY = :k_doc
|
6
|
+
|
7
|
+
log.kv 'working folder', Dir.pwd
|
8
|
+
|
9
|
+
Handlebars::Helpers.configure do |config|
|
10
|
+
config.helper_config_file = File.join(Gem.loaded_specs['handlebars-helpers'].full_gem_path, '.handlebars_helpers.json')
|
11
|
+
config.string_formatter_config_file = File.join(Gem.loaded_specs['handlebars-helpers'].full_gem_path, '.handlebars_string_formatters.json')
|
12
|
+
end
|
13
|
+
|
14
|
+
def camel
|
15
|
+
require 'handlebars/helpers/string_formatting/camel'
|
16
|
+
Handlebars::Helpers::StringFormatting::Camel.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def titleize
|
20
|
+
require 'handlebars/helpers/string_formatting/titleize'
|
21
|
+
Handlebars::Helpers::StringFormatting::Titleize.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def pluralize
|
25
|
+
require 'handlebars/helpers/inflection/pluralize'
|
26
|
+
Handlebars::Helpers::Inflection::Pluralize.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def singularize
|
30
|
+
require 'handlebars/helpers/inflection/singularize'
|
31
|
+
Handlebars::Helpers::Inflection::Singularize.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def dasherize
|
35
|
+
require 'handlebars/helpers/string_formatting/dasherize'
|
36
|
+
Handlebars::Helpers::StringFormatting::Dasherize.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def k_builder
|
40
|
+
@k_builder ||= KBuilder::BaseBuilder.init(KConfig.configuration(CONFIG_KEY))
|
41
|
+
end
|
42
|
+
|
43
|
+
KConfig.configure(CONFIG_KEY) do |config|
|
44
|
+
builder_folder = Dir.pwd
|
45
|
+
base_folder = File.expand_path('../', builder_folder)
|
46
|
+
global_template = File.expand_path('~/dev/kgems/k_templates/templates')
|
47
|
+
|
48
|
+
# Templates
|
49
|
+
config.template_folders.add(:global_template , global_template)
|
50
|
+
config.template_folders.add(:template , File.expand_path('.templates', Dir.pwd))
|
51
|
+
|
52
|
+
# Target Folders
|
53
|
+
config.target_folders.add(:app , base_folder)
|
54
|
+
config.target_folders.add(:docs , :app, 'docs')
|
55
|
+
config.target_folders.add(:lib , :app, 'lib', 'k_doc')
|
56
|
+
config.target_folders.add(:spec , :app, 'spec', 'k_doc')
|
57
|
+
config.target_folders.add(:builder , builder_folder)
|
58
|
+
config.target_folders.add(:data , :builder, '.data')
|
59
|
+
end
|
60
|
+
|
61
|
+
# Old config for k_doc
|
62
|
+
# KBuilder.reset(:gem)
|
63
|
+
# KConfig.configure(:gem) do |config|
|
64
|
+
# # config.template_folders.add(:global , '~/dev/kgems/k_templates/definitions/genesis')
|
65
|
+
# config.target_folders.add(:root , File.expand_path('..', Dir.getwd))
|
66
|
+
# config.target_folders.add(:lib , :root, 'lib', 'k_doc')
|
67
|
+
# config.target_folders.add(:spec , :root, 'spec', 'k_doc')
|
68
|
+
# end
|
69
|
+
|
70
|
+
# KBuilder.reset(:design_patterns)
|
71
|
+
# KConfig.configure(:design_patterns) do |config|
|
72
|
+
# config.template_folders.add(:global , '~/dev/kgems/k_templates/templates/ruby_design_patterns')
|
73
|
+
# config.target_folders.add(:root , File.expand_path('..', Dir.getwd))
|
74
|
+
# config.target_folders.add(:lib , :root, 'lib', 'k_doc')
|
75
|
+
# config.target_folders.add(:spec , :root, 'spec', 'k_doc')
|
76
|
+
# end
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
KConfig.configuration(CONFIG_KEY).debug
|
81
|
+
|
82
|
+
area = KManager.add_area(CONFIG_KEY)
|
83
|
+
resource_manager = area.resource_manager
|
84
|
+
resource_manager
|
85
|
+
.fileset
|
86
|
+
.glob('*.rb', exclude: ['boot.rb'])
|
87
|
+
.glob('generators/**/*.rb')
|
88
|
+
resource_manager.add_resources
|
89
|
+
|
90
|
+
KManager.boot
|
@@ -0,0 +1,198 @@
|
|
1
|
+
KManager.action :domain_diagram do
|
2
|
+
action do
|
3
|
+
|
4
|
+
DrawioDsl::Drawio
|
5
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
+
.diagram(theme: :style_04)
|
7
|
+
.page('Style-Plain', margin_left: 0, margin_top: 0, rounded: 0, background: '#fafafa') do
|
8
|
+
grid_layout(wrap_at: 6)
|
9
|
+
|
10
|
+
klass do
|
11
|
+
format
|
12
|
+
.header('Container', description: 'A container acts a base data object for any data that requires tagging')
|
13
|
+
end
|
14
|
+
interface(theme: :style_02) do
|
15
|
+
format
|
16
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
17
|
+
end
|
18
|
+
interface(theme: :style_02) do
|
19
|
+
format
|
20
|
+
.header('Composable Components', interface_type: 'MixIn')
|
21
|
+
end
|
22
|
+
interface(theme: :style_02) do
|
23
|
+
format
|
24
|
+
.header('Datum', interface_type: 'MixIn', description: 'Data acts as a base data object containers')
|
25
|
+
end
|
26
|
+
interface(theme: :style_02) do
|
27
|
+
format
|
28
|
+
.header('Guarded', interface_type: 'MixIn', description: 'Guarded provides parameter warning and guarding')
|
29
|
+
end
|
30
|
+
interface(theme: :style_02) do
|
31
|
+
format
|
32
|
+
.header('Taggable', interface_type: 'MixIn', description: 'Provide tagging functionality to the underlying model')
|
33
|
+
end
|
34
|
+
|
35
|
+
square(title: 'Documents', theme: :style_01)
|
36
|
+
klass do
|
37
|
+
format
|
38
|
+
.header('Action', description: 'Action is a DSL for modeling JSON data objects')
|
39
|
+
end
|
40
|
+
klass do
|
41
|
+
format
|
42
|
+
.header('Container', description: 'A container acts a base data object for any data that requires tagging')
|
43
|
+
.field(:context, type: :open_struct)
|
44
|
+
.field(:owner, type: :object)
|
45
|
+
.field(:default_container_type)
|
46
|
+
.field(:default_data_type)
|
47
|
+
end
|
48
|
+
klass do
|
49
|
+
format
|
50
|
+
.header('CSV Doc', description: 'CsvDoc is a DSL for modeling CSV data objects')
|
51
|
+
.field(:file, type: :string)
|
52
|
+
.field(:loaded?)
|
53
|
+
.method(:load)
|
54
|
+
end
|
55
|
+
klass do
|
56
|
+
format
|
57
|
+
.header('JSON Doc', description: 'JsonDoc is a DSL for modeling JSON data objects')
|
58
|
+
.field(:file, type: :string)
|
59
|
+
.field(:loaded?)
|
60
|
+
.method(:load)
|
61
|
+
end
|
62
|
+
klass do
|
63
|
+
format
|
64
|
+
.header('YAML Doc', description: 'YamlDoc is a DSL for modeling YAML data objects')
|
65
|
+
.field(:file, type: :string)
|
66
|
+
.field(:loaded?)
|
67
|
+
.method(:load)
|
68
|
+
end
|
69
|
+
klass do
|
70
|
+
format
|
71
|
+
.header('Model')
|
72
|
+
.field(:odata, type: :open_struct)
|
73
|
+
.field(:oraw, type: :open_struct)
|
74
|
+
.method(:settings)
|
75
|
+
.method(:table)
|
76
|
+
end
|
77
|
+
klass do
|
78
|
+
format
|
79
|
+
.header('Settings')
|
80
|
+
.field(:parent, type: :object)
|
81
|
+
.field(:key, type: :string)
|
82
|
+
.field(:decorators, type: :array)
|
83
|
+
.field(:block, type: :proc)
|
84
|
+
.field(:context)
|
85
|
+
.field(:internal_data)
|
86
|
+
.method(:fire_eval)
|
87
|
+
end
|
88
|
+
klass do
|
89
|
+
format
|
90
|
+
.header('Table')
|
91
|
+
.field(:parent, type: :object)
|
92
|
+
.field(:key, type: :string)
|
93
|
+
.field(:decorators, type: :array)
|
94
|
+
.field(:block, type: :proc)
|
95
|
+
.field(:context)
|
96
|
+
.field(:internal_data)
|
97
|
+
.method(:fire_eval)
|
98
|
+
end
|
99
|
+
|
100
|
+
square(title: 'Mixins', theme: :style_01)
|
101
|
+
|
102
|
+
interface(theme: :style_02) do
|
103
|
+
format
|
104
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
105
|
+
.field(:block, type: :proc)
|
106
|
+
.field(:block_state, type: :symbol)
|
107
|
+
.field(:init_block, type: :proc)
|
108
|
+
.field(:action_block, type: :proc)
|
109
|
+
.field(:children, type: :array)
|
110
|
+
.field(:depend_on_tags, type: :array)
|
111
|
+
.field(:dependents, type: :array)
|
112
|
+
.method(:depend_on)
|
113
|
+
.method(:resolve_dependency)
|
114
|
+
.method(:import)
|
115
|
+
.method(:import_data)
|
116
|
+
.method(:dependencies_met)
|
117
|
+
.method(:execute_block)
|
118
|
+
.method(:block_execute)
|
119
|
+
.method(:new)
|
120
|
+
.method(:evaluated)
|
121
|
+
.method(:initialized)
|
122
|
+
.method(:children_evaluated)
|
123
|
+
.method(:actioned)
|
124
|
+
.method(:fire_eval)
|
125
|
+
.method(:init)
|
126
|
+
.method(:fire_init)
|
127
|
+
.method(:add_child)
|
128
|
+
.method(:fire_children)
|
129
|
+
.method(:action)
|
130
|
+
.method(:fire_action)
|
131
|
+
end
|
132
|
+
interface(theme: :style_02) do
|
133
|
+
format
|
134
|
+
.header('Composable Components', interface_type: 'MixIn')
|
135
|
+
end
|
136
|
+
# # Data acts as a base data object containers
|
137
|
+
# module Datum
|
138
|
+
# def default_data_type
|
139
|
+
# def set_data(value, data_action: :replace)
|
140
|
+
interface(theme: :style_02) do
|
141
|
+
format
|
142
|
+
.header('Datum', interface_type: 'MixIn', description: 'Data acts as a base data object containers')
|
143
|
+
.field(:default_data_type)
|
144
|
+
.method(:set_data)
|
145
|
+
end
|
146
|
+
interface(theme: :style_02) do
|
147
|
+
format
|
148
|
+
.header('Guarded', interface_type: 'MixIn', description: 'Guarded provides parameter warning and guarding')
|
149
|
+
.field(:errors)
|
150
|
+
.field(:error_messages)
|
151
|
+
.field(:error_hash)
|
152
|
+
.field(:valid?)
|
153
|
+
.method(:guard)
|
154
|
+
.method(:warn)
|
155
|
+
end
|
156
|
+
interface(theme: :style_02) do
|
157
|
+
format
|
158
|
+
.header('Taggable', interface_type: 'MixIn', description: 'Provide tagging functionality to the underlying model')
|
159
|
+
.field(:tag_options)
|
160
|
+
.field(:tag)
|
161
|
+
.field(:key)
|
162
|
+
.field(:type)
|
163
|
+
.field(:project)
|
164
|
+
.field(:namespace)
|
165
|
+
end
|
166
|
+
|
167
|
+
square(title: 'Decorators', theme: :style_01)
|
168
|
+
|
169
|
+
klass do
|
170
|
+
format
|
171
|
+
.header('Settings Decorator')
|
172
|
+
end
|
173
|
+
klass do
|
174
|
+
format
|
175
|
+
.header('Table Decorator')
|
176
|
+
.method(:update)
|
177
|
+
.method(:update_fields)
|
178
|
+
.method(:update_rows)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
.cd(:docs)
|
182
|
+
.save('domain.drawio')
|
183
|
+
.export_svg('domain_model', page: 1)
|
184
|
+
|
185
|
+
# TODO: move to project-plan
|
186
|
+
# .save('./domain/domain.drawio')
|
187
|
+
# .export_svg('./domain/domain_model', page: 1)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
KManager.opts.app_name = 'domain_diagram'
|
192
|
+
KManager.opts.sleep = 2
|
193
|
+
KManager.opts.reboot_on_kill = 0
|
194
|
+
KManager.opts.reboot_sleep = 4
|
195
|
+
KManager.opts.exception_style = :short
|
196
|
+
KManager.opts.show.time_taken = true
|
197
|
+
KManager.opts.show.finished = true
|
198
|
+
KManager.opts.show.finished_message = 'FINISHED :)'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
KManager.action :project_plan do
|
2
|
+
action do
|
3
|
+
DrawioDsl::Drawio
|
4
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
5
|
+
.diagram(rounded: 1, glass: 1)
|
6
|
+
.page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
|
7
|
+
|
8
|
+
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
9
|
+
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan - In progress')
|
10
|
+
|
11
|
+
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
12
|
+
|
13
|
+
todo(title: 'create a domain model')
|
14
|
+
end
|
15
|
+
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
16
|
+
|
17
|
+
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
18
|
+
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan')
|
19
|
+
|
20
|
+
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
21
|
+
|
22
|
+
end
|
23
|
+
.page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
|
24
|
+
|
25
|
+
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
26
|
+
# p(x: 350, y: 40, w: 400, h: 80, title: 'Done')
|
27
|
+
|
28
|
+
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
29
|
+
|
30
|
+
end
|
31
|
+
.cd(:docs)
|
32
|
+
.save('project-plan.drawio')
|
33
|
+
.export_svg('project_in_progress', page: 1)
|
34
|
+
.export_svg('project_todo' , page: 2)
|
35
|
+
.export_svg('project_done' , page: 3)
|
36
|
+
|
37
|
+
# TODO: move to ./project-plan
|
38
|
+
# .save('project-plan/project.drawio')
|
39
|
+
# .export_svg('project-plan/project_in_progress', page: 1)
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
data/.builders/setup.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
require 'initializers/_'
|
2
|
-
require 'directors/_'
|
1
|
+
# require 'initializers/_'
|
2
|
+
# require 'directors/_'
|
3
3
|
|
4
|
-
klue
|
5
|
-
|
6
|
-
|
4
|
+
# klue
|
5
|
+
# .reset
|
6
|
+
# .register(:design_patterns , DesignPatternDirector)
|
7
7
|
|
8
|
-
klue
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
# klue
|
9
|
+
# .with(:design_patterns) do
|
10
|
+
# composite(
|
11
|
+
# relative_path: 'mixins',
|
12
|
+
# name: :composite_spec,
|
13
|
+
# namespace: 'KDoc',
|
14
|
+
# children_name: :child,
|
15
|
+
# children_name_plural: :children)
|
16
|
+
# end
|
17
17
|
|
18
18
|
puts '...'
|
data/.rubocop.yml
CHANGED
@@ -62,6 +62,10 @@ Metrics/ClassLength:
|
|
62
62
|
Metrics/ModuleLength:
|
63
63
|
Exclude:
|
64
64
|
- "**/spec/**/*"
|
65
|
+
- "lib/k_doc/mixins/block_processor.rb"
|
66
|
+
Naming/MethodParameterName:
|
67
|
+
AllowedNames:
|
68
|
+
- as
|
65
69
|
Naming/MemoizedInstanceVariableName:
|
66
70
|
Enabled: false
|
67
71
|
Naming/VariableNumber:
|
data/README.md
CHANGED
Binary file
|
Binary file
|
@@ -0,0 +1,97 @@
|
|
1
|
+
<mxfile host="65bd71144e">
|
2
|
+
<diagram id="OyH" name="Style-Plain">
|
3
|
+
<mxGraphModel dx="2147" dy="777" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#fafafa" math="0" shadow="0">
|
4
|
+
<root>
|
5
|
+
<mxCell id="page_root_OyH"/>
|
6
|
+
<mxCell id="node_root_OyH" parent="page_root_OyH"/>
|
7
|
+
<mxCell id="1" value="" style="group" parent="node_root_OyH" vertex="1" connectable="0">
|
8
|
+
<mxGeometry x="360" y="703" width="415" height="263" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="OyH-17" value="Decorators" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;verticalAlign=top;fontSize=30;" parent="1" vertex="1">
|
11
|
+
<mxGeometry width="415" height="263" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="SpUEBCKOFSfBhqVF4tDH-6" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Settings Decorator</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="1" vertex="1">
|
14
|
+
<mxGeometry x="29" y="69" width="160" height="160" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="SpUEBCKOFSfBhqVF4tDH-7" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Table Decorator</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">update()</p><p style="margin:0px;margin-left:4px;margin-top:4px">update_fields()</p><p style="margin:0px;margin-left:4px;margin-top:4px">update_rows()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="1" vertex="1">
|
17
|
+
<mxGeometry x="217" y="69" width="160" height="160" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
<mxCell id="15" value="" style="group" parent="node_root_OyH" vertex="1" connectable="0">
|
20
|
+
<mxGeometry x="29" y="655" width="232" height="306" as="geometry"/>
|
21
|
+
</mxCell>
|
22
|
+
<mxCell id="9" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Container</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="15" vertex="1">
|
23
|
+
<mxGeometry width="160" height="306" as="geometry"/>
|
24
|
+
</mxCell>
|
25
|
+
<mxCell id="10" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="15" vertex="1">
|
26
|
+
<mxGeometry x="72" y="37" width="160" height="52" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
<mxCell id="12" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Datum</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="15" vertex="1">
|
29
|
+
<mxGeometry x="72" y="103" width="160" height="54" as="geometry"/>
|
30
|
+
</mxCell>
|
31
|
+
<mxCell id="13" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Guarded</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="15" vertex="1">
|
32
|
+
<mxGeometry x="72" y="171" width="160" height="54" as="geometry"/>
|
33
|
+
</mxCell>
|
34
|
+
<mxCell id="14" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Taggable</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="15" vertex="1">
|
35
|
+
<mxGeometry x="72" y="239" width="160" height="54" as="geometry"/>
|
36
|
+
</mxCell>
|
37
|
+
<mxCell id="OyH-11" value="Mixins" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;verticalAlign=top;fontSize=30;" parent="node_root_OyH" vertex="1">
|
38
|
+
<mxGeometry x="28" y="997" width="767" height="244" as="geometry"/>
|
39
|
+
</mxCell>
|
40
|
+
<mxCell id="OyH-12" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">block_state: symbol</p><p style="margin:0px;margin-left:4px;margin-top:4px">init_block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">action_block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">children: array</p><p style="margin:0px;margin-left:4px;margin-top:4px">depend_on_tags: array</p><p style="margin:0px;margin-left:4px;margin-top:4px">dependents: array</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">depend_on()</p><p style="margin:0px;margin-left:4px;margin-top:4px">resolve_dependency()</p><p style="margin:0px;margin-left:4px;margin-top:4px">import()</p><p style="margin:0px;margin-left:4px;margin-top:4px">import_data()</p><p style="margin:0px;margin-left:4px;margin-top:4px">dependencies_met()</p><p style="margin:0px;margin-left:4px;margin-top:4px">execute_block()</p><p style="margin:0px;margin-left:4px;margin-top:4px">block_execute()</p><p style="margin:0px;margin-left:4px;margin-top:4px">new()</p><p style="margin:0px;margin-left:4px;margin-top:4px">evaluated()</p><p style="margin:0px;margin-left:4px;margin-top:4px">initialized()</p><p style="margin:0px;margin-left:4px;margin-top:4px">children_evaluated()</p><p style="margin:0px;margin-left:4px;margin-top:4px">actioned()</p><p style="margin:0px;margin-left:4px;margin-top:4px">fire_eval()</p><p style="margin:0px;margin-left:4px;margin-top:4px">init()</p><p style="margin:0px;margin-left:4px;margin-top:4px">fire_init()</p><p style="margin:0px;margin-left:4px;margin-top:4px">add_child()</p><p style="margin:0px;margin-left:4px;margin-top:4px">fire_children()</p><p style="margin:0px;margin-left:4px;margin-top:4px">action()</p><p style="margin:0px;margin-left:4px;margin-top:4px">fire_action()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
41
|
+
<mxGeometry x="54" y="1053" width="160" height="533" as="geometry"/>
|
42
|
+
</mxCell>
|
43
|
+
<mxCell id="OyH-14" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Datum</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">default_data_type</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">set_data()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
44
|
+
<mxGeometry x="240" y="1053" width="160" height="160" as="geometry"/>
|
45
|
+
</mxCell>
|
46
|
+
<mxCell id="OyH-15" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Guarded</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">errors</p><p style="margin:0px;margin-left:4px;margin-top:4px">error_messages</p><p style="margin:0px;margin-left:4px;margin-top:4px">error_hash</p><p style="margin:0px;margin-left:4px;margin-top:4px">valid?</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">guard()</p><p style="margin:0px;margin-left:4px;margin-top:4px">warn()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
47
|
+
<mxGeometry x="424" y="1053" width="160" height="160" as="geometry"/>
|
48
|
+
</mxCell>
|
49
|
+
<mxCell id="OyH-16" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Taggable</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">tag_options</p><p style="margin:0px;margin-left:4px;margin-top:4px">tag</p><p style="margin:0px;margin-left:4px;margin-top:4px">key</p><p style="margin:0px;margin-left:4px;margin-top:4px">type</p><p style="margin:0px;margin-left:4px;margin-top:4px">project</p><p style="margin:0px;margin-left:4px;margin-top:4px">namespace</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
50
|
+
<mxGeometry x="608" y="1053" width="160" height="160" as="geometry"/>
|
51
|
+
</mxCell>
|
52
|
+
<mxCell id="OyH-2" value="Documents" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;verticalAlign=top;fontSize=30;dashed=1;opacity=10;gradientColor=#ffffff;" parent="node_root_OyH" vertex="1">
|
53
|
+
<mxGeometry x="39" y="105" width="745" height="525" as="geometry"/>
|
54
|
+
</mxCell>
|
55
|
+
<mxCell id="16" style="html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;shape=link;fillColor=#f0a30a;strokeColor=#BD7000;elbow=vertical;edgeStyle=orthogonalEdgeStyle;startArrow=none;startFill=0;strokeWidth=1;shadow=0;rounded=1;sketch=1;" edge="1" parent="node_root_OyH" source="OyH-4" target="OyH-6">
|
56
|
+
<mxGeometry relative="1" as="geometry"/>
|
57
|
+
</mxCell>
|
58
|
+
<mxCell id="18" style="shape=link;rounded=1;sketch=1;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;startArrow=none;startFill=0;endArrow=classic;strokeColor=#BD7000;strokeWidth=1;fillColor=#f0a30a;elbow=vertical;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="node_root_OyH" source="OyH-4" target="OyH-8">
|
59
|
+
<mxGeometry relative="1" as="geometry"/>
|
60
|
+
</mxCell>
|
61
|
+
<mxCell id="21" style="edgeStyle=orthogonalEdgeStyle;shape=link;curved=1;rounded=1;sketch=1;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;shadow=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;startArrow=none;startFill=0;endArrow=classic;strokeColor=#BD7000;strokeWidth=1;fillColor=#f0a30a;elbow=vertical;" edge="1" parent="node_root_OyH" source="OyH-4" target="OyH-3">
|
62
|
+
<mxGeometry relative="1" as="geometry"/>
|
63
|
+
</mxCell>
|
64
|
+
<mxCell id="OyH-4" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Container</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">context: open_struct</p><p style="margin:0px;margin-left:4px;margin-top:4px">owner: object</p><p style="margin:0px;margin-left:4px;margin-top:4px">default_container_type</p><p style="margin:0px;margin-left:4px;margin-top:4px">default_data_type</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
65
|
+
<mxGeometry x="306" y="193" width="160" height="160" as="geometry"/>
|
66
|
+
</mxCell>
|
67
|
+
<mxCell id="OyH-6" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>JSON Doc</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">file: string</p><p style="margin:0px;margin-left:4px;margin-top:4px">loaded?</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">load()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
68
|
+
<mxGeometry x="74" y="365" width="160" height="97" as="geometry"/>
|
69
|
+
</mxCell>
|
70
|
+
<mxCell id="19" style="edgeStyle=orthogonalEdgeStyle;shape=link;curved=1;rounded=1;sketch=1;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;startArrow=none;startFill=0;endArrow=classic;strokeColor=#BD7000;strokeWidth=1;fillColor=#f0a30a;elbow=vertical;" edge="1" parent="node_root_OyH" source="OyH-8" target="OyH-9">
|
71
|
+
<mxGeometry relative="1" as="geometry"/>
|
72
|
+
</mxCell>
|
73
|
+
<mxCell id="20" style="edgeStyle=orthogonalEdgeStyle;shape=link;curved=1;rounded=1;sketch=1;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;startArrow=none;startFill=0;endArrow=classic;strokeColor=#BD7000;strokeWidth=1;fillColor=#f0a30a;elbow=vertical;" edge="1" parent="node_root_OyH" source="OyH-8" target="OyH-10">
|
74
|
+
<mxGeometry relative="1" as="geometry"/>
|
75
|
+
</mxCell>
|
76
|
+
<mxCell id="OyH-8" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Model</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">odata: open_struct</p><p style="margin:0px;margin-left:4px;margin-top:4px">oraw: open_struct</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">settings()</p><p style="margin:0px;margin-left:4px;margin-top:4px">table()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
77
|
+
<mxGeometry x="523" y="193" width="160" height="160" as="geometry"/>
|
78
|
+
</mxCell>
|
79
|
+
<mxCell id="OyH-9" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Settings</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">parent: object</p><p style="margin:0px;margin-left:4px;margin-top:4px">key: string</p><p style="margin:0px;margin-left:4px;margin-top:4px">decorators: array</p><p style="margin:0px;margin-left:4px;margin-top:4px">block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">context</p><p style="margin:0px;margin-left:4px;margin-top:4px">internal_data</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">fire_eval()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
80
|
+
<mxGeometry x="433" y="420" width="160" height="170" as="geometry"/>
|
81
|
+
</mxCell>
|
82
|
+
<mxCell id="OyH-10" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Table</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">parent: object</p><p style="margin:0px;margin-left:4px;margin-top:4px">key: string</p><p style="margin:0px;margin-left:4px;margin-top:4px">decorators: array</p><p style="margin:0px;margin-left:4px;margin-top:4px">block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">context</p><p style="margin:0px;margin-left:4px;margin-top:4px">internal_data</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">fire_eval()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
83
|
+
<mxGeometry x="611" y="420" width="160" height="170" as="geometry"/>
|
84
|
+
</mxCell>
|
85
|
+
<mxCell id="OyH-5" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>CSV Doc</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">file: string</p><p style="margin:0px;margin-left:4px;margin-top:4px">loaded?</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">load()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
86
|
+
<mxGeometry x="142" y="403" width="160" height="99" as="geometry"/>
|
87
|
+
</mxCell>
|
88
|
+
<mxCell id="OyH-7" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>YAML Doc</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">file: string</p><p style="margin:0px;margin-left:4px;margin-top:4px">loaded?</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">load()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
89
|
+
<mxGeometry x="208" y="442" width="160" height="99" as="geometry"/>
|
90
|
+
</mxCell>
|
91
|
+
<mxCell id="OyH-3" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Action</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_OyH" vertex="1">
|
92
|
+
<mxGeometry x="74" y="190" width="160" height="56" as="geometry"/>
|
93
|
+
</mxCell>
|
94
|
+
</root>
|
95
|
+
</mxGraphModel>
|
96
|
+
</diagram>
|
97
|
+
</mxfile>
|