Module: UVMWP
- Included in:
- MDK::Project_set
- Defined in:
- lib/ebngen/adapter/mdk/uvmwp.rb
Constant Summary collapse
- @@data_provider =
{ "SchemaVersion" => "2.1", "Header" => "### uVision Project, (C) Keil Software", "WorkspaceName" => "WorkSpace" }
- @@data_remove =
["Sle7"]
Instance Method Summary collapse
- #add_node(pnode, hash_data, use_old: false) ⇒ Object
- #add_project(xml, project_path) ⇒ Object
- #init_project_set(xml, settings) ⇒ Object
- #save(xml, path) ⇒ Object
- #travesernode(node) ⇒ Object
Instance Method Details
#add_node(pnode, hash_data, use_old: false) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ebngen/adapter/mdk/uvmwp.rb', line 12 def add_node(pnode, hash_data, use_old: false) hash_data.each do |key,value| if use_old sv = pnode.at_xpath(key) end unless (sv) sv = Nokogiri::XML::Node.new(key, xml) pnode << sv end if value.class == Hash add_node(sv, value, use_old) elsif value.class == Array value.each do |va| nsv = Nokogiri::XML::Node.new(key, xml) sv << nsv nsv.content = va end else sv.content = value end end end |
#add_project(xml, project_path) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/ebngen/adapter/mdk/uvmwp.rb', line 61 def add_project(xml , project_path) # find <ProjectWorkspace> workspace_node = xml.at_xpath("/ProjectWorkspace") Core.assert(workspace_node, "no <workspace> present") templat_project = workspace_node.at_xpath("project[@template='1']") new_project = templat_project.dup # add <PathAndName> path_node = new_project.at_xpath("PathAndName") path_node.content = project_path workspace_node << new_project new_project.at_xpath("NodeIsActive").content = 0 new_project.at_xpath("NodeIsExpanded").content = 0 new_project.remove_attribute("template") # add project into existing lists #@projects[ project_path ] = project_node end |
#init_project_set(xml, settings) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ebngen/adapter/mdk/uvmwp.rb', line 47 def init_project_set(xml, settings) workspace_node = xml.at_xpath("ProjectWorkspace") travesernode(workspace_node) workspace_node.set_attribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") workspace_node.set_attribute("xsi:noNamespaceSchemaLocation","project_mpw.xsd") dummy_project = workspace_node.at_xpath("/ProjectWorkspace/project") dummy_project.set_attribute("template","1") @@data_remove.each do |node| nt = workspace_node.at_xpath(node) nt.remove if ! nt.nil? end end |
#save(xml, path) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/ebngen/adapter/mdk/uvmwp.rb', line 78 def save(xml, path) Core.assert(path.is_a?(String)) do "param is not a string #{path.class.name}" end workspace_node = xml.at_xpath("/ProjectWorkspace") Core.assert(workspace_node, "no <workspace> present") #remove old project templat_project = workspace_node.at_xpath("project[@template='1']") templat_project.remove if ! templat_project.nil? FileUtils.mkdir_p File.dirname(path) if ! File.exist?(File.dirname(path)) File.write(path, xml.to_xml) end |
#travesernode(node) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ebngen/adapter/mdk/uvmwp.rb', line 35 def travesernode(node) if node.children tname = node.name if @@data_provider.has_key?(tname) node.content = @@data_provider[tname] end end node.children.each do |subnode| next if subnode.nil? travesernode(subnode) end end |