CapicuaGen 0.0.3 → 0.1.0

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.
@@ -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