ebngen 1.0.2 → 1.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.
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