voltron 0.2.10
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 +7 -0
- data/.gitignore +13 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +12 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +36 -0
- data/Rakefile +6 -0
- data/app/assets/javascripts/voltron-core.js +282 -0
- data/app/assets/javascripts/voltron-dispatch.js +159 -0
- data/app/assets/javascripts/voltron-ext.js +122 -0
- data/app/assets/javascripts/voltron-observer.js +156 -0
- data/app/assets/javascripts/voltron.js +3 -0
- data/app/helpers/voltron_helper.rb +11 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/generators/voltron/install_generator.rb +37 -0
- data/lib/generators/voltron/js/install_generator.rb +48 -0
- data/lib/voltron/asset.rb +24 -0
- data/lib/voltron/config/js.rb +28 -0
- data/lib/voltron/config.rb +40 -0
- data/lib/voltron/engine.rb +13 -0
- data/lib/voltron/version.rb +3 -0
- data/lib/voltron.rb +38 -0
- data/voltron.gemspec +30 -0
- metadata +182 -0
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "voltron"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Voltron
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
|
5
|
+
desc 'Add Voltron initializer'
|
6
|
+
|
7
|
+
def copy_initializer
|
8
|
+
create_file Rails.root.join('config', 'initializers', 'voltron.rb'), <<-CONTENT
|
9
|
+
Voltron.setup do |config|
|
10
|
+
|
11
|
+
# === Voltron Base Configuration ===
|
12
|
+
|
13
|
+
# Whether to enable debug output in the browser console and terminal window
|
14
|
+
# config.debug = false
|
15
|
+
|
16
|
+
# The base url of the site. Used by various voltron-* gems to correctly build urls
|
17
|
+
# Defaults to Rails.application.config.action_controller.default_url_options[:host], or 'localhost:3000' if not set
|
18
|
+
# config.base_url = '#{Rails.application.config.action_controller.default_url_options.try(:[], :host) || "http://localhost:3000"}'
|
19
|
+
|
20
|
+
# What logger calls to Voltron.log should use
|
21
|
+
# config.logger = Logger.new(Rails.root.join('log', 'voltron.log'))
|
22
|
+
|
23
|
+
# Set the log level for JS output in the browser console.
|
24
|
+
# Available log levels are: :debug, :info, :warn, :error, :fatal, and :unknown,
|
25
|
+
# or each log levels corresponding number, ranging from 0 through 5 respectively.
|
26
|
+
# For consistency the available log levels match possible options for rails' +log_level+,
|
27
|
+
# but due to limited output options available in the browser console,
|
28
|
+
# "error", "fatal", and "unknown" all behave the same way.
|
29
|
+
# config.log_level = Rails.application.config.log_level
|
30
|
+
|
31
|
+
end
|
32
|
+
CONTENT
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module Voltron
|
4
|
+
module Generators
|
5
|
+
module Js
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
|
8
|
+
source_root Rails.root.join("tmp")
|
9
|
+
|
10
|
+
argument :modules, type: :array, default: []
|
11
|
+
|
12
|
+
class_option :version, type: :string, default: "master", desc: "Specify a specific module version to install"
|
13
|
+
|
14
|
+
desc "Install Voltron JS Modules"
|
15
|
+
|
16
|
+
ASSET_URL = "https://raw.githubusercontent.com/ehainer/voltron/%{version}/app/assets/javascripts/%{library}"
|
17
|
+
|
18
|
+
TEMP_DIR = Rails.root.join("tmp")
|
19
|
+
|
20
|
+
def install_modules
|
21
|
+
if modules.empty?
|
22
|
+
puts "Please specify one or more modules to install, e.g. - `rails g voltron:js:install dialog [--version=0.1.0]`"
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
FileUtils.mkdir_p(TEMP_DIR) unless File.directory?(TEMP_DIR)
|
27
|
+
|
28
|
+
modules.each do |mod|
|
29
|
+
library = "voltron-#{mod.downcase}.js"
|
30
|
+
version = options.version == "master" ? "master" : "v" + options.version.gsub(/[^0-9\.]/, "")
|
31
|
+
asset = ASSET_URL % { version: version, library: library }
|
32
|
+
|
33
|
+
begin
|
34
|
+
download = open(asset)
|
35
|
+
tmp = TEMP_DIR.join(library)
|
36
|
+
IO.copy_stream(download, tmp)
|
37
|
+
copy_file tmp, Rails.root.join("app", "assets", "javascripts", library)
|
38
|
+
rescue OpenURI::HTTPError => e
|
39
|
+
puts "Module '#{mod}' not found. Are you sure the version exists and that you typed the name correctly? (Lookup URL: #{asset})"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Voltron
|
2
|
+
class Asset
|
3
|
+
|
4
|
+
def find(file)
|
5
|
+
files(file)[file]
|
6
|
+
end
|
7
|
+
|
8
|
+
def files(type = "*", sub_dir = "**")
|
9
|
+
assets = Hash.new
|
10
|
+
Rails.application.config.assets.paths.each do |path|
|
11
|
+
Dir.glob("#{path}/#{sub_dir}/#{type}").each { |file| assets[File.basename(file)] = file }
|
12
|
+
end
|
13
|
+
assets
|
14
|
+
end
|
15
|
+
|
16
|
+
def file_path(filename)
|
17
|
+
if Rails.application.config.assets.digest && Rails.application.config.assets.compile
|
18
|
+
filename = Rails.application.assets.find_asset(filename.to_s).try(:digest_path) || filename.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
File.join(Rails.application.config.assets.prefix, filename.to_s)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Voltron
|
2
|
+
class Config
|
3
|
+
|
4
|
+
def js
|
5
|
+
@js ||= Js.new
|
6
|
+
end
|
7
|
+
|
8
|
+
class Js
|
9
|
+
|
10
|
+
attr_accessor :custom
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@custom = Hash.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_h
|
17
|
+
@custom
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def method_missing(method, value, &block)
|
23
|
+
@custom[method.to_s.chomp("=")] = value
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'uri'
|
3
|
+
require 'voltron/config/js'
|
4
|
+
|
5
|
+
module Voltron
|
6
|
+
class Config
|
7
|
+
|
8
|
+
include ::ActiveSupport::Callbacks
|
9
|
+
|
10
|
+
define_callbacks :generate_voltron_config
|
11
|
+
|
12
|
+
attr_accessor :logger, :debug, :log_level
|
13
|
+
|
14
|
+
attr_writer :base_url
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@logger ||= ::Logger.new(::Rails.root.join('log', 'voltron.log'))
|
18
|
+
@debug ||= false
|
19
|
+
@log_level ||= Rails.application.config.log_level
|
20
|
+
@base_url ||= (Rails.application.config.action_controller.default_url_options.try(:[], :host) || 'http://localhost:3000')
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_h
|
24
|
+
run_callbacks :generate_voltron_config
|
25
|
+
js.to_h.merge(debug: @debug, log_level: @log_level)
|
26
|
+
end
|
27
|
+
|
28
|
+
def merge(data)
|
29
|
+
js.custom.merge! data
|
30
|
+
end
|
31
|
+
|
32
|
+
def base_url
|
33
|
+
@base_url = "http://#{@base_url}" unless @base_url.strip.start_with?('http')
|
34
|
+
url = URI.parse(@base_url)
|
35
|
+
port = url.port == 80 ? '' : ":#{url.port}"
|
36
|
+
"#{url.scheme}://#{url.host}#{port}"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Voltron
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
|
4
|
+
isolate_namespace Voltron
|
5
|
+
|
6
|
+
config.autoload_paths += Dir["#{config.root}/lib/**/"]
|
7
|
+
|
8
|
+
initializer "voltron.initialize" do
|
9
|
+
::ActionController::Base.send :helper, ::VoltronHelper
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
data/lib/voltron.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require "voltron/version"
|
2
|
+
require "voltron/config"
|
3
|
+
require "voltron/asset"
|
4
|
+
require "active_support/callbacks"
|
5
|
+
|
6
|
+
begin
|
7
|
+
require "colorize"
|
8
|
+
rescue LoadError => e
|
9
|
+
end
|
10
|
+
|
11
|
+
module Voltron
|
12
|
+
def self.setup
|
13
|
+
yield config
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.config
|
17
|
+
@config ||= Voltron::Config.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.asset
|
21
|
+
@asset ||= Voltron::Asset.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.log(message, tag, color = nil)
|
25
|
+
@logger ||= ActiveSupport::TaggedLogging.new(config.logger)
|
26
|
+
if config.debug
|
27
|
+
msg = "[Voltron] [#{tag}] #{message}"
|
28
|
+
if !color.nil? && msg.respond_to?(color)
|
29
|
+
puts msg.send color
|
30
|
+
else
|
31
|
+
puts msg
|
32
|
+
end
|
33
|
+
end
|
34
|
+
@logger.tagged(Time.now.strftime("%Y-%m-%d %I:%M:%S %Z")) { @logger.tagged("Voltron") { @logger.tagged(tag) { @logger.info message } } }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
require "voltron/engine" if defined?(Rails)
|
data/voltron.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'voltron/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'voltron'
|
8
|
+
spec.version = Voltron::VERSION
|
9
|
+
spec.authors = ['Eric Hainer']
|
10
|
+
spec.email = ['eric@commercekitchen.com']
|
11
|
+
|
12
|
+
spec.summary = %q{Voltron}
|
13
|
+
spec.homepage = 'https://github.com/ehainer/voltron'
|
14
|
+
spec.license = 'GNU GPL v3'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'rails', '>= 4.2'
|
22
|
+
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
24
|
+
spec.add_development_dependency 'rake', '~> 11.3'
|
25
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
26
|
+
spec.add_development_dependency 'rspec-rails', '~> 3.4'
|
27
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
28
|
+
spec.add_development_dependency 'colorize', '~> 0.8.1'
|
29
|
+
spec.add_development_dependency 'jquery-rails', '~> 4.2.0'
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: voltron
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.10
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Hainer
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-06-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '11.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '11.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-rails
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.3'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: colorize
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.8.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.8.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: jquery-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 4.2.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 4.2.0
|
125
|
+
description:
|
126
|
+
email:
|
127
|
+
- eric@commercekitchen.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- ".gitignore"
|
133
|
+
- ".rspec"
|
134
|
+
- ".travis.yml"
|
135
|
+
- CODE_OF_CONDUCT.md
|
136
|
+
- Gemfile
|
137
|
+
- LICENSE
|
138
|
+
- LICENSE.txt
|
139
|
+
- README.md
|
140
|
+
- Rakefile
|
141
|
+
- app/assets/javascripts/voltron-core.js
|
142
|
+
- app/assets/javascripts/voltron-dispatch.js
|
143
|
+
- app/assets/javascripts/voltron-ext.js
|
144
|
+
- app/assets/javascripts/voltron-observer.js
|
145
|
+
- app/assets/javascripts/voltron.js
|
146
|
+
- app/helpers/voltron_helper.rb
|
147
|
+
- bin/console
|
148
|
+
- bin/setup
|
149
|
+
- lib/generators/voltron/install_generator.rb
|
150
|
+
- lib/generators/voltron/js/install_generator.rb
|
151
|
+
- lib/voltron.rb
|
152
|
+
- lib/voltron/asset.rb
|
153
|
+
- lib/voltron/config.rb
|
154
|
+
- lib/voltron/config/js.rb
|
155
|
+
- lib/voltron/engine.rb
|
156
|
+
- lib/voltron/version.rb
|
157
|
+
- voltron.gemspec
|
158
|
+
homepage: https://github.com/ehainer/voltron
|
159
|
+
licenses:
|
160
|
+
- GNU GPL v3
|
161
|
+
metadata: {}
|
162
|
+
post_install_message:
|
163
|
+
rdoc_options: []
|
164
|
+
require_paths:
|
165
|
+
- lib
|
166
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
requirements: []
|
177
|
+
rubyforge_project:
|
178
|
+
rubygems_version: 2.7.6
|
179
|
+
signing_key:
|
180
|
+
specification_version: 4
|
181
|
+
summary: Voltron
|
182
|
+
test_files: []
|