ooze-parser 0.1.10 → 0.1.12

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +22 -0
  3. data/.rubocop.yml +102 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/README.md +23 -0
  7. data/lib/ooz/base/evolution.rb +2 -1
  8. data/lib/ooz/base/field/actions_list.rb +10 -0
  9. data/lib/ooz/base/field/checklist.rb +3 -2
  10. data/lib/ooz/base/field/contractor_entities.rb +15 -0
  11. data/lib/ooz/base/field/cross_reference.rb +3 -2
  12. data/lib/ooz/base/field/date.rb +4 -3
  13. data/lib/ooz/base/field/file.rb +3 -2
  14. data/lib/ooz/base/field/gauge.rb +3 -2
  15. data/lib/ooz/base/field/geo.rb +10 -0
  16. data/lib/ooz/base/field/image_gallery.rb +3 -2
  17. data/lib/ooz/base/field/mailbox.rb +10 -0
  18. data/lib/ooz/base/field/people.rb +5 -3
  19. data/lib/ooz/base/field/select.rb +18 -13
  20. data/lib/ooz/base/field.rb +30 -13
  21. data/lib/ooz/base/field_factory.rb +9 -3
  22. data/lib/ooz/base/force.rb +3 -3
  23. data/lib/ooz/base/genome.rb +14 -0
  24. data/lib/ooz/base/model.rb +16 -9
  25. data/lib/ooz/base/model_factory.rb +15 -11
  26. data/lib/ooz/base/ooze.rb +21 -9
  27. data/lib/ooz/base/stage/task/action_factory.rb +5 -2
  28. data/lib/ooz/base/stage/task/scheduled_callback.rb +2 -1
  29. data/lib/ooz/base/stage/task/strategy/direct.rb +1 -1
  30. data/lib/ooz/base/stage/task/strategy/editable.rb +1 -1
  31. data/lib/ooz/base/stage/task/strategy/prior.rb +1 -1
  32. data/lib/ooz/base/stage/task/strategy/prior_supervisor.rb +1 -1
  33. data/lib/ooz/base/stage/task/strategy.rb +9 -9
  34. data/lib/ooz/base/stage/task/strategy_factory.rb +8 -2
  35. data/lib/ooz/base/stage/task.rb +12 -11
  36. data/lib/ooz/base/stage.rb +4 -2
  37. data/lib/ooz/base.rb +1 -0
  38. data/lib/ooz/common/base_class.rb +15 -9
  39. data/lib/ooz/common/base_factory.rb +0 -3
  40. data/lib/ooz/common/base_model.rb +13 -8
  41. data/lib/ooz/common/hash_diff.rb +6 -4
  42. data/lib/ooz/model/evolution.rb +1 -2
  43. data/lib/ooz/model/field/actions_list.rb +15 -0
  44. data/lib/ooz/model/field/checklist/item.rb +5 -0
  45. data/lib/ooz/model/field/checklist.rb +7 -1
  46. data/lib/ooz/model/field/contractor_entities.rb +14 -0
  47. data/lib/ooz/model/field/cross_reference.rb +5 -0
  48. data/lib/ooz/model/field/date.rb +5 -0
  49. data/lib/ooz/model/field/file.rb +7 -1
  50. data/lib/ooz/model/field/gauge.rb +6 -0
  51. data/lib/ooz/model/field/geo.rb +15 -0
  52. data/lib/ooz/model/field/image_gallery.rb +7 -1
  53. data/lib/ooz/model/field/mailbox.rb +14 -0
  54. data/lib/ooz/model/field/number.rb +5 -0
  55. data/lib/ooz/model/field/people.rb +5 -0
  56. data/lib/ooz/model/field/plain_text.rb +5 -0
  57. data/lib/ooz/model/field/rich_text.rb +5 -0
  58. data/lib/ooz/model/field/select/option.rb +5 -0
  59. data/lib/ooz/model/field/select.rb +7 -1
  60. data/lib/ooz/model/field.rb +24 -14
  61. data/lib/ooz/model/field_factory.rb +1 -1
  62. data/lib/ooz/model/ooze.rb +48 -17
  63. data/lib/ooz/model/section.rb +1 -3
  64. data/lib/ooz/model/stage.rb +10 -2
  65. data/lib/ooz/version.rb +1 -1
  66. data/lib/ooze-parser.rb +1 -0
  67. data/ooze-parser.gemspec +18 -17
  68. metadata +22 -8
data/lib/ooz/base/ooze.rb CHANGED
@@ -8,23 +8,35 @@ module Ooz
8
8
 
9
9
  passthrough :_id, :template_id, :name, :organization_id, :patch_ver, to: :doc
10
10
  passthrough :created_at, :updated_at, :time_zone, to: :doc
11
+ passthrough :creator_id, :creator_name, to: :doc
11
12
  passthrough :state, :status, to: :doc
12
13
  passthrough :votes_enabled, :upvotes, :downvotes, to: :doc
13
- passthrough :tags, :compiled_tags, :base_tags, to: :doc
14
+
14
15
  passthrough :theme_id, :icon, :ss_error, to: :doc
15
16
  passthrough :disable_direct_permissions, :task_priority, to: :doc
16
17
 
17
- passthrough_cls :evolution, to: :doc, klass: :evolution_class
18
- passthrough_arr :flow_nodes, to: :doc, klass: :section_class
19
- passthrough_arr :membranes, to: :doc, klass: :field_factory_class
20
- passthrough_arr :forces, to: :doc, klass: :force_class
18
+ passthrough :tags, :compiled_tags, :base_tags, to: :doc
19
+ passthrough :auto_selected_locations, to: :doc
20
+ passthrough :location_ids, :other_tags, to: :doc
21
+ passthrough :location_propagation_store, to: :doc
21
22
 
22
- def initialize(*args)
23
- super(*args)
23
+ passthrough :forces_timed_out, to: :doc
24
24
 
25
- #pp evolution_class
26
- end
25
+ passthrough :permits, :contractor_permits, to: :doc
26
+ passthrough :geo_coordinates, to: :doc
27
+ passthrough :mould_counter, to: :doc
28
+ passthrough :_schedules, to: :doc
29
+ passthrough :update_histories, to: :doc
30
+ passthrough :cloned_ids_mapping, to: :doc
31
+
32
+ embedding_one :evolution, to: :doc, klass: :evolution_class
33
+ embedding_many :flow_nodes, to: :doc, klass: :section_class
34
+ embedding_many :membranes, to: :doc, klass: :field_factory_class
35
+ embedding_many :forces, to: :doc, klass: :force_class
27
36
 
37
+ def initialize(*args)
38
+ super
39
+ end
28
40
  end
29
41
  end
30
42
  end
@@ -3,8 +3,11 @@ module Ooz
3
3
  class Stage
4
4
  class Task
5
5
  class ActionFactory < ModelFactory
6
- def_parent_class Base::Stage::Task::Action
7
- def_white_classes "Reminder", "Escalate", "Tag"
6
+ parent_class_is Base::Stage::Task::Action
7
+
8
+ WHITE_CLASS = %w[Reminder Escalate Tag].freeze
9
+
10
+ white_classes_are(*WHITE_CLASS)
8
11
  end
9
12
  end
10
13
  end
@@ -4,9 +4,10 @@ module Ooz
4
4
  class Task
5
5
  class ScheduledCallback < Base::Model
6
6
  overridable_const :action_factory_class, Base::Stage::Task::ActionFactory
7
+
7
8
  passthrough :_id, :patch_ver, to: :doc
8
9
  passthrough :due_ctr, :due_unit, :recurs, :recurs_unit, :recurs_ctr, to: :doc
9
- passthrough_arr :actions, to: :doc, klass: action_factory_class
10
+ embedding_many :actions, to: :doc, klass: action_factory_class
10
11
  end
11
12
  end
12
13
  end
@@ -4,7 +4,7 @@ module Ooz
4
4
  class Task
5
5
  class Strategy
6
6
  class Direct < Strategy
7
- passthrough :user_ids, to: :doc
7
+ passthrough :user_ids, to: :doc
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Ooz
4
4
  class Task
5
5
  class Strategy
6
6
  class Editable < Strategy
7
- passthrough :number, to: :doc
7
+ passthrough :number, to: :doc
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Ooz
4
4
  class Task
5
5
  class Strategy
6
6
  class Prior < Strategy
7
- passthrough :prior_task_type, :stage_id, to: :doc
7
+ passthrough :prior_task_type, :stage_id, to: :doc
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Ooz
4
4
  class Task
5
5
  class Strategy
6
6
  class PriorSupervisor < Strategy
7
- passthrough :prior_task_type, :stage_id, to: :doc
7
+ passthrough :prior_task_type, :stage_id, to: :doc
8
8
  end
9
9
  end
10
10
  end
@@ -4,18 +4,18 @@ module Ooz
4
4
  class Task
5
5
  class Strategy < Base::Model
6
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
7
+
8
+ passthrough :_id, :_type, :order, :patch_ver, to: :doc
9
+ embedding_one :priorities, to: :doc, klass: priority_class
9
10
  end
10
11
  end
11
12
  end
12
13
  end
13
14
  end
14
15
 
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"
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'
@@ -3,8 +3,14 @@ module Ooz
3
3
  class Stage
4
4
  class Task
5
5
  class StrategyFactory < ModelFactory
6
- def_parent_class Base::Stage::Task::Strategy
7
- def_white_classes "Scheduler", "Prior", "PriorSupervisor", "Supervisor", "Editable", "Direct"
6
+ parent_class_is Base::Stage::Task::Strategy
7
+
8
+ WHITE_CLASS = %w[
9
+ Scheduler Prior PriorSupervisor Supervisor
10
+ Editable Direct
11
+ ].freeze
12
+
13
+ white_classes_are(*WHITE_CLASS)
8
14
  end
9
15
  end
10
16
  end
@@ -7,14 +7,14 @@ module Ooz
7
7
  end
8
8
  end
9
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"
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
18
 
19
19
  module Ooz
20
20
  module Base
@@ -22,11 +22,12 @@ module Ooz
22
22
  class Task
23
23
  overridable_const :strategy_class, Base::Stage::Task::StrategyFactory
24
24
  overridable_const :scheduled_callback_class, Base::Stage::Task::ScheduledCallback
25
+
25
26
  passthrough :_id, :_type, :patch_ver, to: :doc
26
27
  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
28
+ embedding_many :strategies, to: :doc, klass: :strategy_class
29
+ embedding_one :default_strategy, to: :doc, klass: :strategy_class
30
+ embedding_many :scheduled_callbacks, to: :doc, klass: :scheduled_callback_class
30
31
  end
31
32
  end
32
33
  end
@@ -21,8 +21,10 @@ module Ooz
21
21
  passthrough :disable_direct_permissions, :lock_after_completion, to: :doc
22
22
  passthrough :task_priority, to: :doc
23
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
24
+ passthrough :permits, :contractor_permits, to: :doc
25
+
26
+ embedding_one :completion_task_config, to: :doc, klass: :task_completion_class
27
+ embedding_one :review_task_config, to: :doc, klass: :task_review_class
26
28
  end
27
29
  end
28
30
  end
data/lib/ooz/base.rb CHANGED
@@ -5,6 +5,7 @@ end
5
5
 
6
6
  require_relative 'base/model'
7
7
  require_relative 'base/model_factory'
8
+ require_relative 'base/genome'
8
9
  require_relative 'base/field'
9
10
  require_relative 'base/field_factory'
10
11
  require_relative 'base/section'
@@ -2,12 +2,13 @@ module Ooz
2
2
  module Common
3
3
  class BaseClass
4
4
  class << self
5
-
6
- def overridable_const (method, value)
5
+ def overridable_const(method, value)
7
6
  method = method.to_s
7
+
8
8
  define_singleton_method method do
9
9
  value
10
10
  end
11
+
11
12
  define_method method do
12
13
  self.class.send(method)
13
14
  end
@@ -16,48 +17,53 @@ module Ooz
16
17
  def passthrough(*methods, to:)
17
18
  methods.each do |method|
18
19
  method = method.to_s
20
+
19
21
  define_method method do
20
22
  send(to)[method]
21
23
  end
24
+
22
25
  define_method "#{method}=" do |value|
23
26
  send(to)[method] = value
24
27
  end
25
28
  end
26
29
  end
27
30
 
28
- def passthrough_cls(method, to:, klass:)
31
+ def embedding_one(method, to:, klass:)
29
32
  method = method.to_s
30
- var = "@#{method}"
33
+ var = "@#{method}"
31
34
 
32
35
  define_method method do
33
36
  return instance_variable_get(var) if instance_variable_defined?(var)
37
+
34
38
  send(to)[method] = send(to)[method] || {}
35
39
 
36
- klass = klass.is_a?(Class)? klass : self.send(klass)
37
- obj = klass.new(send(to)[method], root: self)
40
+ klass = send(klass) unless klass.is_a?(Class)
41
+ obj = klass.new(send(to)[method], root: self)
42
+
38
43
  instance_variable_set(var, obj)
39
44
  obj
40
45
  end
41
46
  end
42
47
 
43
- def passthrough_arr(method, to:, klass:)
48
+ def embedding_many(method, to:, klass:)
44
49
  method = method.to_s
45
50
  var = "@#{method}"
46
51
 
47
52
  define_method method do
48
53
  return instance_variable_get(var) if instance_variable_defined?(var)
54
+
49
55
  send(to)[method] = send(to)[method] || []
50
56
 
51
- klass = klass.is_a?(Class)? klass : self.send(klass)
57
+ klass = send(klass) unless klass.is_a?(Class)
52
58
  arr = send(to)[method].map do |e|
53
59
  klass.new(e, root: self)
54
60
  end
61
+
55
62
  instance_variable_set(var, arr)
56
63
  arr
57
64
  end
58
65
  end
59
66
  end
60
-
61
67
  end
62
68
  end
63
69
  end
@@ -1,9 +1,6 @@
1
1
  module Ooz
2
2
  module Common
3
3
  class BaseFactory < BaseClass
4
- class << self
5
-
6
- end
7
4
  end
8
5
  end
9
6
  end
@@ -1,19 +1,24 @@
1
1
  module Ooz
2
2
  module Common
3
3
  class BaseModel < BaseClass
4
+ class << self
5
+ def build(doc = {})
6
+ new(doc).tap do |instance|
7
+ instance.instance_variable_set("@original_doc", {})
8
+ end
9
+ end
10
+ end
11
+
4
12
  attr_reader :doc
13
+
5
14
  def initialize(doc = {})
15
+ super()
16
+
6
17
  @doc = doc
7
18
  @original_doc = JSON.parse(doc.to_json)
8
19
  @last_change = {}
9
20
  end
10
21
 
11
- def self.build(doc = {})
12
- new(doc).tap do |instance|
13
- instance.instance_variable_set("@original_doc", {})
14
- end
15
- end
16
-
17
22
  def print
18
23
  puts JSON.pretty_generate(as_json)
19
24
  self
@@ -49,11 +54,11 @@ module Ooz
49
54
  end
50
55
 
51
56
  def update_last_change!
52
- last_chg = @last_change
57
+ last_chg = @last_change
53
58
  @last_change = as_update
59
+
54
60
  last_chg
55
61
  end
56
-
57
62
  end
58
63
  end
59
64
  end
@@ -1,26 +1,28 @@
1
1
  module Ooz
2
2
  module Common
3
3
  module HashDiff
4
- ID_KEYS = %w[_id]
4
+ ID_KEYS = %w[_id].freeze
5
5
 
6
6
  def self.diff(a, b)
7
7
  return a if a.class != b.class
8
+
8
9
  case a
9
10
  when Hash
10
11
  {}.tap do |diffed|
11
12
  a.each do |key, a_value|
12
13
  b_value = b[key]
13
14
  next if a_value == b_value && !ID_KEYS.include?(key)
15
+
14
16
  diffed[key] = diff(a_value, b_value)
15
17
  diffed.delete(key) if diffed[key] == {}
16
18
  end
19
+
17
20
  # All keys are IDs, so it's actually blank
18
- if (diffed.keys - ID_KEYS).empty?
19
- return {}
20
- end
21
+ return {} if (diffed.keys - ID_KEYS).empty?
21
22
  end
22
23
  when Array
23
24
  return a unless a.length == b.length
25
+
24
26
  a.map.with_index do |a_value, idx|
25
27
  b_value = b[idx]
26
28
  diff(a_value, b_value)
@@ -4,9 +4,8 @@ module Ooz
4
4
  overridable_const :stage_class, Model::Stage
5
5
 
6
6
  def initialize(*args)
7
- super(*args)
7
+ super
8
8
  end
9
-
10
9
  end
11
10
  end
12
11
  end
@@ -0,0 +1,15 @@
1
+ module Ooz
2
+ module Model
3
+ class Field
4
+ class ActionsList < Base::Field::ActionsList
5
+ include Methods
6
+
7
+ def clear
8
+ self.action_ids = []
9
+ self.action_recurrence_ids = []
10
+ super
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -6,6 +6,11 @@ module Ooz
6
6
  def field
7
7
  root
8
8
  end
9
+
10
+ def clear
11
+ self.checked = false
12
+ self
13
+ end
9
14
  end
10
15
  end
11
16
  end
@@ -7,14 +7,20 @@ module Ooz
7
7
  end
8
8
  end
9
9
 
10
- require_relative "checklist/item"
10
+ require_relative 'checklist/item'
11
11
 
12
12
  module Ooz
13
13
  module Model
14
14
  class Field
15
15
  class Checklist
16
16
  overridable_const :checklist_item_class, Model::Field::Checklist::Item
17
+
17
18
  include Methods
19
+
20
+ def clear
21
+ items.each(&:clear)
22
+ super
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -0,0 +1,14 @@
1
+ module Ooz
2
+ module Model
3
+ class Field
4
+ class ContractorEntities < Base::Field::ContractorEntities
5
+ include Methods
6
+
7
+ def clear
8
+ self.contractor_entities_ids = []
9
+ super
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class CrossReference < Base::Field::CrossReference
5
5
  include Methods
6
+
7
+ def clear
8
+ self.reference_ids = []
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class Date < Base::Field::Date
5
5
  include Methods
6
+
7
+ def clear
8
+ self.value = nil
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -7,14 +7,20 @@ module Ooz
7
7
  end
8
8
  end
9
9
 
10
- require_relative "file/file"
10
+ require_relative 'file/file'
11
11
 
12
12
  module Ooz
13
13
  module Model
14
14
  class Field
15
15
  class File
16
16
  overridable_const :file_class, Model::Field::File::File
17
+
17
18
  include Methods
19
+
20
+ def clear
21
+ doc['items'] = []
22
+ super
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -14,7 +14,13 @@ module Ooz
14
14
  class Field
15
15
  class Gauge
16
16
  overridable_const :gauge_stop_class, Model::Field::Gauge::Stop
17
+
17
18
  include Methods
19
+
20
+ def clear
21
+ self.value = nil
22
+ super
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -0,0 +1,15 @@
1
+ module Ooz
2
+ module Model
3
+ class Field
4
+ class Geo < Base::Field::Geo
5
+ include Methods
6
+
7
+ def clear
8
+ self.coordinates = {}
9
+ self.address = nil
10
+ super
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -7,14 +7,20 @@ module Ooz
7
7
  end
8
8
  end
9
9
 
10
- require_relative "image_gallery/image"
10
+ require_relative 'image_gallery/image'
11
11
 
12
12
  module Ooz
13
13
  module Model
14
14
  class Field
15
15
  class ImageGallery
16
16
  overridable_const :gauge_stop_class, Model::Field::Gauge::Stop
17
+
17
18
  include Methods
19
+
20
+ def clear
21
+ doc['images'] = []
22
+ super
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -0,0 +1,14 @@
1
+ module Ooz
2
+ module Model
3
+ class Field
4
+ class Mailbox < Base::Field::Mailbox
5
+ include Methods
6
+
7
+ def clear
8
+ self.email_ids = []
9
+ super
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class Number < Base::Field::Number
5
5
  include Methods
6
+
7
+ def clear
8
+ self.value = nil
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class People < Base::Field::People
5
5
  include Methods
6
+
7
+ def clear
8
+ self.people_ids = []
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class PlainText < Base::Field::PlainText
5
5
  include Methods
6
+
7
+ def clear
8
+ self.value = nil
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -3,6 +3,11 @@ module Ooz
3
3
  class Field
4
4
  class RichText < Base::Field::RichText
5
5
  include Methods
6
+
7
+ def clear
8
+ self.content = nil
9
+ super
10
+ end
6
11
  end
7
12
  end
8
13
  end
@@ -6,6 +6,11 @@ module Ooz
6
6
  def field
7
7
  root
8
8
  end
9
+
10
+ def clear
11
+ self.selected = false
12
+ self
13
+ end
9
14
  end
10
15
  end
11
16
  end