Module: AngularSprinkles::Mixins::Controller

Defined in:
lib/angular_sprinkles/mixins/controller.rb

Instance Method Summary collapse

Instance Method Details

#initialize(*args) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/angular_sprinkles/mixins/controller.rb', line 4

def initialize(*args)
  key_generator = KeyGenerator.new({
    counter: Counter.new,
    cache: Cache.new
  })

  constructor_collection = ConstructorCollection.new({
    json_wrapper: JavaScript::ConstructorThis,
    object_wrapper: ObjectKeyWrapper
  })

  constructor = Constructor.new({
    json_wrapper: JavaScript::ConstructorWrapper,
    collection: constructor_collection
  })

  @_sprinkles = Context.new({
    key_generator: key_generator,
    constructor: constructor,
    constructor_collection: constructor_collection
  })

  super
end

#ng_bindable(object) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/angular_sprinkles/mixins/controller.rb', line 29

def ng_bindable(object)
  object = object.to_a if object.is_a?(::ActiveRecord::Relation)
  object.map!(&method(:ng_bindable)) if object.is_a?(Array)
  key = @_sprinkles.key_generator.call(object)
  @_sprinkles.constructor_collection.push(object, key)
  ModelDecorator.new({
    object: object,
    key: key,
    json_wrapper: JavaScript::BindVariable,
    object_wrapper: ObjectKeyWrapper
  })
end

#view_contextObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/angular_sprinkles/mixins/controller.rb', line 42

def view_context
  super.tap do |context|
    @_sprinkles.content_yielder = ContentYielder.new({
      cache: Cache.new,
      context: context,
      yield_to: JavaScript::PREFIX
    })
    @_sprinkles.content_yielder.call(@_sprinkles.constructor)
  end
end