Analizador Ruby para secuencias de comandos

Quiero editar archivos de Ruby usando scripts de Python y necesito

  1. Verifique si existe una llamada de función dentro de una clase, agregue si no está presente, verifique los argumentos de la llamada de función si está presente y cambie en consecuencia
  2. Compruebe si existe una definición de función y, si no, inserte una definición de función dentro de una clase
  3. Puntos 1 y 2 para bloques (y también para clases y módulos)
  4. Al reconstruir el archivo editado, los comentarios deben estar intactos.

Sugiérame un analizador de Ruby/Rails escrito en Python. Además, dígame si es mucho más fácil en Ruby en lugar de encontrar una biblioteca en Python, y si eso me daría mucha más flexibilidad e incluso más habilidades para controlar los archivos de Ruby.

Respuestas (1)

¿Está tratando de editar los archivos de Ruby mientras se ejecuta la aplicación de Ruby?
¿O está utilizando los scripts de Python para generar un proyecto, como cookiecutter ?

Ruby admite la reflexión y la metaprogramación para que pueda:

  1. verificar si existe un método usando respond_to?
  2. define un método usando define_method .

Si fuera yo, haría todo en Ruby, pero depende de su caso de uso.

Estoy tratando de generar un proyecto como cookiecutter. Y tiene razón, más tarde me di cuenta de que tendré que terminar teniendo un analizador completo de Ruby de una forma u otra escrito completamente en Python, y tiene más sentido usar la propia reflexión y meta api de Ruby para cambiar las cosas en los archivos de Ruby. para comprobar si la función existe o no, o para añadir otras nuevas. Pero aún se quedaría corto cuando se trata de agregar una declaración de asignación y llamadas a funciones en una función o bloques existentes. (¿O lo sería? ¿También tenemos métodos para eso?)