elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (Solucionado) [RUBY] Mostrar caracter unicode
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) [RUBY] Mostrar caracter unicode  (Leído 2,731 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
(Solucionado) [RUBY] Mostrar caracter unicode
« en: 20 Febrero 2012, 07:21 am »

Estoy intentando hacer una pantalla de ayuda en un script

El problema es que me da errores al intentar mostrar estos caracteres:

¿    ´    '    –

Código:
# -*- coding: UTF-8 -*-

def help()
 print "\n Opciones: \n\n"
 print ' -?          (Elimina el caracter "¿")' + "\n"
 print ' -comilla    (Reemplaza "´" por "'")' + "\n"
 print ' -ft         (Reemplaza " ft " por " feat. ")' + "\n"
 print ' -ft.        (Reemplaza " ft. " por " feat. ")' + "\n"
 print ' -guion      (Reemplaza "–" por "-")' + "\n"
 Process.exit
end

help()


He intentado mostrar el guión así, pero nada... :

Código
  1. print ' -guion      (Reemplaza "\u2013" por "-")' + "\n"




Y una pregunta de paso...

Como puedo hacer esto correctamente?

Código
  1. if (ARGV[0])==""
  2. help()
  3. end

La intención es que reconozca si el argumento está vació.

EDITO:
Vale lo segundo ya lo he conseguido:

Código
  1. if (ARGV[0])==()
  2. help()
  3. end


« Última modificación: 20 Febrero 2012, 08:53 am por EleKtro H@cker » En línea


RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [RUBY] Mostrar caracter unicode
« Respuesta #1 en: 20 Febrero 2012, 07:47 am »

El problema del primer script está en esta linea:

Código
  1. print ' -comilla    (Reemplaza "´" por "'")' + "\n"

En donde debes escapar la comilla simple para que se encierre bien dentro de los pares de comillas, así:

Código
  1. print ' -comilla    (Reemplaza "´" por "\'")' + "\n"

Ahora para mostrar caracteres de tipo unicode debes usar comillas dobles y escapar el resto de comillas dobles de la siguiente forma:

Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. def help()
  4. print "\n Opciones: \n\n"
  5. print ' -?          (Elimina el caracter "¿")' + "\n"
  6. print ' -comilla    (Reemplaza "´" por "\'")' + "\n"
  7. print ' -ft         (Reemplaza " ft " por " feat. ")' + "\n"
  8. print ' -ft.        (Reemplaza " ft. " por " feat. ")' + "\n"
  9. print " -guion      (Reemplaza \"\u2013\" por \"-\")" + "\n"
  10. end

Ahora desde que ARGV es un array puedes comprobar si está vacío de la siguiente manera:

Código
  1. ARGV.empty?

Lo que devuelve true o false dependiendo si tiene elementos o no.

--EDIT--
Puedes usar puts (put string) envés de print y esté adicionará el salto de linea al final sin necesidad de especificarlo con "\n"

Saludos


« Última modificación: 20 Febrero 2012, 08:01 am por RyogiShiki » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: [RUBY] Mostrar caracter unicode
« Respuesta #2 en: 20 Febrero 2012, 08:32 am »

Gracias por tu ayuda pero probé el code que me has dado y no me funcionó, daba error en la linea de "-comilla" xD

Pero por suerte he encontrado la lista de los caracteres unicode y gracias a tu ejemplo lo he conseguido:

Código
  1. def help()
  2. print "\n Opciones: \n\n"
  3. print "  -c --comilla        (Reemplaza \"\u00B4\" por \"\u0027\")" + "\n"
  4. print '  -f --featuring      (Reemplaza " ft " por " feat. ")' + "\n"
  5. print '                      (Reemplaza " ft. " por " feat. ")' + "\n"
  6. print "  -g --guion          (Reemplaza \"\u2013\" por \"-\")" + "\n"
  7. print "  -i --interrogante   (Elimina \"\u00BF\")" + "\n"
  8. Process.exit
  9. end

Lo malo de esto... Es que me dijiste que para usar el script que reemplaza el guion,Debo usar el código de páginas "chcp 1252"
Si activo la página, La ayuda se muestra mal:



Ya no se como lograr hacerlo correctamente, DIOSSS

PD: Como odio el tema de los chars    >:( >:( >:(


EDITO:

SOLUCIONADO ^^

Código
  1. system('chcp 850 >NUL')

Código
  1. def help()
  2. system('chcp 850 >NUL')
  3. print "\n Opciones: \n\n"
  4. print "  -c --comilla        Reemplaza \[\u00B4\] por \[\u0027\]\n\n"
  5. print "  -f --featuring      Reemplaza [ ft ]  por [ feat. ]\n"
  6. print "                      Reemplaza [ ft. ] por [ feat. ]\n\n"
  7. print "  -g --guion          Reemplaza \[\u2013\] por \[-\]\n\n"
  8. print "  -i --interrogante   Elimina \[\u00BF\]\n"
  9. Process.exit
  10. end

--EDIT--
Puedes usar puts (put string) envés de print y esté adicionará el salto de linea al final sin necesidad de especificarlo con "\n"

Estoy aprendiendo python y la verdad que la syntaxis de ruby es casi igual xD, Prefiero acostumbrarme a usar Print por el momento.


« Última modificación: 20 Febrero 2012, 09:01 am por EleKtro H@cker » En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: [RUBY] Mostrar caracter unicode
« Respuesta #3 en: 20 Febrero 2012, 10:59 am »

desde que ARGV es un array puedes comprobar si está vacío de la siguiente manera:
Código
  1. ARGV.empty?
Lo que devuelve true o false dependiendo si tiene elementos o no.

Uf, No encuentro la manera de utilizar eso...

Código
  1. If (ARGV[0].empty?)=="True"
  2. print "True"
  3. end

Código
  1. ARGV.empty?
  2. If True then
  3. print "True"
  4. else
  5. print "false"
  6. end

Creo que si me recomendases un manual de ruby (en español) dejaría de molestarte ._.   La verdad es que no encuentro casi ejemplos de nada, sobre Ruby. Todo lo estoy haciendo basandome en que se parece a python, y viendo ejemplos de ruby de Doddy xD
En línea


RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: (Solucionado) [RUBY] Mostrar caracter unicode
« Respuesta #4 en: 20 Febrero 2012, 16:18 pm »

la manera de usarlo en el condicional, como devuelve true o false es la siguiente:

Código
  1. if (ARGV.empty?) then
  2.    print "ARGV Vacio"
  3. end
  4.  

Como no se ha pasado ningun elemento como argumento entonces ARGV[0] que es el primer elemento del array no existe, por eso el método empty? se aplica al array como tal y no a un elemento de este

Existe buena documentación en la página de Ruby: http://www.ruby-lang.org/es/documentation/

En cuanto a lo del material, revisa este hilo: http://foro.elhacker.net/scripting/introducing_ruby_lo_que_debes_saber_sobre_ruby-t321085.0.html

Saludos
Saludos
« Última modificación: 20 Febrero 2012, 16:38 pm por RyogiShiki » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines