ebngen 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 289fba682eff193bbcdba2b0d625bb8bcf1d924d
4
- data.tar.gz: a8f9b56f7039a6dceae9451ff50f5b381ee634a8
3
+ metadata.gz: f863cc72f12344124ff81b3aa7e3a8217fadd927
4
+ data.tar.gz: 7c235d27bbf94c9170da3efe3a8ba50e91165b6d
5
5
  SHA512:
6
- metadata.gz: 2adc6498855aeed317dfef63d4c93471eca978624a217c1e8e5622beddccb6c5f885e5868af6103711acd3654e39a9a0b688007299730e8647645680617b3fdf
7
- data.tar.gz: e1f54f7610740300010192657afc15be7be2045c1e7a3def44fb0e37e2f9a680f0bd74dcc03c6e25362fe31a43be70ef97ba053b8319bdc685e5d2e60ccc0b96
6
+ metadata.gz: aeb4aa02969f5521d775a51287afac98174e4b53d0cff7010ee42f25a6536f41a8be35d8289357457c792c17b4799efc0ace6188542507ac679c56a37076e652
7
+ data.tar.gz: 914f0738dc4e77d8419003813b4f3f4f1d7b8603b86aa429a483dade9e76a0d433ec4d806c3aa02d7acf462ee1be19a776bd938b28dea107770c1488d3f2999f
@@ -4,6 +4,16 @@ require 'pathname'
4
4
 
5
5
  class Hash
6
6
  def to_xml(doc)
7
+ return if doc.nil?
8
+ self.each do |key, value|
9
+ mynode = Nokogiri::XML::Node.new key, doc
10
+ doc.add_child mynode
11
+ value.to_xml(mynode) if value.class == Hash
12
+ mynode.content = value if value.class == String or value.class == Fixnum
13
+ end
14
+ return doc
15
+ end #end to_xml
16
+ def to_xml!(doc)
7
17
  return if doc.nil?
8
18
  self.each do |key, value|
9
19
  if doc.css("/#{key}").count == 0
@@ -16,7 +26,7 @@ class Hash
16
26
  mynode.content = value if value.class == String or value.class == Fixnum
17
27
  end
18
28
  return doc
19
- end #end to_xml
29
+ end #end to_xml!
20
30
  end #end Hash
21
31
 
22
32
  module EWP
@@ -28,15 +38,16 @@ module EWP
28
38
  nset = load_node(doc, "/project/configuration")
29
39
  #use existing one
30
40
  nset.each do |element|
31
- if element.xpath("name").text.downcase == target.downcase
32
- return element
41
+ if element.css("/name").text.downcase == target.downcase
42
+ puts "find existing #{element.css("/name").text.downcase}"
43
+ return element
33
44
  end
34
45
  end
35
46
  #create new one
36
47
  nset.each do |element|
37
48
  #use the first available configuration
38
49
  t = element.dup
39
- t.xpath('name').text = target
50
+ t.css('/name').text = target
40
51
  #doc.xpath("/project") << t
41
52
  element.add_previous_sibling(t)
42
53
  return t
@@ -84,13 +95,17 @@ module EWP
84
95
  end
85
96
 
86
97
  def create_node(doc, hash_value)
98
+ hash_value.to_xml!(doc)
99
+ end
100
+
101
+ def append_node(doc, hash_value)
87
102
  hash_value.to_xml(doc)
88
103
  end
89
104
 
90
105
  def add_specific(target_node, doc)
91
106
  doc.each do |key, value|
92
107
  checked = false
93
- options = target_node.xpath("//option")
108
+ options = target_node.xpath(".//option")
94
109
  options.each do |option|
95
110
  if option.css('name').text == key
96
111
  value.each do |subkey, subvalue|
@@ -102,7 +117,7 @@ module EWP
102
117
  end
103
118
  elsif subvalue.class == Array
104
119
  subvalue.each do |line|
105
- create_node(option, {subkey => line})
120
+ append_node(option, {subkey => line})
106
121
  end
107
122
  else
108
123
  puts "not supported format must be string or array"
@@ -124,7 +139,7 @@ module EWP
124
139
  create_node(option_node, {subkey => subvalue})
125
140
  elsif subvalue.class == Array
126
141
  subvalue.each do |line|
127
- create_node(option_node, {subkey => line})
142
+ append_node(option_node, {subkey => line})
128
143
  end
129
144
  else
130
145
  puts "not supported format must be string or array"
@@ -141,7 +156,7 @@ module EWP
141
156
  def set_specific(target_node, doc)
142
157
  doc.each do |key, value|
143
158
  checked = false
144
- options = target_node.xpath("//option")
159
+ options = target_node.xpath(".//option")
145
160
  options.each do |option|
146
161
  if option.css('name').text == key
147
162
  value.each do |subkey, subvalue|
@@ -153,7 +168,7 @@ module EWP
153
168
  end
154
169
  elsif subvalue.class == Array
155
170
  subvalue.each do |line|
156
- create_node(node, {subkey => line})
171
+ append_node(node, {subkey => line})
157
172
  end
158
173
  else
159
174
  puts "not supported format must be string or array"
@@ -176,7 +191,7 @@ module EWP
176
191
  create_node(option_node, {subkey => subvalue})
177
192
  elsif subvalue.class == Array
178
193
  subvalue.each do |line|
179
- create_node(option_node, {subkey => line})
194
+ append_node(option_node, {subkey => line})
180
195
  end
181
196
  else
182
197
  puts "not supported format must be string or array"
@@ -203,7 +218,8 @@ module EWP
203
218
  files_hash = Hash.new
204
219
  source_hash.each do |src|
205
220
  rootdir = src['rootdir']
206
- virtual_dir = src['virtual_dir']
221
+ virtual_dir = src['virtual_dir'] if src.has_key? 'virtual_dir'
222
+ virtual_dir = src['virtual-dir'] if src.has_key? 'virtual-dir'
207
223
  if src.has_key?('path')
208
224
  path = src['path']
209
225
  else
@@ -81,7 +81,8 @@ class Project
81
81
  #set project type
82
82
  end
83
83
 
84
- def outdir()
84
+ def document()
85
+ project_name = get_project_name()
85
86
 
86
87
  end
87
88
 
@@ -147,7 +148,7 @@ class Project
147
148
  }
148
149
  set_specific(target_node, settings)
149
150
  settings = {'GEndianModeBE' => {
150
- 'state' => 1
151
+ 'state' => '1'
151
152
  }
152
153
  }
153
154
  set_specific(target_node, settings)
@@ -158,8 +159,18 @@ class Project
158
159
  end
159
160
 
160
161
  def target_as_defines(target_node, doc)
162
+ defines_array = Array.new
163
+ doc.each do |item|
164
+ if item.class == Hash
165
+ item.each do |key, value|
166
+ defines_array.insert(-1, "#{key}=#{value}")
167
+ end
168
+ else
169
+ defines_array.insert(-1, item)
170
+ end
171
+ end
161
172
  settings = {'ADefines' => {
162
- 'state' => doc
173
+ 'state' => defines_array
163
174
  }
164
175
  }
165
176
  add_specific(target_node, settings)
@@ -183,8 +194,18 @@ class Project
183
194
  end
184
195
 
185
196
  def target_as_flags(target_node, doc)
197
+ flags_array = Array.new
198
+ doc.each do |item|
199
+ if item.class == Hash
200
+ item.each do |key, value|
201
+ flags_array.insert(-1, "#{key}=#{value}")
202
+ end
203
+ else
204
+ flags_array.insert(-1, item)
205
+ end
206
+ end
186
207
  settings = {'AExtraOptionsV2' => {
187
- 'state' => doc
208
+ 'state' => flags_array
188
209
  }
189
210
  }
190
211
  add_specific(target_node, settings)
@@ -212,8 +233,16 @@ class Project
212
233
  end
213
234
 
214
235
  def target_cc_defines(target_node, doc)
236
+ defines_array = Array.new
237
+ doc.each do |item, item_value|
238
+ if item_value.nil?
239
+ defines_array.insert(-1, "#{item}")
240
+ else
241
+ defines_array.insert(-1, "#{item}=#{item_value}")
242
+ end
243
+ end
215
244
  settings = {'CCDefines' => {
216
- 'state' => doc
245
+ 'state' => defines_array
217
246
  }
218
247
  }
219
248
  add_specific(target_node, settings)
@@ -238,7 +267,7 @@ class Project
238
267
 
239
268
  def target_cc_flags(target_node, doc)
240
269
  settings_check = { 'IExtraOptionsCheck' => {
241
- 'state' => 1
270
+ 'state' => '1'
242
271
  }
243
272
  }
244
273
  add_specific(target_node, settings_check)
@@ -306,7 +335,17 @@ class Project
306
335
  end
307
336
 
308
337
  def target_outdir(target_node, doc)
309
-
338
+ =begin
339
+ <option>
340
+ <name>IlinkOutputFile</name>
341
+ <state>K70_pit_drivers_test.out</state>
342
+ </option>
343
+ =end
344
+ settings = { 'IlinkOutputFile' => {
345
+ 'state' => "#{get_project_name()}.out"
346
+ }
347
+ }
348
+ set_specific(target_node, settings)
310
349
  end
311
350
 
312
351
  end
@@ -46,6 +46,8 @@ class Translator
46
46
  end
47
47
  #if has more addon
48
48
  if struct[addon]['__add__'].count != 0
49
+ struct[subnode] = struct[subnode].deep_merge(deep_copy(struct[addon]))
50
+ struct[addon]['attribute'] = 'required'
49
51
  struct[addon]['__add__'].each do |submodule|
50
52
  deep_add_merge(struct, addon, submodule)
51
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebngen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hake Huang
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-12 00:00:00.000000000 Z
12
+ date: 2017-06-16 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: embedded project generator
15
15
  email: hakehuang@gmail.com