ooze-parser 0.1.7
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/LICENSE +21 -0
- data/lib/ooz/base/evolution.rb +9 -0
- data/lib/ooz/base/field/checklist/item.rb +12 -0
- data/lib/ooz/base/field/checklist.rb +22 -0
- data/lib/ooz/base/field/cross_reference.rb +10 -0
- data/lib/ooz/base/field/date.rb +11 -0
- data/lib/ooz/base/field/file/file.rb +11 -0
- data/lib/ooz/base/field/file.rb +21 -0
- data/lib/ooz/base/field/gauge/stop.rb +12 -0
- data/lib/ooz/base/field/gauge.rb +22 -0
- data/lib/ooz/base/field/image_gallery/image.rb +14 -0
- data/lib/ooz/base/field/image_gallery.rb +22 -0
- data/lib/ooz/base/field/number.rb +9 -0
- data/lib/ooz/base/field/people.rb +11 -0
- data/lib/ooz/base/field/plain_text.rb +9 -0
- data/lib/ooz/base/field/rich_text.rb +9 -0
- data/lib/ooz/base/field/select/option.rb +12 -0
- data/lib/ooz/base/field/select.rb +22 -0
- data/lib/ooz/base/field/tag_field.rb +9 -0
- data/lib/ooz/base/field/undefined.rb +8 -0
- data/lib/ooz/base/field.rb +24 -0
- data/lib/ooz/base/field_factory.rb +9 -0
- data/lib/ooz/base/force/binding.rb +10 -0
- data/lib/ooz/base/force.rb +20 -0
- data/lib/ooz/base/model.rb +37 -0
- data/lib/ooz/base/model_factory.rb +49 -0
- data/lib/ooz/base/ooze.rb +30 -0
- data/lib/ooz/base/section.rb +10 -0
- data/lib/ooz/base/stage/task/action/escalate.rb +12 -0
- data/lib/ooz/base/stage/task/action/reminder.rb +12 -0
- data/lib/ooz/base/stage/task/action/tag.rb +13 -0
- data/lib/ooz/base/stage/task/action.rb +27 -0
- data/lib/ooz/base/stage/task/action_factory.rb +12 -0
- data/lib/ooz/base/stage/task/completion.rb +10 -0
- data/lib/ooz/base/stage/task/priority.rb +11 -0
- data/lib/ooz/base/stage/task/review.rb +11 -0
- data/lib/ooz/base/stage/task/scheduled_callback.rb +14 -0
- data/lib/ooz/base/stage/task/strategy/direct.rb +13 -0
- data/lib/ooz/base/stage/task/strategy/editable.rb +13 -0
- data/lib/ooz/base/stage/task/strategy/prior.rb +13 -0
- data/lib/ooz/base/stage/task/strategy/prior_supervisor.rb +13 -0
- data/lib/ooz/base/stage/task/strategy/scheduler.rb +14 -0
- data/lib/ooz/base/stage/task/strategy/supervisor.rb +12 -0
- data/lib/ooz/base/stage/task/strategy.rb +21 -0
- data/lib/ooz/base/stage/task/strategy_factory.rb +12 -0
- data/lib/ooz/base/stage/task.rb +33 -0
- data/lib/ooz/base/stage.rb +28 -0
- data/lib/ooz/base.rb +14 -0
- data/lib/ooz/common/base_class.rb +63 -0
- data/lib/ooz/common/base_factory.rb +9 -0
- data/lib/ooz/common/base_model.rb +59 -0
- data/lib/ooz/common/hash_diff.rb +36 -0
- data/lib/ooz/common.rb +9 -0
- data/lib/ooz/model/evolution.rb +12 -0
- data/lib/ooz/model/field/checklist/item.rb +13 -0
- data/lib/ooz/model/field/checklist.rb +21 -0
- data/lib/ooz/model/field/cross_reference.rb +9 -0
- data/lib/ooz/model/field/date.rb +9 -0
- data/lib/ooz/model/field/file/file.rb +13 -0
- data/lib/ooz/model/field/file.rb +21 -0
- data/lib/ooz/model/field/gauge/stop.rb +13 -0
- data/lib/ooz/model/field/gauge.rb +21 -0
- data/lib/ooz/model/field/image_gallery/image.rb +13 -0
- data/lib/ooz/model/field/image_gallery.rb +21 -0
- data/lib/ooz/model/field/number.rb +9 -0
- data/lib/ooz/model/field/people.rb +9 -0
- data/lib/ooz/model/field/plain_text.rb +9 -0
- data/lib/ooz/model/field/rich_text.rb +9 -0
- data/lib/ooz/model/field/select/option.rb +13 -0
- data/lib/ooz/model/field/select.rb +21 -0
- data/lib/ooz/model/field/tag_field.rb +9 -0
- data/lib/ooz/model/field/undefined.rb +9 -0
- data/lib/ooz/model/field.rb +42 -0
- data/lib/ooz/model/field_factory.rb +7 -0
- data/lib/ooz/model/force/binding.rb +16 -0
- data/lib/ooz/model/force.rb +16 -0
- data/lib/ooz/model/ooze.rb +72 -0
- data/lib/ooz/model/section.rb +31 -0
- data/lib/ooz/model/stage.rb +18 -0
- data/lib/ooz/model.rb +12 -0
- data/lib/ooz/version.rb +3 -0
- data/lib/ooze-parser.rb +8 -0
- data/ooze-parser.gemspec +26 -0
- metadata +148 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Base
|
3
|
+
class Stage
|
4
|
+
class Task
|
5
|
+
class Strategy < Base::Model
|
6
|
+
overridable_const :priority_class, Base::Stage::Task::Priority
|
7
|
+
passthrough :_id, :_type, :order, :patch_ver, to: :doc
|
8
|
+
passthrough_cls :priorities, to: :doc, klass: priority_class
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
require_relative "strategy/scheduler"
|
17
|
+
require_relative "strategy/prior"
|
18
|
+
require_relative "strategy/prior_supervisor"
|
19
|
+
require_relative "strategy/supervisor"
|
20
|
+
require_relative "strategy/editable"
|
21
|
+
require_relative "strategy/direct"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Base
|
3
|
+
class Stage
|
4
|
+
class Task
|
5
|
+
class StrategyFactory < ModelFactory
|
6
|
+
def_parent_class Base::Stage::Task::Strategy
|
7
|
+
def_white_classes "Scheduler", "Prior", "PriorSupervisor", "Supervisor", "Editable", "Direct"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Base
|
3
|
+
class Stage
|
4
|
+
class Task < Base::Model
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "task/priority"
|
11
|
+
require_relative "task/strategy"
|
12
|
+
require_relative "task/strategy_factory"
|
13
|
+
require_relative "task/action"
|
14
|
+
require_relative "task/action_factory"
|
15
|
+
require_relative "task/scheduled_callback"
|
16
|
+
require_relative "task/completion"
|
17
|
+
require_relative "task/review"
|
18
|
+
|
19
|
+
module Ooz
|
20
|
+
module Base
|
21
|
+
class Stage
|
22
|
+
class Task
|
23
|
+
overridable_const :strategy_class, Base::Stage::Task::StrategyFactory
|
24
|
+
overridable_const :scheduled_callback_class, Base::Stage::Task::ScheduledCallback
|
25
|
+
passthrough :_id, :_type, :patch_ver, to: :doc
|
26
|
+
passthrough :due_enabled, :due_ctr, :due_unit, to: :doc
|
27
|
+
passthrough_arr :strategies, to: :doc, klass: :strategy_class
|
28
|
+
passthrough_cls :default_strategy, to: :doc, klass: :strategy_class
|
29
|
+
passthrough_arr :scheduled_callbacks, to: :doc, klass: :scheduled_callback_class
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Base
|
3
|
+
class Stage < Base::Model
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
require_relative "stage/task"
|
9
|
+
|
10
|
+
module Ooz
|
11
|
+
module Base
|
12
|
+
class Stage
|
13
|
+
overridable_const :task_completion_class, Base::Stage::Task::Completion
|
14
|
+
overridable_const :task_review_class, Base::Stage::Task::Review
|
15
|
+
|
16
|
+
passthrough :_id, :name, :ordering, :state, :patch_ver, to: :doc
|
17
|
+
passthrough :created_at, :updated_at, to: :doc
|
18
|
+
passthrough :creator_enabled, :creator_editable, to: :doc
|
19
|
+
passthrough :tags, :compiled_tags, to: :doc
|
20
|
+
passthrough :flow_node_ids, to: :doc
|
21
|
+
passthrough :disable_direct_permissions, :lock_after_completion, to: :doc
|
22
|
+
passthrough :task_priority, to: :doc
|
23
|
+
|
24
|
+
passthrough_cls :completion_task_config, to: :doc, klass: :task_completion_class
|
25
|
+
passthrough_cls :review_task_config, to: :doc, klass: :task_review_class
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/ooz/base.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Base
|
3
|
+
end
|
4
|
+
end
|
5
|
+
|
6
|
+
require_relative 'base/model'
|
7
|
+
require_relative 'base/model_factory'
|
8
|
+
require_relative 'base/field'
|
9
|
+
require_relative 'base/field_factory'
|
10
|
+
require_relative 'base/section'
|
11
|
+
require_relative 'base/stage'
|
12
|
+
require_relative 'base/evolution'
|
13
|
+
require_relative 'base/force'
|
14
|
+
require_relative 'base/ooze'
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Common
|
3
|
+
class BaseClass
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def overridable_const (method, value)
|
7
|
+
method = method.to_s
|
8
|
+
define_singleton_method method do
|
9
|
+
value
|
10
|
+
end
|
11
|
+
define_method method do
|
12
|
+
self.class.send(method)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def passthrough(*methods, to:)
|
17
|
+
methods.each do |method|
|
18
|
+
method = method.to_s
|
19
|
+
define_method method do
|
20
|
+
send(to)[method]
|
21
|
+
end
|
22
|
+
define_method "#{method}=" do |value|
|
23
|
+
send(to)[method] = value
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def passthrough_cls(method, to:, klass:)
|
29
|
+
method = method.to_s
|
30
|
+
var = "@#{method}"
|
31
|
+
|
32
|
+
define_method method do
|
33
|
+
return instance_variable_get(var) if instance_variable_defined?(var)
|
34
|
+
send(to)[method] = send(to)[method] || {}
|
35
|
+
|
36
|
+
klass = klass.is_a?(Class)? klass : self.send(klass)
|
37
|
+
obj = klass.new(send(to)[method], root: self)
|
38
|
+
instance_variable_set(var, obj)
|
39
|
+
obj
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def passthrough_arr(method, to:, klass:)
|
44
|
+
method = method.to_s
|
45
|
+
var = "@#{method}"
|
46
|
+
|
47
|
+
define_method method do
|
48
|
+
return instance_variable_get(var) if instance_variable_defined?(var)
|
49
|
+
send(to)[method] = send(to)[method] || []
|
50
|
+
|
51
|
+
klass = klass.is_a?(Class)? klass : self.send(klass)
|
52
|
+
arr = send(to)[method].map do |e|
|
53
|
+
klass.new(e, root: self)
|
54
|
+
end
|
55
|
+
instance_variable_set(var, arr)
|
56
|
+
arr
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Common
|
3
|
+
class BaseModel < BaseClass
|
4
|
+
attr_reader :doc
|
5
|
+
def initialize(doc = {})
|
6
|
+
@doc = doc
|
7
|
+
@original_doc = JSON.parse(doc.to_json)
|
8
|
+
@last_change = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.build(doc = {})
|
12
|
+
new(doc).tap do |instance|
|
13
|
+
instance.instance_variable_set("@original_doc", {})
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def print
|
18
|
+
puts JSON.pretty_generate(as_json)
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def as_json
|
23
|
+
doc
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_json(*args)
|
27
|
+
doc.to_json(*args)
|
28
|
+
end
|
29
|
+
|
30
|
+
def consolidate!
|
31
|
+
@original_doc = JSON.parse(@doc.to_json)
|
32
|
+
end
|
33
|
+
|
34
|
+
def undo!
|
35
|
+
@doc = JSON.parse(@original_doc.to_json)
|
36
|
+
end
|
37
|
+
|
38
|
+
def as_update
|
39
|
+
new_doc = as_json
|
40
|
+
Common::HashDiff.diff(new_doc, @original_doc)
|
41
|
+
end
|
42
|
+
|
43
|
+
def changed?
|
44
|
+
!as_update.empty?
|
45
|
+
end
|
46
|
+
|
47
|
+
def new_change?
|
48
|
+
!Common::HashDiff.diff(as_update, @last_change).empty?
|
49
|
+
end
|
50
|
+
|
51
|
+
def update_last_change!
|
52
|
+
last_chg = @last_change
|
53
|
+
@last_change = as_update
|
54
|
+
last_chg
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Common
|
3
|
+
module HashDiff
|
4
|
+
ID_KEYS = %w[_id]
|
5
|
+
|
6
|
+
def self.diff(a, b)
|
7
|
+
return a if a.class != b.class
|
8
|
+
case a
|
9
|
+
when Hash
|
10
|
+
{}.tap do |diffed|
|
11
|
+
a.each do |key, a_value|
|
12
|
+
b_value = b[key]
|
13
|
+
next if a_value == b_value && !ID_KEYS.include?(key)
|
14
|
+
diffed[key] = diff(a_value, b_value)
|
15
|
+
diffed.delete(key) if diffed[key] == {}
|
16
|
+
end
|
17
|
+
# All keys are IDs, so it's actually blank
|
18
|
+
if (diffed.keys - ID_KEYS).empty?
|
19
|
+
return {}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
when Array
|
23
|
+
return a unless a.length == b.length
|
24
|
+
a.map.with_index do |a_value, idx|
|
25
|
+
b_value = b[idx]
|
26
|
+
diff(a_value, b_value)
|
27
|
+
end.reject do |el|
|
28
|
+
el == {}
|
29
|
+
end
|
30
|
+
else
|
31
|
+
a
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/ooz/common.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Model
|
3
|
+
class Field
|
4
|
+
class Checklist < Base::Field::Checklist
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "checklist/item"
|
11
|
+
|
12
|
+
module Ooz
|
13
|
+
module Model
|
14
|
+
class Field
|
15
|
+
class Checklist
|
16
|
+
overridable_const :checklist_item_class, Model::Field::Checklist::Item
|
17
|
+
include Methods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Model
|
3
|
+
class Field
|
4
|
+
class File < Base::Field::File
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "file/file"
|
11
|
+
|
12
|
+
module Ooz
|
13
|
+
module Model
|
14
|
+
class Field
|
15
|
+
class File
|
16
|
+
overridable_const :file_class, Model::Field::File::File
|
17
|
+
include Methods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Model
|
3
|
+
class Field
|
4
|
+
class Gauge < Base::Field::Gauge
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "gauge/stop"
|
11
|
+
|
12
|
+
module Ooz
|
13
|
+
module Model
|
14
|
+
class Field
|
15
|
+
class Gauge
|
16
|
+
overridable_const :gauge_stop_class, Model::Field::Gauge::Stop
|
17
|
+
include Methods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Model
|
3
|
+
class Field
|
4
|
+
class ImageGallery < Base::Field::ImageGallery
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "image_gallery/image"
|
11
|
+
|
12
|
+
module Ooz
|
13
|
+
module Model
|
14
|
+
class Field
|
15
|
+
class ImageGallery
|
16
|
+
overridable_const :gauge_stop_class, Model::Field::Gauge::Stop
|
17
|
+
include Methods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ooz
|
2
|
+
module Model
|
3
|
+
class Field
|
4
|
+
class Select < Base::Field::Select
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative "select/option"
|
11
|
+
|
12
|
+
module Ooz
|
13
|
+
module Model
|
14
|
+
class Field
|
15
|
+
class Select
|
16
|
+
overridable_const :select_option, Model::Field::Select::Option
|
17
|
+
include Methods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|