motion_require 0.2.1 → 0.3.0

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.
data/README.md CHANGED
@@ -1,10 +1,11 @@
1
- # MotionRequire
1
+ # motion_require
2
2
 
3
- TODO: Write a gem description
3
+ Allows you to use `require` in your RubyMotion apps just like you are used to. This allows you to use gems like you normally do and manage your
4
+ dependencies with Bundler.
4
5
 
5
6
  ## Installation
6
7
 
7
- Add this line to your application's Gemfile:
8
+ Use bundler like you normally do when writing your Ruby apps, and add this line to your application's Gemfile:
8
9
 
9
10
  gem 'motion_require'
10
11
 
@@ -12,13 +13,28 @@ And then execute:
12
13
 
13
14
  $ bundle
14
15
 
15
- Or install it yourself as:
16
+ Then require it in your Rakefile by adding this line somewhere at the top:
16
17
 
17
- $ gem install motion_require
18
+ require 'motion_require'
19
+
20
+ So your Rakefile will look something like this:
21
+
22
+ ```ruby
23
+ require "bundler/setup"
24
+
25
+ $:.unshift('/Library/RubyMotion/lib')
26
+ require 'motion/project'
27
+ require 'motion_require'
28
+
29
+ Motion::Project::App.setup do |app|
30
+ app.name = 'KillerApp'
31
+ end
32
+ ```
18
33
 
19
34
  ## Usage
20
35
 
21
- TODO: Write usage instructions here
36
+ Now you can use require in your application to specify the dependencies without having to maintain the compliation order in you Rakefile.
37
+ You can even require files from gems that are in you Gemfile.
22
38
 
23
39
  ## Contributing
24
40
 
@@ -30,19 +30,36 @@ module MotionRequire
30
30
 
31
31
  def resolve
32
32
  return if @resolved
33
- add_dependencies_for_file(find_file('app_delegate'))
33
+ app_delegate = find_file('app_delegate')
34
+
35
+ add_dependencies_for_file(app_delegate)
36
+
37
+ @file_list = load_order_for(app_delegate)
38
+
34
39
  @resolved = true
35
40
  end
36
41
 
37
- def add_dependencies_for_file(file_name)
38
- return if @file_list.member?(file_name)
42
+ def load_order_for(file_name)
43
+ deps = @dependencies[file_name]
44
+
45
+ if deps && !deps.empty?
46
+ deps.inject([file_name]) do |memo, dep_file_name|
47
+ if memo.include?(dep_file_name)
48
+ memo
49
+ else
50
+ load_order_for(dep_file_name) + memo
51
+ end
52
+ end
53
+ else
54
+ [file_name]
55
+ end
56
+ end
39
57
 
58
+ def add_dependencies_for_file(file_name)
40
59
  deps = dependencies_for_file(file_name)
41
60
 
42
61
  @dependencies[file_name] = deps unless deps.empty?
43
62
 
44
- @file_list.unshift(file_name)
45
-
46
63
  deps.each do |file|
47
64
  add_dependencies_for_file(file)
48
65
  end
@@ -1,3 +1,3 @@
1
1
  module MotionRequire
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion_require
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-22 00:00:00.000000000 Z
12
+ date: 2012-07-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Implementation of Kernel#require for RubyMotion
15
15
  email: