El jhotdraw es un proyecto de código abierto en Java para dibujar. Convierte dibujos a mano alzada en curvas de bezier cúbicas. La fuente está disponible: descargar y traducir. No se asustan en el tamaño del proyecto: se necesita sólo un par de clases, a saber:
org.jhotdraw.geom.Bezier
org.jhotdraw.geom.BezierPath
org.jhotdraw.geom.Geom
Al traducir inicio cambiando todas las declaraciones de recogida a las matrices (vectores de uso si se dirigen sólo a los usuarios FP10) . Tengo algunas expresiones regulares que puede encontrar útiles en la conversión. Puedo publicarlas si lo desea.
Aquí hay una lista de expresiones regulares que puede serte útiles. En cada par, pegue el primero en el área de texto de búsqueda y el segundo en el área de reemplazo, marque la casilla de verificación de expresiones regulares y use los botones Buscar y Reemplazar. No utiliceReplace All
- ninguno de estos se garantiza que sea infalible.
Reemplazar todos int/double name
declaraciones con var name:Number
\b(double|int)\s+(\w+)\b
var $2:Number
Reemplazar todos Point2D.Double name
declaraciones con var name:Point
\bPoint2D\.Double\s+(\w+)\b
var $1:Point
Reemplazar todos int/double name
declaraciones en las firmas de función con name:Number
\(([^)]*)\b(?:double|int)\s+(\w+)\b([^)]*?)\)
($1$2:Number$3)
Reemplazar todos Point2D.Double name
declaraciones en las firmas de función con name:Point
\(([^)]*)\b(?:Point2D\.Double)\s+(\w+)\b([^)]*?)\)
($1$2:Point$3)
Antes de cambiar firmas de método, asegúrese de que todos los métodos son estáticos:
(public|private)\s+(?!static)
Reemplazar firmas de los métodos a AS formato
(public|private)\s+static\s+(\w+)\s+(\w+)\s*\(([^)]*)\)
$1 static function $3($4):$2
Reemplace ArrayList.get (index) con array [index] // Advertencia: falla para list.get (list.size() - 1)
(\w+)\.get\(([^)]+)\)
$1[$2]
//avoid the() failure
(\w+)\.get\(([^)]*(?:\([^)]*\))[^)]*)\)
$1[$2]
Reemplazar ArrayList.set(index, element)
con array[index] = element
// Advertencia: falla por list.set (i, list.size())
(\w+)\.set\(([^,]+)\s*,\s*([^)]+)\)
$1[$2] = $3
/*the above regex successfully made the following replacement*/
cleaned.set(cleaned.size() - 1, digitizedPoints[digitizedPoints.size() - 1])
cleaned[cleaned.size() - 1] = digitizedPoints[digitizedPoints.size() - 1]
Reemplazar arraylist.add(object)
con array.push(object)
//would fail if object contains ')'
//add(index, object) should be done with splice
(\w+)\.add\(([^)]+)\)
$1.push($2)
//too many failures - fail safe version -
//still fails for nested parenthesis list.add(new Point(a.first(), a.last()))
//- only three such cases - the effort to match parenthesis wouldn't be worth it
//works for list.add(new Point(3, 4)) - there were many similar cases
(\w+)\.add\(([^)]*(?:\([^)]*\))[^)]*)\)
$1.push($2)
Reemplace las firmas de los métodos al formato AS (métodos no estáticos)
(public|private)\s+(?!function)(\w+)\s+(\w+)\s*\(([^)]*)\)
$1 function $3($4):$2
Reemplazar todos int/double/point/boolean name
declaraciones en las firmas de función con name:type
\(([^)]*)\b(\w+)\s+(\w+)\b([^)]*?)\)
($1$3:$2$4)
Reemplazar todas las declaraciones de variables en su propia línea con un formato de AS = a
^(\s+)(\w+)\s+(\w+)\s*=\s*(.+?)\s*;(\s*)$
$1var $3:$2 = $4;$5
cambio de colocación de aparatos de ortodoncia.
^(\t)(\s*)([^\n]+)\{\s*(\n)\s+
$1$2$3$4$1$2{$4$1$2
cambio } else
en } \n else
^([ \t]+)}[ \t]*else\b([^\n]*)(\n)
$1}$3$1else$2$3
Sustitución 4 declaraciones de variables en una sola línea a AS en diferentes líneas
^(\t+)(\w+)\s+(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*;[ \t]*(\n)
$1var $3:$2;$7$1var $4:$2;$7$1var $5:$2;$7$1var $6:$2;$7
Reemplazar declaraciones de matrices
^(\s+)\w+\[\]\s*(\w+)\b
$1 var $2:Array
Eliminar() Modelos - AS compilador no les gustaría
(?:\(\w+\)\s*)([^ ,*+;/)><=\-])
$1
Reemplazar max etc en Math.max - AS no tiene importaciones estáticas
(?<!Math\.)\b(max|min|abs|sqrt|PI|cos|sin|atan2)\(
Math.$1(
estoy buscando lo mismo pero javascript, ¿conoces alguna? – igor