muvment 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fbdd0a31ede1aa83116908c4f19edae94f52ae074b131d92c0bd14bf088b7f88
4
+ data.tar.gz: 070fee67e78f900d956a78f4de7f0f8e51bbbe947db93048111b5364ebca6f37
5
+ SHA512:
6
+ metadata.gz: fe40ecff7151849efb0b1d3ba1ad5b7b081174a87bad8b0810dc10660c19e86b43fd07498bc9f7120edde23896f4a7f6847af8a84c671872213943fa3b91e0f4
7
+ data.tar.gz: 87a81e1fc726c26141461f04b517e7e8806eff39f6f1f8bf43971da6e979f89bf531f48af54b92cdc57bfef872c6cf7e4bc10f1f3a693e2eed74abe056aaa6f8
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # Muvment
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/muvment`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'muvment'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install muvment
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/muvment. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
+
37
+ ## Code of Conduct
38
+
39
+ Everyone interacting in the Muvment project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/muvment/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
8
+ namespace :wrapper do
9
+ desc 'Wrap assets into this gem'
10
+ task wrap: :clean do
11
+ cp_r '../dist/.', 'app/assets/javascripts/'
12
+ end
13
+
14
+ task :clean do
15
+ rm_rf 'app'
16
+ mkdir_p 'app/assets/javascripts'
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ var muvment=function(t){var e={};function n(r){if(e[r])return e[r].exports;var s=e[r]={i:r,l:!1,exports:{}};return t[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(r,s,function(e){return t[e]}.bind(null,s));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e){function n(){}t.exports=class{constructor(t,e){this.movie=e,this.name=t,this.callbacks={end:n,start:n}}on(t,e){return this.callbacks[t]=e,this}onEnd(t){return this.on("end",t)}onEndSwitch(t,e){return this.onEnd(()=>t.switch(e))}onStart(t){return this.on("start",t)}play(t){return this.callbacks.start(),this.movie.play(t).then(this.callbacks.end.bind(this))}}},function(t,e,n){let r=n(2),s=n(3),o=n(0),i=n(4),a=n(5),u={};u.State=o,u.Scene=s,u.Clip=i,u.animation={sequence:function(t){return new r(t,(t,e)=>{let n=Promise.resolve();return t.forEach(t=>n=n.then(()=>t.play(e))),n})},oneOf:function(t){return new r(t,(t,e)=>t[Math.floor(Math.random()*t.length)].play(e))},addImage:function(t,e,n){let r=n+e+".svg";return t[e]?Promise.resolve():new Promise(n=>{a.get(r,s=>{let o=1e3*parseFloat(a(s).find("animate").attr("dur")||0,10);t[e]=new i(r,o),n()})})}},t.exports=u},function(t,e,n){let r=n(0);t.exports=class{constructor(t,e){this.clips=t,this.player=e}play(t){return this.player(this.clips,t)}asState(t){return new r(t,this)}}},function(t,e){t.exports=class{constructor(){this.states={}}addState(t){return this.currentState||(this.currentState=t),this.states[t.name]=t,this}switch(t){this.currentState=this.states[t],this.play()}play(t){this.currentState.play(t)}}},function(t,e,n){let r=n(0);t.exports=class{constructor(t,e){this.src=t,this.duration=e}play(t){return t.src=this.src,new Promise(t=>{setTimeout(t,this.duration)})}asState(t){return new r(t,this)}}},function(t,e){t.exports=jQuery}]);
2
+ //# sourceMappingURL=muvment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://muvment/webpack/bootstrap","webpack://muvment/./state.js","webpack://muvment/./index.js","webpack://muvment/./animation.js","webpack://muvment/./scene.js","webpack://muvment/./clip.js","webpack://muvment/external \"jQuery\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","noop","[object Object]","movie","this","callbacks","end","start","event","callback","on","character","stateName","onEnd","switch","image","play","then","Animation","Scene","State","Clip","$","muvment","animation","sequence","clips","where","accum","Promise","resolve","forEach","clip","oneOf","Math","floor","random","length","addImage","imageName","urlPrefix","url","data","duration","parseFloat","find","attr","player","states","state","currentState","src","setTimeout","jQuery"],"mappings":"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","file":"muvment.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","function noop() {};\n\nclass State {\n constructor(name, movie) {\n this.movie = movie;\n this.name = name;\n this.callbacks = {\n end: noop,\n start: noop\n };\n }\n\n on(event, callback) {\n this.callbacks[event] = callback;\n return this;\n };\n\n onEnd(callback) {\n return this.on('end', callback);\n };\n\n onEndSwitch(character, stateName) {\n return this.onEnd(() => {\n return character.switch(stateName);\n });\n };\n\n onStart(callback) {\n return this.on('start', callback);\n };\n\n play(image) {\n this.callbacks.start();\n return this.movie.play(image).then(this.callbacks.end.bind(this));\n };\n};\n\nmodule.exports = State;\n","let Animation = require('./animation')\nlet Scene = require('./scene')\nlet State = require('./state')\nlet Clip = require('./clip')\n\nlet $ = require('jquery')\n\nlet muvment = {};\n\nfunction sequence(clips) {\n return new Animation(clips, (clips, where) => {\n let accum = Promise.resolve();\n\n clips.forEach((clip) =>\n accum = accum.then(() => \n clip.play(where)));\n \n return accum;\n });\n}\n\nfunction oneOf(clips) {\n return new Animation(clips, (clips, where) => {\n return clips[Math.floor(Math.random() * clips.length)].play(where);\n });\n}\n\nfunction addImage(object, imageName, urlPrefix) {\n let url = urlPrefix + imageName + '.svg';\n if (object[imageName]) return Promise.resolve();\n\n return new Promise((resolve) => {\n $.get(url, (data) => {\n let duration = parseFloat($(data).find('animate').attr('dur') || 0, 10) * 1000;\n object[imageName] = new Clip(url, duration);\n resolve();\n });\n });\n}\n\nmuvment.State = State;\nmuvment.Scene = Scene;\nmuvment.Clip = Clip;\n\nmuvment.animation = {\n sequence: sequence,\n oneOf: oneOf,\n addImage: addImage\n};\n\nmodule.exports = muvment;\n","let State = require('./state')\n\nclass Animation {\n constructor(clips, player) {\n this.clips = clips;\n this.player = player;\n }\n\n play(where) {\n return this.player(this.clips, where);\n };\n\n asState(name) {\n return new State(name, this);\n }\n};\n\nmodule.exports = Animation;\n","class Scene {\n constructor() {\n this.states = {};\n }\n\n addState(state) {\n if (!this.currentState) this.currentState = state;\n this.states[state.name] = state;\n return this;\n };\n\n switch(stateName) {\n this.currentState = this.states[stateName];\n this.play();\n };\n\n play(image) {\n this.currentState.play(image);\n };\n};\n\nmodule.exports = Scene;\n","let State = require('./state')\n\nclass Clip {\n constructor(src, duration) {\n this.src = src;\n this.duration = duration;\n }\n\n play(where) {\n where.src = this.src;\n \n return new Promise((resolve) => {\n setTimeout(resolve, this.duration);\n });\n }\n\n asState(name) {\n return new State(name, this);\n }\n};\n\nmodule.exports = Clip;\n","module.exports = jQuery;"],"sourceRoot":""}
data/lib/muvment.rb ADDED
@@ -0,0 +1,12 @@
1
+ require "muvment/version"
2
+
3
+ module Muvment
4
+ class Engine < ::Rails::Engine
5
+ end if defined? ::Rails::Engine
6
+
7
+ ASSETS_PATH=File.join(__dir__, '..', 'app', 'assets')
8
+
9
+ def self.assets_path_for(asset)
10
+ File.join ASSETS_PATH, asset
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module Muvment
2
+ VERSION = "1.0.0"
3
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: muvment
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Julian Berbel Alt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-05 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.16.a
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.16.a
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
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description:
56
+ email:
57
+ - julian@mumuki.org
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - README.md
63
+ - Rakefile
64
+ - app/assets/javascripts/muvment.js
65
+ - app/assets/javascripts/muvment.js.map
66
+ - lib/muvment.rb
67
+ - lib/muvment/version.rb
68
+ homepage: https://github.com/mumuki/muvment
69
+ licenses:
70
+ - GPL-3.0
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.3'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.0.2
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Muvment
91
+ test_files: []