martyr 0.1.74.pre → 0.1.75.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 670d8f39826b5c60a336507e4b99247887a10084
4
- data.tar.gz: bb92d66d4d29168f04f31b1e1ae2226b998db901
3
+ metadata.gz: 10fe0e6e8614ad4b1cf6162b6f7ab8c545f0822f
4
+ data.tar.gz: eb12527fd80462fa5c133df81c002aeb93141133
5
5
  SHA512:
6
- metadata.gz: 60d08e63b1d9c13bdcdee99edf2825aa49e5d650fcd9dd85eae4afb096a691cf888d3b38ebdde494dd7bc0f2c54e429b7e4d0c8bf3bde134afbfb9a9876f011d
7
- data.tar.gz: 54c32fa4a14c974e624f1b59f66698fdbdbb50fe171aac88c84fa3e3045452cd691dbf19604e977a8139edb0669f9084d3233cd13ac2012ae5aa3f231261ef0b
6
+ metadata.gz: c0befb1e08faeeec61c2b8a82d3142634eea69c4324433ed3fb40328af628ae69f2ec695d1e485de19a9131256771a6d7d73aabe94d96b01fd1cb22e90542bd8
7
+ data.tar.gz: a8cade10790f147c43f022aad9aae54335beeccdfbe7fd3d695676351c41715eeb0a625a270bc506fcc2e10b56be8e7d31a269d7dd8ed14f9295d1bdee3f7a7f
@@ -1,30 +1,32 @@
1
1
  module Martyr
2
- class BaseSliceDefinition
3
- include ActiveModel::Model
2
+ module Runtime
3
+ class BaseSliceDefinition
4
+ include ActiveModel::Model
4
5
 
5
- def initialize(*)
6
- super
7
- compile_operators
8
- end
6
+ def initialize(*)
7
+ super
8
+ compile_operators
9
+ end
9
10
 
10
- def null?
11
- !!@null
12
- end
11
+ def null?
12
+ !!@null
13
+ end
13
14
 
14
- def self.null
15
- obj = new
16
- obj.send(:set_null) and return obj
17
- end
15
+ def self.null
16
+ obj = new
17
+ obj.send(:set_null) and return obj
18
+ end
18
19
 
19
- protected
20
+ protected
20
21
 
21
- def set_null
22
- @null = true
23
- end
22
+ def set_null
23
+ @null = true
24
+ end
24
25
 
25
- def compile_operators
26
- raise NotImplementedError
27
- end
26
+ def compile_operators
27
+ raise NotImplementedError
28
+ end
28
29
 
30
+ end
29
31
  end
30
32
  end
@@ -1,120 +1,125 @@
1
1
  module Martyr
2
- # The conversion from and to interval sets is used for merging between data slices and memory slices.
3
- class MetricSliceDefinition < BaseSliceDefinition
2
+ module Runtime
4
3
 
5
- OPERATORS = [:gt, :lt, :gte, :lte, :eq, :not]
6
- attr_accessor :metric, *OPERATORS
4
+ # The conversion from and to interval sets is used for merging between data slices and memory slices.
5
+ class MetricSliceDefinition < BaseSliceDefinition
7
6
 
8
- def self.from_interval_set(interval_set)
9
- base = {metric: metric}
10
- new base.merge!(interval_set_to_hash(interval_set))
11
- end
7
+ OPERATORS = [:gt, :lt, :gte, :lte, :eq, :not]
8
+ attr_accessor :metric, *OPERATORS
12
9
 
13
- def to_hash
14
- {metric.id => OPERATORS.inject({}) { |h, op| send(op) ? h.merge!(op => send(op)) : h }}
15
- end
10
+ def self.from_interval_set(interval_set)
11
+ base = {metric: metric}
12
+ new base.merge!(interval_set_to_hash(interval_set))
13
+ end
16
14
 
17
- def merge(other)
18
- self.class.from_interval_set(to_interval_set.intersect(other.to_interval_set))
19
- end
15
+ def to_hash
16
+ {metric.id => OPERATORS.inject({}) { |h, op| send(op) ? h.merge!(op => send(op)) : h }}
17
+ end
20
18
 
21
- # @return [Array<Array<Hash>>]
22
- # Every element in the top level array is an array with "OR" statements.
23
- # The top level statements are to be combined with an "AND".
24
- #
25
- # Example:
26
- # [ [1,2,3], [4], [5] ]
27
- # # => "(1 OR 2 OR 3) AND (4) AND (5)"
28
- #
29
- def combined_statements
30
- statements = []
31
- statements << [{data_operator: gt_operator, memory_operator: gt_operator, value: gt_value}] if gt_operator
32
- statements << [{data_operator: lt_operator, memory_operator: lt_operator, value: lt_value}] if lt_operator
33
- statements << Array.wrap(eq).map {|value| {data_operator: '=', memory_operator: '==', value: value} } if eq
34
-
35
- Array.wrap(self.not).each do |value|
36
- statements << [{data_operator: '!=', memory_operator: '!=', value: value}]
19
+ def merge(other)
20
+ self.class.from_interval_set(to_interval_set.intersect(other.to_interval_set))
37
21
  end
38
22
 
39
- statements
40
- end
23
+ # @return [Array<Array<Hash>>]
24
+ # Every element in the top level array is an array with "OR" statements.
25
+ # The top level statements are to be combined with an "AND".
26
+ #
27
+ # Example:
28
+ # [ [1,2,3], [4], [5] ]
29
+ # # => "(1 OR 2 OR 3) AND (4) AND (5)"
30
+ #
31
+ def combined_statements
32
+ statements = []
33
+ statements << [{data_operator: gt_operator, memory_operator: gt_operator, value: gt_value}] if gt_operator
34
+ statements << [{data_operator: lt_operator, memory_operator: lt_operator, value: lt_value}] if lt_operator
35
+ statements << Array.wrap(eq).map { |value| {data_operator: '=', memory_operator: '==', value: value} } if eq
36
+
37
+ Array.wrap(self.not).each do |value|
38
+ statements << [{data_operator: '!=', memory_operator: '!=', value: value}]
39
+ end
40
+
41
+ statements
42
+ end
41
43
 
42
- protected
44
+ protected
43
45
 
44
- def compile_operators
45
- hash = interval_set_to_hash(to_interval_set)
46
- OPERATORS.each do |operator|
47
- instance_variable_set "@#{operator}", hash[operator]
46
+ def compile_operators
47
+ hash = interval_set_to_hash(to_interval_set)
48
+ OPERATORS.each do |operator|
49
+ instance_variable_set "@#{operator}", hash[operator]
50
+ end
51
+ set_null if hash.compact.empty?
48
52
  end
49
- set_null if hash.compact.empty?
50
- end
51
53
 
52
- def self.interval_set_to_hash(interval_set)
53
- return {} if interval_set.null?
54
- not_arr = interval_set.extract_and_fill_holes.presence
55
- eq_arr = interval_set.extract_and_remove_points.presence
56
- raise Internal::Error.new('Unexpected interval set format') unless interval_set.null? or interval_set.continuous?
54
+ def self.interval_set_to_hash(interval_set)
55
+ return {} if interval_set.null?
56
+ not_arr = interval_set.extract_and_fill_holes.presence
57
+ eq_arr = interval_set.extract_and_remove_points.presence
58
+ raise Internal::Error.new('Unexpected interval set format') unless interval_set.null? or interval_set.continuous?
57
59
 
58
- upper_point = interval_set.upper_bound
59
- lte = upper_point.x if upper_point.try(:closed?)
60
- lt = upper_point.x if upper_point.try(:open?)
60
+ upper_point = interval_set.upper_bound
61
+ lte = upper_point.x if upper_point.try(:closed?)
62
+ lt = upper_point.x if upper_point.try(:open?)
61
63
 
62
- lower_point = interval_set.lower_bound
63
- gte = lower_point.x if lower_point.try(:closed?)
64
- gt = lower_point.x if lower_point.try(:open?)
64
+ lower_point = interval_set.lower_bound
65
+ gte = lower_point.x if lower_point.try(:closed?)
66
+ gt = lower_point.x if lower_point.try(:open?)
65
67
 
66
- { not: not_arr, eq: eq_arr, lte: lte, lt: lt, gte: gte, gt: gt }
67
- end
68
- delegate :interval_set_to_hash, to: 'self.class'
69
-
70
- # Calculate each time to avoid messing up internal state
71
- def to_interval_set
72
- interval_set = IntervalSet.new.add
73
- merge_eq_interval_set(interval_set)
74
- merge_not_interval_set(interval_set)
75
- interval_set.intersect IntervalSet.new(to: lt) if lt
76
- interval_set.intersect IntervalSet.new(to: [lte]) if lte
77
- interval_set.intersect IntervalSet.new(from: gt) if gt
78
- interval_set.intersect IntervalSet.new(from: [gte]) if gte
79
- interval_set
80
- end
68
+ {not: not_arr, eq: eq_arr, lte: lte, lt: lt, gte: gte, gt: gt}
69
+ end
81
70
 
82
- def merge_eq_interval_set(interval_set)
83
- return unless eq.present?
84
- set = IntervalSet.new
85
- Array.wrap(eq).each {|x| set.add(from: [x], to: [x]) }
86
- interval_set.intersect(set)
87
- end
71
+ delegate :interval_set_to_hash, to: 'self.class'
72
+
73
+ # Calculate each time to avoid messing up internal state
74
+ def to_interval_set
75
+ interval_set = IntervalSet.new.add
76
+ merge_eq_interval_set(interval_set)
77
+ merge_not_interval_set(interval_set)
78
+ interval_set.intersect IntervalSet.new(to: lt) if lt
79
+ interval_set.intersect IntervalSet.new(to: [lte]) if lte
80
+ interval_set.intersect IntervalSet.new(from: gt) if gt
81
+ interval_set.intersect IntervalSet.new(from: [gte]) if gte
82
+ interval_set
83
+ end
88
84
 
89
- def merge_not_interval_set(interval_set)
90
- return unless self.not.present?
91
- Array.wrap(self.not).
92
- map {|x| IntervalSet.new(to: x).add(from: x) }.
93
- inject(interval_set) {|set, hole| set.intersect(hole)}
94
- end
85
+ def merge_eq_interval_set(interval_set)
86
+ return unless eq.present?
87
+ set = IntervalSet.new
88
+ Array.wrap(eq).each { |x| set.add(from: [x], to: [x]) }
89
+ interval_set.intersect(set)
90
+ end
95
91
 
96
- def gt_value
97
- gte || gt
98
- end
92
+ def merge_not_interval_set(interval_set)
93
+ return unless self.not.present?
94
+ Array.wrap(self.not).
95
+ map { |x| IntervalSet.new(to: x).add(from: x) }.
96
+ inject(interval_set) { |set, hole| set.intersect(hole) }
97
+ end
99
98
 
100
- def lt_value
101
- lte || lt
102
- end
99
+ def gt_value
100
+ gte || gt
101
+ end
103
102
 
104
- def gt_operator
105
- if gte.present?
106
- '>='
107
- elsif gt.present?
108
- '>'
103
+ def lt_value
104
+ lte || lt
109
105
  end
110
- end
111
106
 
112
- def lt_operator
113
- if lte.present?
114
- '<='
115
- elsif lt.present?
116
- '<'
107
+ def gt_operator
108
+ if gte.present?
109
+ '>='
110
+ elsif gt.present?
111
+ '>'
112
+ end
113
+ end
114
+
115
+ def lt_operator
116
+ if lte.present?
117
+ '<='
118
+ elsif lt.present?
119
+ '<'
120
+ end
117
121
  end
118
122
  end
119
123
  end
124
+
120
125
  end
@@ -1,26 +1,28 @@
1
1
  module Martyr
2
- class PlainDimensionLevelSliceDefinition < BaseSliceDefinition
2
+ module Runtime
3
+ class PlainDimensionLevelSliceDefinition < BaseSliceDefinition
3
4
 
4
- # @attribute level [BaseLevelDefinition]
5
- attr_accessor :level, :with
5
+ # @attribute level [BaseLevelDefinition]
6
+ attr_accessor :level, :with
6
7
 
7
- def to_hash
8
- {level.id => {with: with}}
9
- end
8
+ def to_hash
9
+ {level.id => {with: with}}
10
+ end
10
11
 
11
- def merge(other)
12
- raise Internal::Error.new('Cannot merge two different levels') unless level.id == other.level.id
13
- merged_with = with.present? && other.with.present? ? with & other.with : with + other.with
14
- self.class.new(level: level, with: merged_with)
15
- end
12
+ def merge(other)
13
+ raise Internal::Error.new('Cannot merge two different levels') unless level.id == other.level.id
14
+ merged_with = with.present? && other.with.present? ? with & other.with : with + other.with
15
+ self.class.new(level: level, with: merged_with)
16
+ end
16
17
 
17
- private
18
+ private
18
19
 
19
- def compile_operators
20
- @with = Array.wrap(@with).uniq
21
- set_null unless @with.present?
22
- end
20
+ def compile_operators
21
+ @with = Array.wrap(@with).uniq
22
+ set_null unless @with.present?
23
+ end
23
24
 
25
+ end
24
26
  end
25
- end
26
27
 
28
+ end
@@ -1,3 +1,3 @@
1
1
  module Martyr
2
- VERSION = "0.1.74.pre"
2
+ VERSION = "0.1.75.pre"
3
3
  end
data/lib/martyr.rb CHANGED
@@ -6,50 +6,111 @@ require 'active_support/core_ext'
6
6
  require 'active_model'
7
7
  require 'active_record'
8
8
 
9
- require 'martyr/helpers/translations'
10
- require 'martyr/runtime/slices/has_scoped_levels'
11
- require 'martyr/runtime/data_set/element_common'
12
-
13
- Dir.glob(File.expand_path '../martyr/helpers/*.rb', __FILE__).each{|x| require File.expand_path(x).split('.rb').first}
14
- Dir.glob(File.expand_path '../martyr/level_concern/*.rb', __FILE__).each{|x| require File.expand_path(x).split('.rb').first}
15
- Dir.glob(File.expand_path '../martyr/runtime/scope_operators/*.rb', __FILE__).each{|x| require File.expand_path(x).split('.rb').first}
16
- Dir.glob(File.expand_path '../martyr/**/*.rb', __FILE__).each{|x| require File.expand_path(x).split('.rb').first}
17
-
18
- # require 'martyr/base'
19
- # require 'martyr/errors'
20
- #
21
- # require 'martyr/schema/helpers/registrable'
22
- # require 'martyr/schema/helpers/has_scope'
23
- #
24
- # require 'martyr/schema/dimensions/dimension_definition'
25
- # require 'martyr/schema/dimensions/degenerate_dimension'
26
- # require 'martyr/schema/dimensions/query_dimension'
27
- # require 'martyr/schema/dimensions/time_dimension'
28
- # require 'martyr/schema/dimensions/dimension_definition_collection'
29
- # require 'martyr/schema/dimensions/shared_dimension_wrapper'
30
- # require 'martyr/schema/dimensions/level_collection'
31
- # require 'martyr/schema/dimensions/level'
32
- #
33
- # require 'martyr/schema/facts/fact_definition_collection'
34
- # require 'martyr/schema/facts/main_fact_scope'
35
- # require 'martyr/schema/facts/sub_fact_scope'
36
- #
37
- # require 'martyr/schema/metrics/built_in_metric'
38
- # require 'martyr/schema/metrics/custom_metric'
39
- # require 'martyr/schema/metrics/metric_definition_collection'
40
- #
41
- # require 'martyr/schema/rollups/custom_rollup'
42
- # require 'martyr/schema/rollups/rollup_definition_collection'
43
- #
44
- # require 'martyr/runtime/query/query_context'
45
- #
46
- # require 'martyr/runtime/slices/base_dimension_slice'
47
- # require 'martyr/runtime/slices/compound_slice'
48
- # require 'martyr/runtime/slices/degenerate_dimension_slice'
49
- # require 'martyr/runtime/slices/metric_slice'
50
- # require 'martyr/runtime/slices/query_dimension_slice'
51
- # require 'martyr/runtime/slices/time_dimension_slice'
9
+ require_relative 'martyr/errors'
52
10
 
53
11
  module Martyr
54
- # Your code goes here...
12
+ autoload :Translations, File.expand_path('lib/martyr/helpers/translations')
13
+ autoload :Delegators, File.expand_path('lib/martyr/helpers/delegators')
14
+ autoload :IntervalSet, File.expand_path('lib/martyr/helpers/intervals')
15
+ autoload :Interval, File.expand_path('lib/martyr/helpers/intervals')
16
+ autoload :PointInterval, File.expand_path('lib/martyr/helpers/intervals')
17
+ autoload :MetricIdStandardizer, File.expand_path('lib/martyr/helpers/metric_id_standardizer')
18
+ autoload :Registrable, File.expand_path('lib/martyr/helpers/registrable')
19
+ autoload :Sorter, File.expand_path('lib/martyr/helpers/sorter')
20
+
21
+ autoload :HasLevelCollection, File.expand_path('lib/martyr/level_concern/has_level_collection')
22
+ autoload :Level, File.expand_path('lib/martyr/level_concern/level')
23
+ autoload :LevelCollection, File.expand_path('lib/martyr/level_concern/level_collection')
24
+ autoload :LevelComparator, File.expand_path('lib/martyr/level_concern/level_comparator')
25
+ autoload :LevelDefinitionsByDimension, File.expand_path('lib/martyr/level_concern/level_definitions_by_dimension')
26
+
27
+ autoload :BaseCube, File.expand_path('lib/martyr/base_cube')
28
+ autoload :Cube, File.expand_path('lib/martyr/cube')
29
+ autoload :DimensionReference, File.expand_path('lib/martyr/dimension_reference')
30
+ autoload :VirtualCube, File.expand_path('lib/martyr/virtual_cube')
31
+
32
+ module Schema
33
+ autoload :DimensionAssociationCollection, File.expand_path('lib/martyr/schema/dimension_associations/dimension_association_collection')
34
+ autoload :LevelAssociation, File.expand_path('lib/martyr/schema/dimension_associations/level_association')
35
+ autoload :LevelAssociationCollection, File.expand_path('lib/martyr/schema/dimension_associations/level_association_collection')
36
+ autoload :DimensionDefinitionCollection, File.expand_path('lib/martyr/schema/dimensions/dimension_definition_collection')
37
+ autoload :PlainDimensionDefinition, File.expand_path('lib/martyr/schema/dimensions/plain_dimension_definition')
38
+ autoload :BaseFactDefinition, File.expand_path('lib/martyr/schema/facts/base_fact_definition')
39
+ autoload :FactDefinitionCollection, File.expand_path('lib/martyr/schema/facts/fact_definition_collection')
40
+ autoload :MainFactDefinition, File.expand_path('lib/martyr/schema/facts/main_fact_definition')
41
+ autoload :SubFactDefinition, File.expand_path('lib/martyr/schema/facts/sub_fact_definition')
42
+ autoload :BaseMetric, File.expand_path('lib/martyr/schema/metrics/base_metric')
43
+ autoload :BuiltInMetric, File.expand_path('lib/martyr/schema/metrics/built_in_metric')
44
+ autoload :CountDistinctMetric, File.expand_path('lib/martyr/schema/metrics/count_distinct_metric')
45
+ autoload :CustomMetric, File.expand_path('lib/martyr/schema/metrics/custom_metric')
46
+ autoload :CustomRollup, File.expand_path('lib/martyr/schema/metrics/custom_rollup')
47
+ autoload :DependencyInferrer, File.expand_path('lib/martyr/schema/metrics/dependency_inferrer')
48
+ autoload :MetricDefinitionCollection, File.expand_path('lib/martyr/schema/metrics/metric_definition_collection')
49
+ autoload :NamedScope, File.expand_path('lib/martyr/schema/named_scopes/named_scope')
50
+ autoload :NamedScopeCollection, File.expand_path('lib/martyr/schema/named_scopes/named_scope_collection')
51
+ autoload :BaseLevelDefinition, File.expand_path('lib/martyr/schema/plain_dimension_levels/base_level_definition')
52
+ autoload :DegenerateLevelDefinition, File.expand_path('lib/martyr/schema/plain_dimension_levels/degenerate_level_definition')
53
+ autoload :LevelDefinitionCollection, File.expand_path('lib/martyr/schema/plain_dimension_levels/level_definition_collection')
54
+ autoload :QueryLevelDefinition, File.expand_path('lib/martyr/schema/plain_dimension_levels/query_level_definition')
55
+ end
56
+
57
+ module Runtime
58
+ autoload :Coordinates, File.expand_path('lib/martyr/runtime/data_set/coordinates')
59
+ autoload :Element, File.expand_path('lib/martyr/runtime/data_set/element')
60
+ autoload :ElementCommon, File.expand_path('lib/martyr/runtime/data_set/element_common')
61
+ autoload :ElementLocator, File.expand_path('lib/martyr/runtime/data_set/element_locator')
62
+ autoload :Fact, File.expand_path('lib/martyr/runtime/data_set/fact')
63
+ autoload :FactIndexer, File.expand_path('lib/martyr/runtime/data_set/fact_indexer')
64
+ autoload :FutureFactValue, File.expand_path('lib/martyr/runtime/data_set/future_fact_value')
65
+ autoload :FutureMetric, File.expand_path('lib/martyr/runtime/data_set/future_metric')
66
+ autoload :VirtualElement, File.expand_path('lib/martyr/runtime/data_set/virtual_element')
67
+ autoload :VirtualElementsBuilder, File.expand_path('lib/martyr/runtime/data_set/virtual_elements_builder')
68
+ autoload :BaseLevelScope, File.expand_path('lib/martyr/runtime/dimension_scopes/base_level_scope')
69
+ autoload :DegenerateLevelScope, File.expand_path('lib/martyr/runtime/dimension_scopes/degenerate_level_scope')
70
+ autoload :DimensionScopeCollection, File.expand_path('lib/martyr/runtime/dimension_scopes/dimension_scope_collection')
71
+ autoload :LevelScopeCollection, File.expand_path('lib/martyr/runtime/dimension_scopes/level_scope_collection')
72
+ autoload :QueryLevelScope, File.expand_path('lib/martyr/runtime/dimension_scopes/query_level_scope')
73
+ autoload :BaseFactScope, File.expand_path('lib/martyr/runtime/fact_scopes/base_fact_scope')
74
+ autoload :FactScopeCollection, File.expand_path('lib/martyr/runtime/fact_scopes/fact_scope_collection')
75
+ autoload :MainFactScope, File.expand_path('lib/martyr/runtime/fact_scopes/main_fact_scope')
76
+ autoload :NullScope, File.expand_path('lib/martyr/runtime/fact_scopes/null_scope')
77
+ autoload :SubFactScope, File.expand_path('lib/martyr/runtime/fact_scopes/sub_fact_scope')
78
+ autoload :WrappedFactScope, File.expand_path('lib/martyr/runtime/fact_scopes/wrapped_fact_scope')
79
+ autoload :PivotAxis, File.expand_path('lib/martyr/runtime/pivot/pivot_axis')
80
+ autoload :PivotCell, File.expand_path('lib/martyr/runtime/pivot/pivot_cell')
81
+ autoload :PivotGrainElement, File.expand_path('lib/martyr/runtime/pivot/pivot_grain_element')
82
+ autoload :PivotRow, File.expand_path('lib/martyr/runtime/pivot/pivot_row')
83
+ autoload :PivotTable, File.expand_path('lib/martyr/runtime/pivot/pivot_table')
84
+ autoload :PivotTableBuilder, File.expand_path('lib/martyr/runtime/pivot/pivot_table_builder')
85
+ autoload :MetricDependencyResolver, File.expand_path('lib/martyr/runtime/query/metric_dependency_resolver')
86
+ autoload :QueryContext, File.expand_path('lib/martyr/runtime/query/query_context')
87
+ autoload :QueryContextBuilder, File.expand_path('lib/martyr/runtime/query/query_context_builder')
88
+ autoload :BaseOperator, File.expand_path('lib/martyr/runtime/scope_operators/base_operator')
89
+ autoload :GroupOperator, File.expand_path('lib/martyr/runtime/scope_operators/group_operator')
90
+ autoload :SelectOperatorForDimension, File.expand_path('lib/martyr/runtime/scope_operators/select_operator_for_dimension')
91
+ autoload :SelectOperatorForMetric, File.expand_path('lib/martyr/runtime/scope_operators/select_operator_for_metric')
92
+ autoload :WhereOperatorForDimension, File.expand_path('lib/martyr/runtime/scope_operators/where_operator_for_dimension')
93
+ autoload :WhereOperatorForMetric, File.expand_path('lib/martyr/runtime/scope_operators/where_operator_for_metric')
94
+ autoload :DataSlice, File.expand_path('lib/martyr/runtime/slices/data_slices/data_slice')
95
+ autoload :MetricDataSlice, File.expand_path('lib/martyr/runtime/slices/data_slices/metric_data_slice')
96
+ autoload :PlainDimensionDataSlice, File.expand_path('lib/martyr/runtime/slices/data_slices/plain_dimension_data_slice')
97
+ autoload :TimeDimensionDataSlice, File.expand_path('lib/martyr/runtime/slices/data_slices/time_dimension_data_slice')
98
+ autoload :HasScopedLevels, File.expand_path('lib/martyr/runtime/slices/has_scoped_levels')
99
+ autoload :MemorySlice, File.expand_path('lib/martyr/runtime/slices/memory_slices/memory_slice')
100
+ autoload :MetricMemorySlice, File.expand_path('lib/martyr/runtime/slices/memory_slices/metric_memory_slice')
101
+ autoload :PlainDimensionMemorySlice, File.expand_path('lib/martyr/runtime/slices/memory_slices/plain_dimension_memory_slice')
102
+ autoload :ScopeableSliceData, File.expand_path('lib/martyr/runtime/slices/scopeable_slice_data')
103
+ autoload :BaseSliceDefinition, File.expand_path('lib/martyr/runtime/slices/slice_definitions/base_slice_definition')
104
+ autoload :MetricSliceDefinition, File.expand_path('lib/martyr/runtime/slices/slice_definitions/metric_slice_definition')
105
+ autoload :PlainDimensionLevelSliceDefinition, File.expand_path('lib/martyr/runtime/slices/slice_definitions/plain_dimension_level_slice_definition')
106
+ autoload :QueryMetrics, File.expand_path('lib/martyr/runtime/sub_cubes/query_metrics')
107
+ autoload :SubCube, File.expand_path('lib/martyr/runtime/sub_cubes/sub_cube')
108
+ autoload :SubCubeGrain, File.expand_path('lib/martyr/runtime/sub_cubes/sub_cube_grain')
109
+
110
+ module FactFillerStrategies
111
+ autoload :DegenerateLevelAssociationFillerStrategy, File.expand_path('lib/martyr/runtime/sub_cubes/fact_filler_strategies')
112
+ autoload :QueryLevelAssociationFillerStrategy, File.expand_path('lib/martyr/runtime/sub_cubes/fact_filler_strategies')
113
+ autoload :UnassociatedLevelFillerStrategy, File.expand_path('lib/martyr/runtime/sub_cubes/fact_filler_strategies')
114
+ end
115
+ end
55
116
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: martyr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.74.pre
4
+ version: 0.1.75.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amit Aharoni