class CapicuaGen::Gaspar::CSProyectFeature

Característica generadora para proyectos Windows de CS.

Public Class Methods

new(values= {}) click to toggle source

Inicializa la característica

Calls superclass method
# File lib/CapicuaGenGaspar/Proyect/CSProyect/Source/cs_proyect_feature.rb, line 41
def initialize(values= {})
  super(values)

end

Public Instance Methods

configure_attributes() click to toggle source

Configura los atributos personalizados de la característica (antes de establecer el generador)

# File lib/CapicuaGenGaspar/Proyect/CSProyect/Source/cs_proyect_feature.rb, line 53
def configure_attributes()
  self.generation_attributes[:out_dir]= "#{self.generation_attributes[:out_dir]}/#{self.generation_attributes[:namespace]}" unless self.generation_attributes.has_in_self?(:out)
end
get_proyect_files() click to toggle source

Obtiene los archivos que se incluiran en este proyeto

# File lib/CapicuaGenGaspar/Proyect/CSProyect/Source/cs_proyect_feature.rb, line 58
def get_proyect_files()
  resultado= ''

  template_target= get_template_target_by_name('proyect')

  directory_base= File.dirname(File.join(self.generation_attributes[:out_dir], template_target.out_file))

  # Recorro todas las características
  generator.features().each do |f|
    #Obtengo todos los archivos asociados
    f.get_relative_out_files(:directory_base => directory_base, :types => :proyect_file).each do |unix_path|

      p        = unix_path.gsub /\//, '\\'
      extension= File.extname(p).downcase
      file_type= :proyect_file
      Dir.chdir directory_base do
        file_type= get_type(p)
      end


      case extension
        when '.cs'

          case file_type
            when :proyect_file
              if p=~ /(?:.+\\)?(.+)\.Designer.cs/i
                resultado << "      <Compile Include= \"#{p}\" >" << $/
                resultado << "        <DependentUpon>#{$1}.cs</DependentUpon>" << $/
                resultado << "      </Compile>" << $/
              elsif p=~ /(?:.+\\)?(.+)\.svc\.cs/i
                resultado << "      <Compile Include= \"#{p}\" >" << $/
                resultado << "        <DependentUpon>#{$1}.svc</DependentUpon>" << $/
                resultado << "      </Compile>" << $/
              else
                resultado << "      <Compile Include= \"#{p}\" />" << $/
              end
            when :form_proyect_file
              resultado << "      <Compile Include= \"#{p}\" >" << $/
              resultado << "        <SubType>Form</SubType>" << $/
              resultado << "      </Compile>" << $/
          end

        when '.resx'
          if p=~ /(?:.+\\)?(.+)\.resx/i
            resultado << "      <EmbeddedResource Include= \"#{p}\" >" << $/
            resultado << "        <DependentUpon>#{$1}.cs</DependentUpon>" << $/
            resultado << "      </EmbeddedResource>" << $/
          end
        when '.config', '.svc'
          resultado << "      <Content Include= \"#{p}\" />" << $/
        else
          resultado << "      <Compile Include= \"#{p}\" />" << $/
      end
    end
  end

  return resultado
end
get_type(file) click to toggle source

Devuelve el tipo de archivo de un elemento.

# File lib/CapicuaGenGaspar/Proyect/CSProyect/Source/cs_proyect_feature.rb, line 118
def get_type(file)

  return :proyect_file unless file=~/.cs$/

  # Compruebo si es un archivo de Windows
  designed= file.sub(/\.cs$/, ".designer.cs")

  return :proyect_file if file==designed
  return :proyect_file if not File.exist?(designed)

  text= File.open(designed).read

  if text=~/:\s*(Form|System.Windows.Form)/
    return :form_proyect_file
  else
    return :proyect_file
  end

end
reset_attributes() click to toggle source

Resetea los atributos personalizados de la característica (antes de establecer el generador)

# File lib/CapicuaGenGaspar/Proyect/CSProyect/Source/cs_proyect_feature.rb, line 47
def reset_attributes
  self.generation_attributes[:out_dir]  = nil
  self.generation_attributes[:namespace]= nil
end