agt 0.0.1

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 (103) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +7 -0
  3. data/README.md +5 -0
  4. data/app/assets/javascripts/agt/config.coffee +9 -0
  5. data/app/assets/javascripts/agt/dom.coffee +12 -0
  6. data/app/assets/javascripts/agt/function.coffee +317 -0
  7. data/app/assets/javascripts/agt/geom/circle.coffee +338 -0
  8. data/app/assets/javascripts/agt/geom/cubic_bezier.coffee +37 -0
  9. data/app/assets/javascripts/agt/geom/diamond.coffee +241 -0
  10. data/app/assets/javascripts/agt/geom/ellipsis.coffee +141 -0
  11. data/app/assets/javascripts/agt/geom/linear_spline.coffee +56 -0
  12. data/app/assets/javascripts/agt/geom/matrix.coffee +240 -0
  13. data/app/assets/javascripts/agt/geom/mixins/geometry.coffee +171 -0
  14. data/app/assets/javascripts/agt/geom/mixins/intersections.coffee +150 -0
  15. data/app/assets/javascripts/agt/geom/mixins/path.coffee +145 -0
  16. data/app/assets/javascripts/agt/geom/mixins/proxyable.coffee +9 -0
  17. data/app/assets/javascripts/agt/geom/mixins/spline.coffee +329 -0
  18. data/app/assets/javascripts/agt/geom/mixins/surface.coffee +55 -0
  19. data/app/assets/javascripts/agt/geom/mixins/triangulable.coffee +112 -0
  20. data/app/assets/javascripts/agt/geom/point.coffee +454 -0
  21. data/app/assets/javascripts/agt/geom/polygon.coffee +119 -0
  22. data/app/assets/javascripts/agt/geom/quad_bezier.coffee +43 -0
  23. data/app/assets/javascripts/agt/geom/quint_bezier.coffee +42 -0
  24. data/app/assets/javascripts/agt/geom/rectangle.coffee +599 -0
  25. data/app/assets/javascripts/agt/geom/spiral.coffee +90 -0
  26. data/app/assets/javascripts/agt/geom/transformation_proxy.coffee +43 -0
  27. data/app/assets/javascripts/agt/geom/triangle.coffee +442 -0
  28. data/app/assets/javascripts/agt/impulse.coffee +105 -0
  29. data/app/assets/javascripts/agt/index.coffee +56 -0
  30. data/app/assets/javascripts/agt/inflector/inflection.coffee +21 -0
  31. data/app/assets/javascripts/agt/inflector/inflections.coffee +75 -0
  32. data/app/assets/javascripts/agt/inflector/inflector.coffee +235 -0
  33. data/app/assets/javascripts/agt/inheritance.coffee +132 -0
  34. data/app/assets/javascripts/agt/math.coffee +45 -0
  35. data/app/assets/javascripts/agt/mixins/activable.coffee +31 -0
  36. data/app/assets/javascripts/agt/mixins/aliasable.coffee +25 -0
  37. data/app/assets/javascripts/agt/mixins/alternate_case.coffee +72 -0
  38. data/app/assets/javascripts/agt/mixins/cloneable.coffee +71 -0
  39. data/app/assets/javascripts/agt/mixins/delegation.coffee +90 -0
  40. data/app/assets/javascripts/agt/mixins/disposable.coffee +7 -0
  41. data/app/assets/javascripts/agt/mixins/equatable.coffee +37 -0
  42. data/app/assets/javascripts/agt/mixins/formattable.coffee +52 -0
  43. data/app/assets/javascripts/agt/mixins/globalizable.coffee +175 -0
  44. data/app/assets/javascripts/agt/mixins/has_ancestors.coffee +47 -0
  45. data/app/assets/javascripts/agt/mixins/has_collection.coffee +107 -0
  46. data/app/assets/javascripts/agt/mixins/has_nested_collection.coffee +51 -0
  47. data/app/assets/javascripts/agt/mixins/memoizable.coffee +64 -0
  48. data/app/assets/javascripts/agt/mixins/parameterizable.coffee +101 -0
  49. data/app/assets/javascripts/agt/mixins/poolable.coffee +62 -0
  50. data/app/assets/javascripts/agt/mixins/sourcable.coffee +45 -0
  51. data/app/assets/javascripts/agt/mixins/state_machine.coffee +47 -0
  52. data/app/assets/javascripts/agt/net/router.coffee +165 -0
  53. data/app/assets/javascripts/agt/object.coffee +9 -0
  54. data/app/assets/javascripts/agt/particles/actions/base_action.coffee +7 -0
  55. data/app/assets/javascripts/agt/particles/actions/die_on_surface.coffee +14 -0
  56. data/app/assets/javascripts/agt/particles/actions/force.coffee +11 -0
  57. data/app/assets/javascripts/agt/particles/actions/friction.coffee +14 -0
  58. data/app/assets/javascripts/agt/particles/actions/live.coffee +9 -0
  59. data/app/assets/javascripts/agt/particles/actions/macro_action.coffee +13 -0
  60. data/app/assets/javascripts/agt/particles/actions/move.coffee +11 -0
  61. data/app/assets/javascripts/agt/particles/actions/null_action.coffee +9 -0
  62. data/app/assets/javascripts/agt/particles/counters/by_rate.coffee +17 -0
  63. data/app/assets/javascripts/agt/particles/counters/fixed.coffee +9 -0
  64. data/app/assets/javascripts/agt/particles/counters/null_counter.coffee +9 -0
  65. data/app/assets/javascripts/agt/particles/emission.coffee +35 -0
  66. data/app/assets/javascripts/agt/particles/emitters/null_emitter.coffee +7 -0
  67. data/app/assets/javascripts/agt/particles/emitters/path.coffee +10 -0
  68. data/app/assets/javascripts/agt/particles/emitters/ponctual.coffee +9 -0
  69. data/app/assets/javascripts/agt/particles/emitters/surface.coffee +10 -0
  70. data/app/assets/javascripts/agt/particles/initializers/explosion.coffee +19 -0
  71. data/app/assets/javascripts/agt/particles/initializers/life.coffee +16 -0
  72. data/app/assets/javascripts/agt/particles/initializers/macro_initializer.coffee +10 -0
  73. data/app/assets/javascripts/agt/particles/initializers/null_initializer.coffee +7 -0
  74. data/app/assets/javascripts/agt/particles/initializers/particle_sub_system.coffee +12 -0
  75. data/app/assets/javascripts/agt/particles/initializers/stream.coffee +20 -0
  76. data/app/assets/javascripts/agt/particles/mixins/randomizable.coffee +10 -0
  77. data/app/assets/javascripts/agt/particles/particle.coffee +32 -0
  78. data/app/assets/javascripts/agt/particles/sub_system.coffee +11 -0
  79. data/app/assets/javascripts/agt/particles/system.coffee +103 -0
  80. data/app/assets/javascripts/agt/particles/timers/instant.coffee +11 -0
  81. data/app/assets/javascripts/agt/particles/timers/limited.coffee +19 -0
  82. data/app/assets/javascripts/agt/particles/timers/null_timer.coffee +11 -0
  83. data/app/assets/javascripts/agt/particles/timers/unlimited.coffee +9 -0
  84. data/app/assets/javascripts/agt/particles/timers/until_death.coffee +11 -0
  85. data/app/assets/javascripts/agt/promise.coffee +214 -0
  86. data/app/assets/javascripts/agt/random/random.coffee +100 -0
  87. data/app/assets/javascripts/agt/random/seeds/lagged_fibonnacci.coffee +53 -0
  88. data/app/assets/javascripts/agt/random/seeds/linear.coffee +16 -0
  89. data/app/assets/javascripts/agt/random/seeds/linear_congruential.coffee +23 -0
  90. data/app/assets/javascripts/agt/random/seeds/math_random.coffee +9 -0
  91. data/app/assets/javascripts/agt/random/seeds/mersenne_twister.coffee +42 -0
  92. data/app/assets/javascripts/agt/random/seeds/no_random.coffee +12 -0
  93. data/app/assets/javascripts/agt/random/seeds/paul_houle.coffee +19 -0
  94. data/app/assets/javascripts/agt/signal.coffee +272 -0
  95. data/app/assets/javascripts/agt/sprites/animation.coffee +13 -0
  96. data/app/assets/javascripts/agt/sprites/sprite.coffee +30 -0
  97. data/app/assets/javascripts/agt/widgets/hash.coffee +36 -0
  98. data/app/assets/javascripts/agt/widgets/widgets.coffee +194 -0
  99. data/app/assets/javascripts/agt/widgets/widgets/checked_input.coffee +7 -0
  100. data/app/assets/javascripts/agt/widgets/widgets/focus_bubbling.coffee +15 -0
  101. data/lib/agt.rb +8 -0
  102. data/lib/agt/version.rb +5 -0
  103. metadata +173 -0
@@ -0,0 +1,194 @@
1
+ namespace('agt.widgets')
2
+
3
+ #
4
+ __widgets__ = {}
5
+
6
+ # The `__instances__` object stores the returned instances of the various widgets,
7
+ # stored by widget type and then mapped with their target DOM element as key.
8
+ __instances__ = {}
9
+
10
+ __subscriptions__ = {}
11
+
12
+ ### Public ###
13
+
14
+ # The `widgets` function is both the main module and the function
15
+ # used to register the widgets to apply on a page.
16
+ widgets = agt.widgets = (name, selector, options={}, block) ->
17
+ unless __widgets__[name]?
18
+ throw new Error "Unable to find widget '#{name}'"
19
+
20
+ # The options specific to the widget registration and activation are
21
+ # extracted from the options object.
22
+ events = options.on or 'init'
23
+ ifCondition = options.if
24
+ unlessCondition = options.unless
25
+ mediaCondition = options.media
26
+
27
+ delete options.on
28
+ delete options.if
29
+ delete options.unless
30
+ delete options.media
31
+
32
+ # Events can be passed as a string with event names separated with spaces.
33
+ events = events.split /\s+/g if typeof events is 'string'
34
+
35
+ # The widgets instances are stored in a Hash with the DOM element they
36
+ # target as key. The instances hashes are stored per widget type.
37
+ instances = __instances__[name] ||= new agt.widgets.Hash
38
+
39
+ # This method execute a test condition for the given element. The condition
40
+ # can be either a function or a value converted to boolean.
41
+ testCondition = (condition, element) ->
42
+ if typeof condition is 'function' then condition(element) else !!condition
43
+
44
+ # The DOM elements handled by a widget will receive a handled class
45
+ # to differenciate them from unhandled elements.
46
+ handledClass = "#{name}-handled"
47
+
48
+ # This method will test if an element can be handled by the current widget.
49
+ # It will test for both the handled class presence and the widget
50
+ # conditions. Note that if both the `if` and `unless` conditions
51
+ # are passed in the options object they will be tested as both part
52
+ # of a single `&&` condition.
53
+ canBeHandled = (element) ->
54
+ res = !element.classList.contains(handledClass)
55
+ res &&= testCondition(ifCondition, element) if ifCondition?
56
+ res &&= not testCondition(unlessCondition, element) if unlessCondition?
57
+ res
58
+
59
+ # If a media condition have been specified, the widget activation will be
60
+ # conditionned based on the result of this condition. The condition is
61
+ # verified each time the `resize` event is triggered.
62
+ if mediaCondition?
63
+ # The media condition can be either a boolean value, a function, or,
64
+ # to simply the setup, an object with `min` and `max` property containing
65
+ # the minimal and maximal window width where the widget is activated.
66
+ if typeof mediaCondition is 'object'
67
+ {min, max} = mediaCondition
68
+ mediaCondition = ->
69
+ res = true
70
+ res &&= window.innerWidth >= min if min?
71
+ res &&= window.innerWidth <= max if max?
72
+ res
73
+
74
+ # The media handler is registered on the `resize` event of the `window`
75
+ # object.
76
+ mediaHandler = (element, widget) ->
77
+ return unless widget?
78
+
79
+ condition_matched = testCondition(mediaCondition, element)
80
+
81
+ if condition_matched and not widget.active
82
+ widget.activate()
83
+ else if not condition_matched and widget.active
84
+ widget.deactivate()
85
+
86
+ window.addEventListener 'resize', ->
87
+ instances.eachPair (element, widget) ->
88
+ mediaHandler element, widget
89
+
90
+ # The `handler` function is the function registered on specified event and
91
+ # will proceed to the creation of the widgets if the conditions are met.
92
+ handler = ->
93
+ elements = document.querySelectorAll selector
94
+
95
+ Array::forEach.call elements, (element) ->
96
+ return unless canBeHandled element
97
+
98
+ widget = new agt.widgets.Widget(element)
99
+ args = [widget, element, Object.create(options), elements]
100
+ __widgets__[name].call(args...)
101
+ element.classList.add handledClass
102
+ instances.set element, widget
103
+
104
+ # The widgets activation state are resolved at creation
105
+ if mediaCondition?
106
+ mediaHandler(element, widget)
107
+ else
108
+ widget.activate()
109
+
110
+ document.dispatchEvent agt.domEvent("#{name}:handled", {element, widget})
111
+
112
+ block?.call element, element, widget
113
+
114
+ # For each event specified, the handler is registered as listener.
115
+ # A special case is the `init` event that simply mean to trigger the
116
+ # handler as soon a the function is called.
117
+ events.forEach (event) ->
118
+ switch event
119
+ when 'init' then handler()
120
+ when 'load', 'resize'
121
+ widgets.subscribe name, window, event, handler
122
+ else
123
+ widgets.subscribe name, document, event, handler
124
+
125
+ # The `widgets.define` is used to create a new widget usable through the
126
+ # `widgets` method. Basically, a widget is defined using a `name`, and a
127
+ # `block` function that will be called for each DOM elements targeted by
128
+ # the widget.
129
+ #
130
+ # The `block` function should have the following signature:
131
+ #
132
+ # function(element:HTMLElement, options:Object):Object
133
+ #
134
+ # The `options` object will contains all the options passed to the `widgets`
135
+ # method except the `on`, `if`, `unless` and `media` ones.
136
+ widgets.define = (name, block) -> __widgets__[name] = block
137
+
138
+ # A shorthand method to register a jQuery widget.
139
+ widgets.$define = (name, baseOptions={}, block) ->
140
+ [baseOptions, block] = [{}, baseOptions] if typeof baseOptions is 'function'
141
+ throw new Error "#{name} jquery widget isn't defined" unless $.fn[name]
142
+ __widgets__[name] = (element, options={}) ->
143
+ options[k] = v for k,v of baseOptions when not options[k]?
144
+ res = $(element)[name](options)
145
+ block?(res, options)
146
+
147
+ widgets.delete = (name) ->
148
+ __subscriptions__[name]?.forEach (subscription) -> subscription.off()
149
+ widgets.release(name)
150
+ delete __widgets__[name]
151
+
152
+ widgets.reset = (names...) ->
153
+ names = Object.keys(__instances__) if names.length is 0
154
+ widgets.delete(name) for name in names
155
+
156
+ widgets.widgetsFor = (element, widget) ->
157
+ if widget?
158
+ __instances__[widget].get(element)
159
+ else
160
+ instances.get(element) for instances in __instances__ when instances.hasKey(element)
161
+
162
+ widgets.subscribe = (name, to, evt, handler) ->
163
+ __subscriptions__[name] ||= []
164
+ to.addEventListener(evt, handler)
165
+ subscription = off: -> to.removeEventListener(evt, handler)
166
+ __subscriptions__[name].push subscription
167
+ subscription
168
+
169
+ # The `widgets.release` method can be used to completely remove the widgets
170
+ # of the given `name` from the page.
171
+ # It's the widget responsibility to clean up its dependencies during
172
+ # the `dispose` call.
173
+ widgets.release = (names...) ->
174
+ names = Object.keys(__instances__) if names.length is 0
175
+ for name in names
176
+ __instances__[name].each (value) -> value.dispose()
177
+
178
+ # Activates all the widgets instances of type `name`.
179
+ widgets.activate = (names...) ->
180
+ names = Object.keys(__instances__) if names.length is 0
181
+ for name in names
182
+ __instances__[name].each (value) -> value.activate()
183
+
184
+ # Deactivates all the widgets instances of type `name`.
185
+ widgets.deactivate = (names...) ->
186
+ names = Object.keys(__instances__) if names.length is 0
187
+ for name in names
188
+ __instances__[name].each (value) -> value.deactivate()
189
+
190
+ class agt.widgets.Widget
191
+ @include agt.mixins.Activable
192
+ @include agt.mixins.Disposable
193
+
194
+ constructor: (@element) ->
@@ -0,0 +1,7 @@
1
+ # Public: Decorates an input that support the `checked` property with
2
+ # a `checked` class whenever its property is `true`. It allows to have
3
+ # css rules on checked input on IE versions that doesn't support
4
+ # the `:checked` selector.
5
+ agt.widgets.define 'checked_input', (element) ->
6
+ element.addEventListener 'change', ->
7
+ element.classList.toggle 'checked', element.checked
@@ -0,0 +1,15 @@
1
+ # Public: This widgets decorates all the dom path until the current
2
+ # element with a `focus` class when the element have the focus.
3
+ agt.widgets.define 'bubbling_focus', (element) ->
4
+ blur = ->
5
+ Array::forEach.call document.querySelectorAll('.focus'), (el) ->
6
+ el.classList.remove('.focus')
7
+
8
+ element.addEventListener 'blur', -> blur()
9
+ element.addEventListener 'focus', ->
10
+ blur()
11
+ node = element
12
+ node.classList.add('focus')
13
+ while node.nodeName.toLowerCase() isnt 'html'
14
+ node = node.parentNode
15
+ node.classList.add('focus')
@@ -0,0 +1,8 @@
1
+ require "agt/version"
2
+
3
+ module Agt
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Agt
2
+ module Rails
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,173 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: agt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Cédric Néhémie
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Some game tools
42
+ email:
43
+ - cedric.nehemie@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/agt/version.rb
49
+ - lib/agt.rb
50
+ - app/assets/javascripts/agt/config.coffee
51
+ - app/assets/javascripts/agt/dom.coffee
52
+ - app/assets/javascripts/agt/function.coffee
53
+ - app/assets/javascripts/agt/geom/circle.coffee
54
+ - app/assets/javascripts/agt/geom/cubic_bezier.coffee
55
+ - app/assets/javascripts/agt/geom/diamond.coffee
56
+ - app/assets/javascripts/agt/geom/ellipsis.coffee
57
+ - app/assets/javascripts/agt/geom/linear_spline.coffee
58
+ - app/assets/javascripts/agt/geom/matrix.coffee
59
+ - app/assets/javascripts/agt/geom/mixins/geometry.coffee
60
+ - app/assets/javascripts/agt/geom/mixins/intersections.coffee
61
+ - app/assets/javascripts/agt/geom/mixins/path.coffee
62
+ - app/assets/javascripts/agt/geom/mixins/proxyable.coffee
63
+ - app/assets/javascripts/agt/geom/mixins/spline.coffee
64
+ - app/assets/javascripts/agt/geom/mixins/surface.coffee
65
+ - app/assets/javascripts/agt/geom/mixins/triangulable.coffee
66
+ - app/assets/javascripts/agt/geom/point.coffee
67
+ - app/assets/javascripts/agt/geom/polygon.coffee
68
+ - app/assets/javascripts/agt/geom/quad_bezier.coffee
69
+ - app/assets/javascripts/agt/geom/quint_bezier.coffee
70
+ - app/assets/javascripts/agt/geom/rectangle.coffee
71
+ - app/assets/javascripts/agt/geom/spiral.coffee
72
+ - app/assets/javascripts/agt/geom/transformation_proxy.coffee
73
+ - app/assets/javascripts/agt/geom/triangle.coffee
74
+ - app/assets/javascripts/agt/impulse.coffee
75
+ - app/assets/javascripts/agt/index.coffee
76
+ - app/assets/javascripts/agt/inflector/inflection.coffee
77
+ - app/assets/javascripts/agt/inflector/inflections.coffee
78
+ - app/assets/javascripts/agt/inflector/inflector.coffee
79
+ - app/assets/javascripts/agt/inheritance.coffee
80
+ - app/assets/javascripts/agt/math.coffee
81
+ - app/assets/javascripts/agt/mixins/activable.coffee
82
+ - app/assets/javascripts/agt/mixins/aliasable.coffee
83
+ - app/assets/javascripts/agt/mixins/alternate_case.coffee
84
+ - app/assets/javascripts/agt/mixins/cloneable.coffee
85
+ - app/assets/javascripts/agt/mixins/delegation.coffee
86
+ - app/assets/javascripts/agt/mixins/disposable.coffee
87
+ - app/assets/javascripts/agt/mixins/equatable.coffee
88
+ - app/assets/javascripts/agt/mixins/formattable.coffee
89
+ - app/assets/javascripts/agt/mixins/globalizable.coffee
90
+ - app/assets/javascripts/agt/mixins/has_ancestors.coffee
91
+ - app/assets/javascripts/agt/mixins/has_collection.coffee
92
+ - app/assets/javascripts/agt/mixins/has_nested_collection.coffee
93
+ - app/assets/javascripts/agt/mixins/memoizable.coffee
94
+ - app/assets/javascripts/agt/mixins/parameterizable.coffee
95
+ - app/assets/javascripts/agt/mixins/poolable.coffee
96
+ - app/assets/javascripts/agt/mixins/sourcable.coffee
97
+ - app/assets/javascripts/agt/mixins/state_machine.coffee
98
+ - app/assets/javascripts/agt/net/router.coffee
99
+ - app/assets/javascripts/agt/object.coffee
100
+ - app/assets/javascripts/agt/particles/actions/base_action.coffee
101
+ - app/assets/javascripts/agt/particles/actions/die_on_surface.coffee
102
+ - app/assets/javascripts/agt/particles/actions/force.coffee
103
+ - app/assets/javascripts/agt/particles/actions/friction.coffee
104
+ - app/assets/javascripts/agt/particles/actions/live.coffee
105
+ - app/assets/javascripts/agt/particles/actions/macro_action.coffee
106
+ - app/assets/javascripts/agt/particles/actions/move.coffee
107
+ - app/assets/javascripts/agt/particles/actions/null_action.coffee
108
+ - app/assets/javascripts/agt/particles/counters/by_rate.coffee
109
+ - app/assets/javascripts/agt/particles/counters/fixed.coffee
110
+ - app/assets/javascripts/agt/particles/counters/null_counter.coffee
111
+ - app/assets/javascripts/agt/particles/emission.coffee
112
+ - app/assets/javascripts/agt/particles/emitters/null_emitter.coffee
113
+ - app/assets/javascripts/agt/particles/emitters/path.coffee
114
+ - app/assets/javascripts/agt/particles/emitters/ponctual.coffee
115
+ - app/assets/javascripts/agt/particles/emitters/surface.coffee
116
+ - app/assets/javascripts/agt/particles/initializers/explosion.coffee
117
+ - app/assets/javascripts/agt/particles/initializers/life.coffee
118
+ - app/assets/javascripts/agt/particles/initializers/macro_initializer.coffee
119
+ - app/assets/javascripts/agt/particles/initializers/null_initializer.coffee
120
+ - app/assets/javascripts/agt/particles/initializers/particle_sub_system.coffee
121
+ - app/assets/javascripts/agt/particles/initializers/stream.coffee
122
+ - app/assets/javascripts/agt/particles/mixins/randomizable.coffee
123
+ - app/assets/javascripts/agt/particles/particle.coffee
124
+ - app/assets/javascripts/agt/particles/sub_system.coffee
125
+ - app/assets/javascripts/agt/particles/system.coffee
126
+ - app/assets/javascripts/agt/particles/timers/instant.coffee
127
+ - app/assets/javascripts/agt/particles/timers/limited.coffee
128
+ - app/assets/javascripts/agt/particles/timers/null_timer.coffee
129
+ - app/assets/javascripts/agt/particles/timers/unlimited.coffee
130
+ - app/assets/javascripts/agt/particles/timers/until_death.coffee
131
+ - app/assets/javascripts/agt/promise.coffee
132
+ - app/assets/javascripts/agt/random/random.coffee
133
+ - app/assets/javascripts/agt/random/seeds/lagged_fibonnacci.coffee
134
+ - app/assets/javascripts/agt/random/seeds/linear.coffee
135
+ - app/assets/javascripts/agt/random/seeds/linear_congruential.coffee
136
+ - app/assets/javascripts/agt/random/seeds/math_random.coffee
137
+ - app/assets/javascripts/agt/random/seeds/mersenne_twister.coffee
138
+ - app/assets/javascripts/agt/random/seeds/no_random.coffee
139
+ - app/assets/javascripts/agt/random/seeds/paul_houle.coffee
140
+ - app/assets/javascripts/agt/signal.coffee
141
+ - app/assets/javascripts/agt/sprites/animation.coffee
142
+ - app/assets/javascripts/agt/sprites/sprite.coffee
143
+ - app/assets/javascripts/agt/widgets/hash.coffee
144
+ - app/assets/javascripts/agt/widgets/widgets/checked_input.coffee
145
+ - app/assets/javascripts/agt/widgets/widgets/focus_bubbling.coffee
146
+ - app/assets/javascripts/agt/widgets/widgets.coffee
147
+ - LICENSE.md
148
+ - README.md
149
+ homepage: https://github.com/abe33/agt.git
150
+ licenses:
151
+ - MIT
152
+ metadata: {}
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ requirements: []
168
+ rubyforge_project:
169
+ rubygems_version: 2.0.3
170
+ signing_key:
171
+ specification_version: 4
172
+ summary: Some game tools
173
+ test_files: []