CapicuaGen 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,3 @@
1
-
2
1
  =begin
3
2
 
4
3
  CapicuaGen
@@ -20,6 +19,7 @@ Este software es código libre, y se licencia bajo LGPL.
20
19
  Para más información consultar http://www.gnu.org/licenses/lgpl.html
21
20
  =end
22
21
 
22
+ require 'colorize'
23
23
 
24
24
  # Agrega opciones de refleccion a las clases que lo implementan
25
25
  module CapicuaGen
@@ -75,21 +75,30 @@ module CapicuaGen
75
75
 
76
76
  case mode
77
77
  when :override
78
- result= "* #{template} -> '#{out_file}': Sobreescrito"
78
+ result= "* #{template}".colorize(:yellow) + " -> '#{out_file}': Sobreescrito"
79
79
  when :new
80
- result= "+ #{template} -> '#{out_file}': Creado"
80
+ result= "+ #{template}".colorize(:blue) + " -> '#{out_file}': Creado"
81
81
  when :ignore
82
- result= "! #{template} -> '#{out_file}': NO creado"
82
+ result= "! #{template}".colorize(:red) + " -> '#{out_file}': NO creado"
83
83
  when :delete
84
- result= "- #{template} -> '#{out_file}': Eliminado"
84
+ result= "- #{template}".colorize(:magenta) + " -> '#{out_file}': Eliminado"
85
85
  else
86
- result= "? #{template} -> '#{out_file}': #{mode.to_s}"
86
+ result= "? #{template}".colorize(:red) + " -> '#{out_file}': #{mode.to_s}"
87
87
  end
88
88
 
89
89
  puts_message result
90
90
 
91
91
  end
92
92
 
93
+ # Mesaje para template copiado
94
+ def puts_copy_template(gem, type, feature, out_file, mode)
95
+
96
+ result = ''
97
+ template= "#{gem}, #{type}, #{feature}"
98
+ puts_created_template(template, out_file, mode)
99
+
100
+ end
101
+
93
102
  # Mensaje gneracion acabada
94
103
  def puts_end_generate(start_time, end_time)
95
104
 
@@ -98,6 +107,36 @@ module CapicuaGen
98
107
  puts
99
108
  end
100
109
 
110
+ # Mesaje para plantilla creada
111
+ def puts_list_template(gem, file, feature)
112
+ puts_message "- gem:".colorize(:red) + " '#{gem}', " + "type: ".colorize(:yellow) + "'#{file}', " + "feature: ".colorize(:blue) + "'#{feature}'"
113
+ end
114
+
115
+
116
+ def puts_catched_error(e)
117
+ $stderr.puts e.to_s.colorize(:red)
118
+ $stderr.puts
119
+ $stderr.puts e.backtrace.join($/).to_s.colorize(:red)
120
+ end
121
+
122
+ # Indica que un archivo fue modificado
123
+ def puts_file_modified(out_file, mode)
124
+ case mode
125
+ when :override
126
+ result= "*".colorize(:yellow) + " -> '#{out_file}': Modificado"
127
+ when :new
128
+ result= "+".colorize(:blue) + " -> '#{out_file}': Creado"
129
+ when :ignore
130
+ result= "!".colorize(:red) + " -> '#{out_file}': NO modificado"
131
+ when :delete
132
+ result= "-".colorize(:magenta) + " -> '#{out_file}': Eliminado"
133
+ else
134
+ result= "?".colorize(:red) + " -> '#{out_file}': #{mode.to_s}"
135
+ end
136
+ puts_message result
137
+
138
+ end
139
+
101
140
 
102
141
  end
103
142
 
@@ -1,87 +1,87 @@
1
- =begin
2
-
3
- CapicuaGen
4
-
5
- CapicuaGen es un software que ayuda a la creación automática de
6
- sistemas empresariales a través de la definición y ensamblado de
7
- diversos generadores de características.
8
-
9
- El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
10
- del 2016.
11
-
12
- Puede modificar y distribuir este software, según le plazca, y usarlo
13
- para cualquier fin ya sea comercial, personal, educativo, o de cualquier
14
- índole, siempre y cuando incluya este mensaje, y se permita acceso el
15
- código fuente.
16
-
17
- Este software es código libre, y se licencia bajo LGPL.
18
-
19
- Para más información consultar http://www.gnu.org/licenses/lgpl.html
20
- =end
21
-
22
-
23
- module CapicuaGen
24
-
25
- require 'fileutils'
26
- require 'ERB'
27
-
28
-
29
- # Clase ayudante para crear arvhiso a partir de Template
30
- class TemplateHelper
31
-
32
- private
33
-
34
- def initialize
35
-
36
- end
37
-
38
- public
39
-
40
- # Genera un archivo en base a un template
41
- def self.generate_template (erb_file, current_binding, values= {})
42
-
43
-
44
- erb = ERB.new(File.open(erb_file, 'r').read)
45
-
46
-
47
- # Archivo de salida
48
- out_file = values[:out_file] if values[:out_file]
49
- force = values[:force] if values[:force]
50
-
51
- #caracteristica
52
- feature = values[:feature] if values[:feature]
53
- message_helper= feature.message_helper if feature
54
- message_helper= MessageHelper.new unless message_helper
55
-
56
- # Genero la plantilla
57
- result = erb.result(current_binding)
58
-
59
- # Devuelve el resultado si no hay archivo de salida
60
- return result unless out_file
61
-
62
-
63
- exists= File.exist?(out_file)
64
-
65
-
66
- if exists and not force
67
- message_helper.puts_created_template(File.basename(erb_file), out_file, :ignore)
68
- return result
69
- end
70
-
71
-
72
- # Creo el directorio
73
- FileUtils::mkdir_p File.dirname(out_file)
74
-
75
- # Escribo el resultado
76
- File.open(out_file, 'w') { |file| file.write(result) }
77
-
78
- if exists
79
- message_helper.puts_created_template(File.basename(erb_file), out_file, :override)
80
- else
81
- message_helper.puts_created_template(File.basename(erb_file), out_file, :new)
82
- end
83
-
84
- return result
85
- end
86
- end
1
+ =begin
2
+
3
+ CapicuaGen
4
+
5
+ CapicuaGen es un software que ayuda a la creación automática de
6
+ sistemas empresariales a través de la definición y ensamblado de
7
+ diversos generadores de características.
8
+
9
+ El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
10
+ del 2016.
11
+
12
+ Puede modificar y distribuir este software, según le plazca, y usarlo
13
+ para cualquier fin ya sea comercial, personal, educativo, o de cualquier
14
+ índole, siempre y cuando incluya este mensaje, y se permita acceso el
15
+ código fuente.
16
+
17
+ Este software es código libre, y se licencia bajo LGPL.
18
+
19
+ Para más información consultar http://www.gnu.org/licenses/lgpl.html
20
+ =end
21
+
22
+
23
+ module CapicuaGen
24
+
25
+ require 'fileutils'
26
+ require 'ERB'
27
+
28
+
29
+ # Clase ayudante para crear arvhiso a partir de Template
30
+ class TemplateHelper
31
+
32
+ private
33
+
34
+ def initialize
35
+
36
+ end
37
+
38
+ public
39
+
40
+ # Genera un archivo en base a un template
41
+ def self.generate_template (erb_file, current_binding, values= {})
42
+
43
+
44
+ erb = ERB.new(File.open(erb_file, 'r').read)
45
+
46
+
47
+ # Archivo de salida
48
+ out_file = values[:out_file] if values[:out_file]
49
+ force = values[:force] if values[:force]
50
+
51
+ #caracteristica
52
+ feature = values[:feature] if values[:feature]
53
+ message_helper= feature.message_helper if feature
54
+ message_helper= MessageHelper.new unless message_helper
55
+
56
+ # Genero la plantilla
57
+ result = erb.result(current_binding)
58
+
59
+ # Devuelve el resultado si no hay archivo de salida
60
+ return result unless out_file
61
+
62
+
63
+ exists= File.exist?(out_file)
64
+
65
+
66
+ if exists and not force
67
+ message_helper.puts_created_template(File.basename(erb_file), out_file, :ignore)
68
+ return result
69
+ end
70
+
71
+
72
+ # Creo el directorio
73
+ FileUtils::mkdir_p File.dirname(out_file)
74
+
75
+ # Escribo el resultado
76
+ File.open(out_file, 'w') { |file| file.write(result) }
77
+
78
+ if exists
79
+ message_helper.puts_created_template(File.basename(erb_file), out_file, :override)
80
+ else
81
+ message_helper.puts_created_template(File.basename(erb_file), out_file, :new)
82
+ end
83
+
84
+ return result
85
+ end
86
+ end
87
87
  end
@@ -1,100 +1,100 @@
1
- =begin
2
-
3
- CapicuaGen
4
-
5
- CapicuaGen es un software que ayuda a la creación automática de
6
- sistemas empresariales a través de la definición y ensamblado de
7
- diversos generadores de características.
8
-
9
- El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
10
- del 2016.
11
-
12
- Puede modificar y distribuir este software, según le plazca, y usarlo
13
- para cualquier fin ya sea comercial, personal, educativo, o de cualquier
14
- índole, siempre y cuando incluya este mensaje, y se permita acceso el
15
- código fuente.
16
-
17
- Este software es código libre, y se licencia bajo LGPL.
18
-
19
- Para más información consultar http://www.gnu.org/licenses/lgpl.html
20
- =end
21
-
22
- require 'nokogiri'
23
- require "rexml/document"
24
-
25
- module CapicuaGen
26
-
27
- # Clase ayudante para tratar con archivos XML
28
- class XMLHelper
29
-
30
- private
31
-
32
- def initialize
33
-
34
- end
35
-
36
- public
37
-
38
- # obtiene un nodo de un xml
39
- def self.get_node_from_xml_document(xml, xpath)
40
-
41
- # Busco el nodo
42
- xml_node_xpath= xml.root.xpath(xpath)
43
-
44
- # Si no xml_node_xpath un primer nodo
45
- return xml_node_xpath.first if xml_node_xpath.first
46
-
47
- return create_node(xml.root, xpath)
48
-
49
- end
50
-
51
- private
52
-
53
- # Localiza un nodo y si no existe lo crea
54
- def self.create_node(xml_node, path)
55
-
56
- paths= path.split(/\//).select { |x| !x.blank? }
57
-
58
-
59
- current_node_name= paths.shift
60
-
61
- # Alcance el ultimo nodo lo creo
62
- if paths.count==0
63
- current_node= Nokogiri::XML::Node.new(clear_node_name(current_node_name), xml_node)
64
- xml_node.add_child(current_node)
65
- return current_node
66
- end
67
-
68
- # Si no existe lo creo
69
- current_node= xml_node.xpath(current_node_name).first
70
- unless current_node
71
- current_node= Nokogiri::XML::Node.new(clear_node_name(current_node_name), xml_node)
72
- xml_node.add_child(current_node)
73
- end
74
-
75
- return create_node current_node, paths.join('/')
76
-
77
- end
78
-
79
- # Limpia un atributo del nombre de un nodo
80
- def self.clear_node_name(node_string)
81
- if node_string=~/([^\[]+)\[/
82
- return $1
83
- else
84
- return node_string
85
- end
86
- end
87
-
88
-
89
- # Formate el xml
90
- def self.format(xml_string)
91
- doc= REXML::Document.new(xml_string)
92
- doc.context[:attribute_quote]= :quote
93
- formatted= ""
94
- doc.write(formatted, 2)
95
- return formatted
96
- end
97
-
98
-
99
- end
100
- end
1
+ =begin
2
+
3
+ CapicuaGen
4
+
5
+ CapicuaGen es un software que ayuda a la creación automática de
6
+ sistemas empresariales a través de la definición y ensamblado de
7
+ diversos generadores de características.
8
+
9
+ El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
10
+ del 2016.
11
+
12
+ Puede modificar y distribuir este software, según le plazca, y usarlo
13
+ para cualquier fin ya sea comercial, personal, educativo, o de cualquier
14
+ índole, siempre y cuando incluya este mensaje, y se permita acceso el
15
+ código fuente.
16
+
17
+ Este software es código libre, y se licencia bajo LGPL.
18
+
19
+ Para más información consultar http://www.gnu.org/licenses/lgpl.html
20
+ =end
21
+
22
+ require 'nokogiri'
23
+ require "rexml/document"
24
+
25
+ module CapicuaGen
26
+
27
+ # Clase ayudante para tratar con archivos XML
28
+ class XMLHelper
29
+
30
+ private
31
+
32
+ def initialize
33
+
34
+ end
35
+
36
+ public
37
+
38
+ # obtiene un nodo de un xml
39
+ def self.get_node_from_xml_document(xml, xpath)
40
+
41
+ # Busco el nodo
42
+ xml_node_xpath= xml.root.xpath(xpath)
43
+
44
+ # Si no xml_node_xpath un primer nodo
45
+ return xml_node_xpath.first if xml_node_xpath.first
46
+
47
+ return create_node(xml.root, xpath)
48
+
49
+ end
50
+
51
+ private
52
+
53
+ # Localiza un nodo y si no existe lo crea
54
+ def self.create_node(xml_node, path)
55
+
56
+ paths= path.split(/\//).select { |x| !x.blank? }
57
+
58
+
59
+ current_node_name= paths.shift
60
+
61
+ # Alcance el ultimo nodo lo creo
62
+ if paths.count==0
63
+ current_node= Nokogiri::XML::Node.new(clear_node_name(current_node_name), xml_node)
64
+ xml_node.add_child(current_node)
65
+ return current_node
66
+ end
67
+
68
+ # Si no existe lo creo
69
+ current_node= xml_node.xpath(current_node_name).first
70
+ unless current_node
71
+ current_node= Nokogiri::XML::Node.new(clear_node_name(current_node_name), xml_node)
72
+ xml_node.add_child(current_node)
73
+ end
74
+
75
+ return create_node current_node, paths.join('/')
76
+
77
+ end
78
+
79
+ # Limpia un atributo del nombre de un nodo
80
+ def self.clear_node_name(node_string)
81
+ if node_string=~/([^\[]+)\[/
82
+ return $1
83
+ else
84
+ return node_string
85
+ end
86
+ end
87
+
88
+
89
+ # Formate el xml
90
+ def self.format(xml_string)
91
+ doc= REXML::Document.new(xml_string)
92
+ doc.context[:attribute_quote]= :quote
93
+ formatted= ""
94
+ doc.write(formatted, 2)
95
+ return formatted
96
+ end
97
+
98
+
99
+ end
100
+ end