loader 1.2.6 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/LICENSE +17 -17
- data/README.md +8 -3
- data/VERSION +1 -1
- data/examples/lib/asdf/level2.rb +1 -0
- data/examples/lib/asdf/meta/level3.rb +1 -0
- data/examples/lib/level1_1.rb +1 -0
- data/examples/lib/level1_2.rb +1 -0
- data/examples/meta.rb +18 -0
- data/examples/simple_require.rb +3 -20
- data/lib/loader.rb +0 -1
- data/lib/loader/hash.rb +12 -22
- data/lib/loader/meta.rb +6 -3
- data/lib/loader/require.rb +21 -30
- data/loader.gemspec +0 -1
- metadata +8 -6
- data/examples/lib/asdf/stuff.rb +0 -1
- data/lib/loader/array.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: baa86c000a57bb154c384914994c745e77644ab0
|
4
|
+
data.tar.gz: 24193f8d91aae65f61f442d31af73d2c76dd0c46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8b8356364117953e9d8df97118aac1f00ae004d9ee5e6037370e7bbc5058f3538fb55f376abc5b07dc54334e4e1fe7cb7c143f367fbd188df3131768eaa901d
|
7
|
+
data.tar.gz: bf5f3705405f2c3f5807128cd410e8f89ff9fd8094c9fa4aaa13e81dce3355c57527289bafe3f2e706fa8606430f67a849ed10f0ebbe1343dc420f17cbbe8718
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
source
|
1
|
+
source :rubygems
|
2
2
|
gemspec
|
data/LICENSE
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
|
1
|
+
Copyright (c) 2013 Adam Luzsi
|
2
2
|
|
3
|
-
|
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:
|
4
10
|
|
5
|
-
|
6
|
-
|
7
|
-
the Software without restriction, including without limitation the rights to
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
-
subject to the following conditions:
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
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.
|
data/README.md
CHANGED
@@ -20,7 +20,8 @@ The end goal is to make an easy ruby file loader for gems. So Dir.pwd do not aff
|
|
20
20
|
|
21
21
|
### Examples
|
22
22
|
|
23
|
-
load relative directory (not based on Dir.pwd)
|
23
|
+
load relative directory (not based on Dir.pwd but the caller files position)
|
24
|
+
if you pass multiple string as argument it will be joined by file separator that the OS use
|
24
25
|
|
25
26
|
```ruby
|
26
27
|
|
@@ -32,12 +33,16 @@ load relative directory (not based on Dir.pwd)
|
|
32
33
|
|
33
34
|
# for recursive use try the following
|
34
35
|
require_relative_directory "lib", :r
|
35
|
-
|
36
|
+
|
37
|
+
# or
|
36
38
|
require_relative_directory_r "lib"
|
37
39
|
|
40
|
+
# or
|
41
|
+
require_relative_directory "lib",r: true
|
42
|
+
|
38
43
|
```
|
39
44
|
|
40
|
-
Additional Syntax for caller
|
45
|
+
Additional Syntax for caller magics
|
41
46
|
|
42
47
|
```ruby
|
43
48
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.1
|
@@ -0,0 +1 @@
|
|
1
|
+
puts __FILE__
|
@@ -0,0 +1 @@
|
|
1
|
+
puts __FILE__
|
@@ -0,0 +1 @@
|
|
1
|
+
puts __FILE__
|
@@ -0,0 +1 @@
|
|
1
|
+
puts __FILE__
|
data/examples/meta.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative "../lib/loader"
|
2
|
+
|
3
|
+
puts Loader.meta "examples","lib","**","meta"
|
4
|
+
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
5
|
+
|
6
|
+
puts Loader.meta root: File.expand_path(File.dirname(__FILE__))
|
7
|
+
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
8
|
+
|
9
|
+
|
10
|
+
puts Loader.meta "lib","**","meta",
|
11
|
+
root: File.expand_path(File.dirname(__FILE__))
|
12
|
+
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
13
|
+
|
14
|
+
puts Loader.meta absolute: File.expand_path(File.join(File.dirname(__FILE__),"lib","**","meta"))
|
15
|
+
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
16
|
+
|
17
|
+
puts Loader.metaloader_framework root: File.expand_path(File.dirname(__FILE__))
|
18
|
+
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
data/examples/simple_require.rb
CHANGED
@@ -1,24 +1,7 @@
|
|
1
1
|
require_relative "../lib/loader"
|
2
2
|
|
3
|
+
#> require the ruby files from lib
|
3
4
|
require_directory "lib"
|
4
|
-
# one of the file has a "puts \"hello world!\"" that will run on load
|
5
|
-
#> hello world!
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
puts Loader.meta root: File.expand_path(File.dirname(__FILE__))
|
11
|
-
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
12
|
-
|
13
|
-
puts Loader.meta "lib","**","meta",
|
14
|
-
root: File.expand_path(File.dirname(__FILE__))
|
15
|
-
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
16
|
-
|
17
|
-
puts Loader.meta absolute: File.expand_path(File.join(File.dirname(__FILE__),"lib","**","meta"))
|
18
|
-
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
19
|
-
|
20
|
-
puts Loader.metaloader_framework root: File.expand_path(File.dirname(__FILE__))
|
21
|
-
#> {"asdf"=>{"else"=>{"world"=>"hello"}, "stuff"=>{"hello"=>"world"}}}
|
22
|
-
|
23
|
-
require_directory "lib", :r #> recursive
|
24
|
-
#> hello world! from stuff.rb
|
6
|
+
#> require the ruby files from and under to lib (recursive)
|
7
|
+
require_directory_r "lib"
|
data/lib/loader.rb
CHANGED
@@ -3,7 +3,6 @@ module Loader
|
|
3
3
|
|
4
4
|
require "yaml"
|
5
5
|
|
6
|
-
require File.join(File.dirname(__FILE__),"loader","array")
|
7
6
|
require File.join(File.dirname(__FILE__),"loader","hash")
|
8
7
|
require File.join(File.dirname(__FILE__),"loader","meta")
|
9
8
|
require File.join(File.dirname(__FILE__),"loader","require")
|
data/lib/loader/hash.rb
CHANGED
@@ -1,29 +1,19 @@
|
|
1
1
|
module Loader
|
2
2
|
module HashEXT
|
3
|
+
class << self
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# h2 = {:x => {:y => [7,8,9]}, :z => "xyz"}
|
8
|
-
#
|
9
|
-
# h1.deep_merge(h2) #=> { :x => {:y => [7, 8, 9]}, :z => "xyz" }
|
10
|
-
# h2.deep_merge(h1) #=> { :x => {:y => [4, 5, 6]}, :z => [7, 8, 9] }
|
11
|
-
def deep_merge(other_hash)
|
12
|
-
dup.deep_merge!(other_hash)
|
13
|
-
end
|
14
|
-
|
15
|
-
alias :+ :deep_merge unless method_defined? :deep_merge
|
5
|
+
def deep_merge(self_hash,other_hash)
|
6
|
+
deep_merge!(self_hash.dup,other_hash)
|
7
|
+
end
|
16
8
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
9
|
+
def deep_merge!(self_hash,other_hash)
|
10
|
+
other_hash.each_pair do |k,v|
|
11
|
+
tv = self_hash[k]
|
12
|
+
self_hash[k] = tv.is_a?(::Hash) && v.is_a?(::Hash) ? deep_merge(tv,v) : v
|
13
|
+
end
|
14
|
+
self_hash
|
22
15
|
end
|
23
|
-
self
|
24
|
-
end
|
25
16
|
|
17
|
+
end
|
26
18
|
end
|
27
|
-
end
|
28
|
-
|
29
|
-
Hash.__send__ :include, Loader::HashEXT
|
19
|
+
end
|
data/lib/loader/meta.rb
CHANGED
@@ -108,7 +108,7 @@ module Loader
|
|
108
108
|
|
109
109
|
end
|
110
110
|
|
111
|
-
|
111
|
+
HashEXT.deep_merge! target_config_hash, Loader.meta( absolute: lib_folder )
|
112
112
|
|
113
113
|
# update by config
|
114
114
|
begin
|
@@ -157,7 +157,7 @@ module Loader
|
|
157
157
|
config_yaml_paths.each do |one_yaml_file_path|
|
158
158
|
begin
|
159
159
|
yaml_data= YAML.load(File.open(one_yaml_file_path))
|
160
|
-
|
160
|
+
HashEXT.deep_merge!(target_config_hash,yaml_data)
|
161
161
|
|
162
162
|
unless environment.nil?
|
163
163
|
if one_yaml_file_path.include?(environment.to_s)
|
@@ -197,7 +197,10 @@ module Loader
|
|
197
197
|
# yaml file name as key and the folder as the category
|
198
198
|
def meta( *args )
|
199
199
|
|
200
|
-
options= args.
|
200
|
+
options= args.select{|e|(e.class <= ::Hash)}
|
201
|
+
args -= options
|
202
|
+
options= Hash[*options]
|
203
|
+
|
201
204
|
options ||= {}
|
202
205
|
|
203
206
|
if options[:absolute].nil?
|
data/lib/loader/require.rb
CHANGED
@@ -2,51 +2,42 @@ module Loader
|
|
2
2
|
|
3
3
|
module ObjectRequireEXT
|
4
4
|
|
5
|
-
# Offline repo activate
|
6
|
-
#def mount_modules(target_folder= File.join(Dir.pwd,"{module,modules}","{gem,gems}") )
|
7
|
-
# Dir.glob(File.join(target_folder,"**","lib")).select{|f| File.directory?(f)}.each do |one_path|
|
8
|
-
# $LOAD_PATH.unshift one_path
|
9
|
-
# end
|
10
|
-
#end
|
11
|
-
|
12
5
|
# require sender relative directory's files
|
13
6
|
# return the directory and the sub directories file names (rb/ru)
|
14
|
-
def require_relative_directory
|
7
|
+
def require_relative_directory *args
|
8
|
+
|
9
|
+
folder= args.select{|e|(e.class <= ::String)}.join(File::Separator)
|
10
|
+
opts= Hash[*args.select{|e|(e.class <= ::Hash)}]
|
11
|
+
args= args.select{|e|(e.class <= ::Symbol)}
|
15
12
|
|
16
|
-
recursive
|
17
|
-
[:recursive
|
13
|
+
opts[:recursive] ||= opts.delete(:r) || opts.delete(:R) || !([:recursive,:r, :R,].select{|e| args.include?(e)}.empty?)
|
14
|
+
opts[:recursive] = !!opts[:recursive]
|
18
15
|
|
19
|
-
|
20
|
-
# raise(ArgumentError,"invalid extension object, must be array like") unless opts[:extension].class <= Array
|
16
|
+
opts[:caller_folder] ||= opts.delete(:f) || opts.delete(:folder) || Loader.caller_folder
|
21
17
|
|
22
18
|
unless folder.to_s[0] == File::Separator
|
23
|
-
folder= [
|
19
|
+
folder= [opts[:caller_folder],folder]
|
24
20
|
end
|
25
21
|
|
26
|
-
|
27
|
-
|
28
|
-
path_parts
|
22
|
+
#> recursive option
|
23
|
+
begin
|
24
|
+
path_parts= [*folder]
|
25
|
+
if opts[:recursive]
|
26
|
+
path_parts.push("**")
|
27
|
+
end
|
28
|
+
path_parts.push("*.{rb,ru}")
|
29
29
|
end
|
30
|
-
path_parts.push("*.{rb,ru}")
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
31
|
+
return Dir.glob(File.join(*path_parts)).sort_by{|e| e.split(File::Separator).size }.map { |one_path|
|
32
|
+
require(one_path)
|
33
|
+
}.include?(true)
|
36
34
|
|
37
|
-
return return_value
|
38
35
|
end
|
39
36
|
|
40
37
|
alias :require_directory :require_relative_directory
|
41
38
|
|
42
|
-
def require_relative_directory_r
|
43
|
-
|
44
|
-
unless folder.to_s[0] == File::Separator
|
45
|
-
folder= File.join(Loader.caller_folder,folder)
|
46
|
-
end
|
47
|
-
|
48
|
-
require_relative_directory folder,:r
|
49
|
-
|
39
|
+
def require_relative_directory_r *args
|
40
|
+
require_relative_directory *args, r: true, f: Loader.caller_folder
|
50
41
|
end
|
51
42
|
alias :require_directory_r :require_relative_directory_r
|
52
43
|
|
data/loader.gemspec
CHANGED
@@ -12,7 +12,6 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = %q{ dsl for gem helper calls such like relative folder calls that independ on the Dir.pwd or File.expand tricks and config loader stuffs, Check out the GIT! }
|
13
13
|
spec.summary = %q{DSL for helping make file require easy just like build configuration objects }
|
14
14
|
spec.homepage = "https://github.com/adamluzsi/loader"
|
15
|
-
spec.license = "MIT"
|
16
15
|
|
17
16
|
spec.files = `git ls-files`.split($/)
|
18
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: " dsl for gem helper calls such like relative folder calls that independ
|
14
14
|
on the Dir.pwd or File.expand tricks and config loader stuffs, Check out the GIT! "
|
@@ -24,13 +24,16 @@ files:
|
|
24
24
|
- README.md
|
25
25
|
- Rakefile
|
26
26
|
- VERSION
|
27
|
+
- examples/lib/asdf/level2.rb
|
27
28
|
- examples/lib/asdf/meta/else.yml
|
29
|
+
- examples/lib/asdf/meta/level3.rb
|
28
30
|
- examples/lib/asdf/meta/stuff.yml
|
29
|
-
- examples/lib/
|
31
|
+
- examples/lib/level1_1.rb
|
32
|
+
- examples/lib/level1_2.rb
|
33
|
+
- examples/meta.rb
|
30
34
|
- examples/simple_require.rb
|
31
35
|
- files.rb
|
32
36
|
- lib/loader.rb
|
33
|
-
- lib/loader/array.rb
|
34
37
|
- lib/loader/hash.rb
|
35
38
|
- lib/loader/meta.rb
|
36
39
|
- lib/loader/require.rb
|
@@ -38,8 +41,7 @@ files:
|
|
38
41
|
- test/sub/test2.rb
|
39
42
|
- test/test.rb
|
40
43
|
homepage: https://github.com/adamluzsi/loader
|
41
|
-
licenses:
|
42
|
-
- MIT
|
44
|
+
licenses: []
|
43
45
|
metadata: {}
|
44
46
|
post_install_message:
|
45
47
|
rdoc_options: []
|
data/examples/lib/asdf/stuff.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
puts "hello world!"
|
data/lib/loader/array.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
module Loader
|
2
|
-
module ArrayEXT
|
3
|
-
|
4
|
-
# generate params structure from array
|
5
|
-
# return_array
|
6
|
-
def extract_class! class_name
|
7
|
-
|
8
|
-
if class_name.class != Class
|
9
|
-
raise ArgumentError, "parameter must be a class name"
|
10
|
-
end
|
11
|
-
|
12
|
-
return_value= self.map { |element|
|
13
|
-
if element.class == class_name
|
14
|
-
element
|
15
|
-
end
|
16
|
-
}.uniq - [ nil ]
|
17
|
-
return_value.each{|e| self.delete(e) }
|
18
|
-
|
19
|
-
return return_value
|
20
|
-
|
21
|
-
end unless method_defined? :extract_class!
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
Array.__send__ :include, Loader::ArrayEXT
|