ruby-quilt 0.0.2 → 0.0.3

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.
Files changed (2) hide show
  1. data/lib/quilt.rb +70 -44
  2. metadata +1 -1
data/lib/quilt.rb CHANGED
@@ -7,6 +7,8 @@ class Quilt
7
7
  COMMON_KEY = "common"
8
8
  OPTIONAL_KEY = "optional"
9
9
  FOOTER_KEY = "footer"
10
+ PREFIX_KEY = "prefix"
11
+ DEBUG_PREFIX_KEY = "debug_prefix"
10
12
 
11
13
  def initialize(config, log = Logger.new(STDOUT))
12
14
  @config = config;
@@ -39,7 +41,7 @@ class Quilt
39
41
 
40
42
  def get_module_name(filename)
41
43
  return nil unless filename
42
- matches = filename.match(/(^.*\/|^)(.*)\.js$/)
44
+ matches = filename.match(/(^.*\/|^)(.+)\.[^.]+$/)
43
45
  return nil unless matches && matches.length >= 3
44
46
  matches[2]
45
47
  end
@@ -61,20 +63,35 @@ class Quilt
61
63
  def load_version(local_path, version_name)
62
64
  log_debug("Loading Version: "+version_name)
63
65
  manifest = {}
64
- newVersion = {
66
+ new_version = {
65
67
  :name => version_name,
66
68
  :dir => File.join(local_path, version_name),
67
- :base => '',
68
- :modules => {}
69
+ :default => {
70
+ :base => '',
71
+ :optional => {},
72
+ }
69
73
  }
70
74
  begin
71
- manifest = JSON.parse(File.read(File.join(newVersion[:dir], "manifest.json")))
75
+ manifest = JSON.parse(File.read(File.join(new_version[:dir], "manifest.json")))
76
+ new_version[:default][:dir] =
77
+ manifest[PREFIX_KEY] ? File.join(new_version[:dir], manifest[PREFIX_KEY]) :
78
+ new_version[:dir]
79
+ if (manifest[DEBUG_PREFIX_KEY])
80
+ new_version[:debug] = {
81
+ :dir => manifest[DEBUG_PREFIX_KEY] ? File.join(new_version[:dir], manifest[DEBUG_PREFIX_KEY]) :
82
+ new_version[:dir],
83
+ :base => '',
84
+ :optional => {}
85
+ }
86
+ end
72
87
  rescue Exception => e
73
88
  log_error(" Could not read manifest!", e);
74
89
  return nil
75
90
  end
76
91
  # manifest.json:
77
92
  # {
93
+ # "prefix" : "<prefix directory>"
94
+ # "debug_prefix : "<debug prefix directory"
78
95
  # "header" : "<header file>",
79
96
  # "footer" : "<footer file>",
80
97
  # "common" : [
@@ -86,46 +103,53 @@ class Quilt
86
103
  # ...
87
104
  # }
88
105
  # }
89
- if manifest[HEADER_KEY]
90
- begin
91
- newVersion[:base] = "#{newVersion[:base]}#{File.open(File.join(newVersion[:dir],
92
- manifest[HEADER_KEY]), "rb").read}"
93
- rescue Exception => e
94
- log_error(" Could not load header: #{manifest[HEADER_KEY]}", e)
95
- end
96
- end
97
- if manifest[COMMON_KEY] && manifest[COMMON_KEY].is_a?(Array)
98
- manifest[COMMON_KEY].each do |filename|
106
+ module_loader = Proc.new do |prefix|
107
+ dir = new_version[prefix][:dir]
108
+ if manifest[HEADER_KEY]
99
109
  begin
100
- newVersion[:base] = "#{newVersion[:base]}#{File.open(File.join(newVersion[:dir],
101
- filename), "rb").read}"
110
+ new_version[prefix][:base] =
111
+ "#{new_version[prefix][:base]}#{File.open(File.join(dir, manifest[HEADER_KEY]), "rb").read}"
102
112
  rescue Exception => e
103
- log_error(" Could not load common module: #{filename}", e)
113
+ log_error(" Could not load #{prefix.to_s} header: #{manifest[HEADER_KEY]}", e)
104
114
  end
105
115
  end
106
- end
107
- if manifest[OPTIONAL_KEY] && manifest[OPTIONAL_KEY].is_a?(Hash)
108
- manifest[OPTIONAL_KEY].each do |filename, dependancies|
109
- tmp_module = get_module(filename, dependancies, newVersion[:dir])
110
- if (tmp_module)
111
- tmp_module_name = get_module_name(filename)
112
- if (tmp_module_name)
113
- newVersion[:modules][tmp_module_name] = tmp_module
114
- else
115
- log_error(" Could not extract module name from: #{filename}")
116
+ if manifest[COMMON_KEY] && manifest[COMMON_KEY].is_a?(Array)
117
+ manifest[COMMON_KEY].each do |filename|
118
+ begin
119
+ new_version[prefix][:base] =
120
+ "#{new_version[prefix][:base]}#{File.open(File.join(dir, filename), "rb").read}"
121
+ rescue Exception => e
122
+ log_error(" Could not load #{prefix.to_s} common module: #{filename}", e)
116
123
  end
117
124
  end
118
125
  end
119
- end
120
- if manifest[FOOTER_KEY]
121
- begin
122
- newVersion[:footer] = File.open(File.join(newVersion[:dir], manifest[FOOTER_KEY]), "rb").read
123
- rescue Exception => e
124
- log_error(" Could not load footer: #{manifest[FOOTER_KEY]}", e)
125
- newVersion[FOOTER_KEY] = nil
126
+ if manifest[OPTIONAL_KEY] && manifest[OPTIONAL_KEY].is_a?(Hash)
127
+ manifest[OPTIONAL_KEY].each do |filename, dependancies|
128
+ tmp_module = get_module(filename, dependancies, dir)
129
+ if (tmp_module)
130
+ tmp_module_name = get_module_name(filename)
131
+ if (tmp_module_name)
132
+ new_version[prefix][:optional][tmp_module_name] = tmp_module
133
+ else
134
+ log_error(" Could not extract #{prefix.to_s} module name from: #{filename}")
135
+ end
136
+ end
137
+ end
138
+ end
139
+ if manifest[FOOTER_KEY]
140
+ begin
141
+ new_version[prefix][:footer] = File.open(File.join(dir, manifest[FOOTER_KEY]), "rb").read
142
+ rescue Exception => e
143
+ log_error(" Could not load #{prefix.to_s} footer: #{manifest[FOOTER_KEY]}", e)
144
+ new_version[:footer] = nil
145
+ end
126
146
  end
127
147
  end
128
- newVersion
148
+
149
+ module_loader.call(:default)
150
+ module_loader.call(:debug) if new_version[:debug]
151
+
152
+ new_version
129
153
  end
130
154
 
131
155
  def resolve_dependancies(modules, version, all_modules = {})
@@ -134,7 +158,7 @@ class Quilt
134
158
  my_all_modules = all_modules
135
159
  modules.each do |name|
136
160
  break if my_all_modules[name] == 2
137
- if (!version[:modules][name] || !version[:modules][name][:module])
161
+ if (!version[:optional][name] || !version[:optional][name][:module])
138
162
  log_error(" invalid module: #{name}");
139
163
  my_all_modules[name] = 2
140
164
  break
@@ -144,8 +168,8 @@ class Quilt
144
168
  break
145
169
  end
146
170
  my_all_modules[name] = 1
147
- out = "#{out}#{resolve_dependancies(version[:modules][name][:dependancies], version, my_all_modules)}"
148
- out = "#{out}#{version[:modules][name][:module]}"
171
+ out = "#{out}#{resolve_dependancies(version[:optional][name][:dependancies], version, my_all_modules)}"
172
+ out = "#{out}#{version[:optional][name][:module]}"
149
173
  my_all_modules[name] = 2
150
174
  end
151
175
  out
@@ -188,7 +212,7 @@ class Quilt
188
212
  @versions[name] = load_version(@config[:local_path], name)
189
213
  end
190
214
 
191
- def stitch(selector, version_name)
215
+ def stitch(selector, version_name, prefix = :default)
192
216
  return '' if !selector
193
217
  version = get_version(version_name)
194
218
  if (!version)
@@ -199,7 +223,7 @@ class Quilt
199
223
  # get modules we want to use
200
224
  modules = []
201
225
  if (selector.is_a?(Proc))
202
- modules = version[:modules].keys.select do |mod|
226
+ modules = version[prefix][:optional].keys.select do |mod|
203
227
  selector.call(mod)
204
228
  end
205
229
  elsif (selector.is_a?(Array))
@@ -207,8 +231,10 @@ class Quilt
207
231
  end
208
232
 
209
233
  # resolve dependancies
210
- output = "#{version[:base]}#{resolve_dependancies(modules, version, {})}#{version[:footer] ?
211
- version[:footer] :
212
- ''}"
234
+ output = "#{version[prefix][:base]}#{resolve_dependancies(modules,
235
+ version[prefix],
236
+ {})}#{version[prefix][:footer] ?
237
+ version[prefix][:footer] :
238
+ ''}"
213
239
  end
214
240
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-quilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: