electronics 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c05e111956800edcd5873a662e0087c13c4a849e
4
+ data.tar.gz: 6ff918e180f5206a054abc67d1843ddae89896ae
5
+ SHA512:
6
+ metadata.gz: a1eeeee12053b8f1af00e0361fc65cff84902c5bd3a5b1a2a901144bf8bcdf206aee57cb4f435d6e6cc6f75faa495060fed044188a9c16d95b13831adc52dce1
7
+ data.tar.gz: ca9860a59c9d28ca6e4beaacd0aa7c0c358ed0462c5937c866654e2d27f912e6464564259f44905ee21d64e066b5f151d5e468da71b424982cd0e31d5545c15f
@@ -0,0 +1,20 @@
1
+ Copyright 2012 Electronics
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,16 @@
1
+ # Electronics
2
+
3
+ Electronics summary
4
+
5
+ ## Installing
6
+
7
+ 1. Add the gem to bundler or install: gem 'electronics' or `gem install electronics`
8
+ 2. In your application.js //= require underscore
9
+ 3. In your application.js //= require backbone
10
+ 4. In your application.js //= require electronics
11
+
12
+ ## Running Specs
13
+
14
+ 1. `rake jasmine` will start a server for the specs on port 8888.
15
+
16
+ Copyright (c) 2013 Electronics, released under the MIT license
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env rake
2
+ ENV['JASMINE_SPEC_FORMAT'] = 'Fuubar'
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ # require 'yajl/json_gem'
10
+ Bundler::GemHelper.install_tasks
11
+
12
+ require 'jshint/tasks'
13
+ # puts $LOAD_PATH
14
+ Dir.glob('lib/tasks/*.rake').each { |r| import r }
15
+
16
+
17
+ begin
18
+ require 'jasmine'
19
+ load 'jasmine/tasks/jasmine.rake'
20
+ rescue LoadError
21
+ task :jasmine do
22
+ abort 'Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine'
23
+ end
24
+ end
25
+
26
+ JSHint.config_path = 'config/jshint.yml'
27
+ task :default => [:jshint, :'jasmine:ci']
28
+
@@ -0,0 +1,106 @@
1
+ # ------------ rake task options ------------
2
+
3
+ # JS files to check by default, if no parameters are passed to rake jshint
4
+ # (you may want to limit this only to your own scripts and exclude any external scripts and frameworks)
5
+
6
+ # this can be overridden by adding 'paths' and 'exclude_paths' parameter to rake command:
7
+ # rake jshint paths=path1,path2,... exclude_paths=library1,library2,...
8
+
9
+ paths:
10
+ - lib/assets/javascripts/**/*.js
11
+ - spec/javascripts/**/*.js
12
+
13
+ exclude_paths:
14
+ - spec/javascripts/support/vendor/**/*.js
15
+
16
+ # ------------ jshint options ------------
17
+ # visit http://jshint.com/ for complete documentation
18
+
19
+ # "enforce" type options (true means potentially more warnings)
20
+
21
+ adsafe: false # true if ADsafe rules should be enforced. See http://www.ADsafe.org/
22
+ bitwise: true # true if bitwise operators should not be allowed
23
+ newcap: true # true if Initial Caps must be used with constructor functions
24
+ eqeqeq: true # true if === should be required (for ALL equality comparisons)
25
+ immed: false # true if immediate function invocations must be wrapped in parens
26
+ nomen: false # true if initial or trailing underscore in identifiers should be forbidden
27
+ onevar: false # true if only one var statement per function should be allowed
28
+ plusplus: false # true if ++ and -- should not be allowed
29
+ regexp: false # true if . and [^...] should not be allowed in RegExp literals
30
+ safe: false # true if the safe subset rules are enforced (used by ADsafe)
31
+ strict: false # true if the ES5 "use strict"; pragma is required
32
+ undef: true # true if variables must be declared before used
33
+ white: false # true if strict whitespace rules apply (see also 'indent' option)
34
+
35
+ # "allow" type options (false means potentially more warnings)
36
+
37
+ cap: false # true if upper case HTML should be allowed
38
+ css: false # true if CSS workarounds should be tolerated
39
+ debug: false # true if debugger statements should be allowed (set to false before going into production)
40
+ es5: false # true if ECMAScript 5 syntax should be allowed
41
+ evil: false # true if eval should be allowed
42
+ forin: false # true if unfiltered 'for in' statements should be allowed
43
+ fragment: false # true if HTML fragments should be allowed
44
+ laxbreak: false # true if statement breaks should not be checked
45
+ on: false # true if HTML event handlers (e.g. onclick="...") should be allowed
46
+ sub: false # true if subscript notation may be used for expressions better expressed in dot notation
47
+ validthis: true # true if suppresses warnings about possible strict violations when the code is running in strict mode and you use this in a non-constructor function
48
+
49
+ # other options
50
+
51
+ maxlen: 160 # Maximum line length
52
+ indent: 2 # Number of spaces that should be used for indentation - used only if 'white' option is set
53
+ maxerr: 50 # The maximum number of warnings reported (per file)
54
+ passfail: false # true if the scan should stop on first error (per file)
55
+ # following are relevant only if undef = true
56
+ predef: # Names of predefined global variables - comma-separated string or a YAML array
57
+ - Electronics
58
+ - _
59
+ - Backbone
60
+ - jQuery
61
+ - $
62
+ - describe
63
+ - it
64
+ - beforeEach
65
+ - afterEach
66
+ - expect
67
+ - jasmine
68
+ - spyOn
69
+
70
+ browser: true # true if the standard browser globals should be predefined
71
+ rhino: false # true if the Rhino environment globals should be predefined
72
+ windows: false # true if Windows-specific globals should be predefined
73
+ widget: false # true if the Yahoo Widgets globals should be predefined
74
+ devel: false # true if functions like alert, confirm, console, prompt etc. are predefined
75
+
76
+ # jshint options
77
+ loopfunc: true # true if functions should be allowed to be defined within loops
78
+ asi: false # true if automatic semicolon insertion should be tolerated
79
+ boss: false # true if advanced usage of assignments and == should be allowed
80
+ couch: false # true if CouchDB globals should be predefined
81
+ curly: false # true if curly braces around blocks should be required (even in if/for/while)
82
+ noarg: true # true if arguments.caller and arguments.callee should be disallowed
83
+ node: false # true if the Node.js environment globals should be predefined
84
+ noempty: true # true if empty blocks should be disallowed
85
+ nonew: true # true if using `new` for side-effects should be disallowed
86
+
87
+
88
+ # ------------ jshint_on_rails custom lint options (switch to true to disable some annoying warnings) ------------
89
+
90
+ # ignores "missing semicolon" warning at the end of a function; this lets you write one-liners
91
+ # like: x.map(function(i) { return i + 1 }); without having to put a second semicolon inside the function
92
+ lastsemic: false
93
+
94
+ # allows you to use the 'new' expression as a statement (without assignment)
95
+ # so you can call e.g. new Ajax.Request(...), new Effect.Highlight(...) without assigning to a dummy variable
96
+ newstat: false
97
+
98
+ # ignores the "Expected an assignment or function call and instead saw an expression" warning,
99
+ # if the expression contains a proper statement and makes sense; this lets you write things like:
100
+ # element && element.show();
101
+ # valid || other || lastChance || alert('OMG!');
102
+ # selected ? show() : hide();
103
+ # although these will still cause a warning:
104
+ # element && link;
105
+ # selected ? 5 : 10;
106
+ statinexp: false
@@ -0,0 +1,7 @@
1
+ Electronics.Controllers.ClearAllController = function(model) {
2
+ return {
3
+ 'click [data-clear-all]': function(e) {
4
+ model.clear();
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,16 @@
1
+ Electronics.Controllers.EnableDisableController = function(model, opts) {
2
+ var events = {};
3
+ opts.enableAttribute = opts.enableAttribute || 'enable-trigger';
4
+ opts.disableAttribute = opts.disableAttribute || 'disable-trigger';
5
+
6
+ events['click [data-' + opts.enableAttribute + ']'] = function(e) {
7
+ var target = $(e.currentTarget);
8
+ model.set(target.data(opts.enableAttribute), true);
9
+ };
10
+ events['click [data-' + opts.disableAttribute + ']'] = function(e) {
11
+ var target = $(e.currentTarget);
12
+ model.set(target.data(opts.disableAttribute), false);
13
+ };
14
+
15
+ return events;
16
+ }
@@ -0,0 +1,14 @@
1
+ Electronics.Controllers.HoverController = function(model, attribute) {
2
+ var events = {};
3
+
4
+ events['mouseover [data-' + attribute + ']'] = function(e) {
5
+ var target = $(e.currentTarget);
6
+ model.set(target.data(attribute), true);
7
+ };
8
+ events['mouseout [data-' + attribute + ']'] = function(e) {
9
+ var target = $(e.currentTarget);
10
+ model.set(target.data(attribute), false);
11
+ };
12
+
13
+ return events;
14
+ }
@@ -0,0 +1,5 @@
1
+ Electronics = {
2
+ Controllers: {},
3
+ Renderers: {},
4
+ MVCs: {}
5
+ };
@@ -0,0 +1,9 @@
1
+ Electronics.MVCs.EnableDisableMVC = function(opts) {
2
+ locksModel = new Backbone.Model();
3
+ return Electronics.MVCs.GenericMVC({
4
+ controller: Electronics.Controllers.EnableDisableController(locksModel, {}),
5
+ render: Electronics.Renderers.EnableDisableRenderer('enabled-as'),
6
+ model: locksModel,
7
+ el: opts.el
8
+ });
9
+ }
@@ -0,0 +1,33 @@
1
+ Electronics.MVCs.GenericMVC = function(opts) {
2
+ var self, klass;
3
+ var presenter = opts.presenter || function(model) { return model.toJSON(); };
4
+
5
+ var renderTemplate = function(json, el) {
6
+ el.html(opts.template(json));
7
+ }
8
+ var render = opts.render || (opts.template && renderTemplate) || function(){};
9
+ var views = opts.views || [];
10
+
11
+ klass = Backbone.View.extend({
12
+ el: opts.el,
13
+ events: opts.controller,
14
+ render: function() {
15
+ render(presenter(opts.model), opts.el);
16
+ _.each(views, function(view) {
17
+ var viewPres = view.presenter || function(model) { return model.toJSON(); };
18
+ view.renderer(viewPres(opts.model), opts.el);
19
+ });
20
+ },
21
+ addRender: function(renderFn) {
22
+
23
+ }
24
+ });
25
+
26
+ self = new klass(opts);
27
+
28
+ opts.model.on('change', self.render);
29
+ opts.model.on('add', self.render);
30
+ opts.model.on('reset', self.render);
31
+
32
+ return self;
33
+ }
@@ -0,0 +1,13 @@
1
+ Electronics.MVCs.TooltipMVC = function(opts) {
2
+ opts = opts || {};
3
+ opts.tooltipAttr = opts.tooltipAttr || 'tooltip';
4
+ opts.triggerAttr = opts.triggerAttr || 'tooltip-trigger';
5
+
6
+ var tooltipModel = new Backbone.Model();
7
+ return Electronics.MVCs.GenericMVC({
8
+ controller: Electronics.Controllers.HoverController(tooltipModel, opts.triggerAttr),
9
+ render: Electronics.Renderers.ClassRenderer(opts.tooltipAttr, 'active'),
10
+ model: tooltipModel,
11
+ el: opts.el
12
+ });
13
+ }
@@ -0,0 +1,24 @@
1
+ Electronics.Renderers.ActiveRenderer = function(activeClass) {
2
+ return function(info, $el) {
3
+ _.each($el.find('[data-active-on]'), function(el) {
4
+ var target = $(el);
5
+ var k = target.data('active-on');
6
+ var v = info[k];
7
+ if (v) {
8
+ target.addClass(activeClass);
9
+ } else {
10
+ target.removeClass(activeClass);
11
+ }
12
+ });
13
+ _.each($el.find('[data-inactive-on]'), function(el) {
14
+ var target = $(el);
15
+ var k = target.data('inactive-on');
16
+ var v = info[k];
17
+ if (!v) {
18
+ target.addClass(activeClass);
19
+ } else {
20
+ target.removeClass(activeClass);
21
+ }
22
+ });
23
+ };
24
+ };
@@ -0,0 +1,12 @@
1
+ Electronics.Renderers.ClassRenderer = function(attribute, activeClass) {
2
+ return function(info, $el) {
3
+ _.each(info, function(v,k) {
4
+ var target = $el.find('[data-'+ attribute +'="'+ k +'"]')
5
+ if (v) {
6
+ target.addClass(activeClass);
7
+ } else {
8
+ target.removeClass(activeClass);
9
+ }
10
+ });
11
+ };
12
+ };
@@ -0,0 +1,13 @@
1
+ Electronics.Renderers.EnableDisableRenderer = function(attribute) {
2
+ return function(info, $el) {
3
+ _.each($el.find('[data-'+ attribute +']'), function(el) {
4
+ var target = $(el);
5
+ var k = target.data(attribute);
6
+ if (info[k]) {
7
+ target.prop('disabled', false);
8
+ } else {
9
+ target.prop('disabled', true);
10
+ }
11
+ });
12
+ };
13
+ };
@@ -0,0 +1,5 @@
1
+ module Electronics
2
+ class Engine < Rails::Engine
3
+
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module Electronics
2
+ VERSION = '0.0.0'
3
+ end
@@ -0,0 +1,36 @@
1
+ require 'pathname'
2
+ require 'logger'
3
+ require 'sprockets'
4
+ require 'fileutils'
5
+ require 'pry'
6
+
7
+ ROOT = Pathname(Dir.pwd)
8
+ LOGGER = Logger.new(STDOUT)
9
+ BUNDLE = "all.js"
10
+ BUILD_DIR = ROOT.join("build")
11
+ SOURCE_DIR = ROOT.join("lib/assets/javascripts/electronics")
12
+
13
+ desc "compiles sprockets"
14
+ task :compile do
15
+ sprockets = Sprockets::Environment.new(ROOT) do |env|
16
+ env.logger = LOGGER
17
+ end
18
+
19
+ puts SOURCE_DIR.to_s
20
+ sprockets.append_path(SOURCE_DIR.to_s)
21
+ # binding.pry
22
+ File.open(File.join(BUILD_DIR, 'all.js'), 'w') do |f|
23
+ f.write sprockets[BUNDLE].to_s
24
+ end
25
+
26
+ # assets = sprockets.find_asset(BUNDLE)
27
+ # prefix, basename = assets.pathname.to_s.split('/')[-2..-1]
28
+ # FileUtils.mkpath BUILD_DIR.join(prefix)
29
+
30
+ # assets.write_to(BUILD_DIR.join(prefix, basename))
31
+ # assets.to_a.each do |asset|
32
+ # # strip filename.css.foo.bar.css multiple extensions
33
+ # realname = asset.pathname.basename.to_s.split(".")[0..1].join(".")
34
+ # asset.write_to(BUILD_DIR.join(prefix, realname))
35
+ # end
36
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: electronics
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Electronics
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fuubar
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sprockets
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jasmine
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: jshint_on_rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thin
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '3.1'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '3.1'
111
+ description: Electronics Description
112
+ email:
113
+ - electronics@example.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - config/jshint.yml
119
+ - lib/assets/javascripts/electronics/controllers/clear_all_controller.js
120
+ - lib/assets/javascripts/electronics/controllers/enable_disable_controller.js
121
+ - lib/assets/javascripts/electronics/controllers/hover_controller.js
122
+ - lib/assets/javascripts/electronics/electronics.js
123
+ - lib/assets/javascripts/electronics/mvcs/enable_disable_mvc.js
124
+ - lib/assets/javascripts/electronics/mvcs/generic_mvc.js
125
+ - lib/assets/javascripts/electronics/mvcs/tooltip_mvc.js
126
+ - lib/assets/javascripts/electronics/renderers/active_renderer.js
127
+ - lib/assets/javascripts/electronics/renderers/class_renderer.js
128
+ - lib/assets/javascripts/electronics/renderers/enable_disable_renderer.js
129
+ - lib/electronics/version.rb
130
+ - lib/electronics.rb
131
+ - lib/tasks/sprockets.rake
132
+ - MIT-LICENSE
133
+ - Rakefile
134
+ - README.markdown
135
+ homepage: http://github.com/sergueif/electronics
136
+ licenses: []
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.1.5
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: Electronics Summary
158
+ test_files: []