jhotdraw là dự án mã nguồn mở trong Java để vẽ. Nó chuyển đổi các bản vẽ tay miễn phí thành các đường cong khối bezier. Nguồn có sẵn - tải xuống và dịch. Đừng sợ hãi ở kích thước của dự án: bạn chỉ cần một vài lớp học cụ thể là:
org.jhotdraw.geom.Bezier
org.jhotdraw.geom.BezierPath
org.jhotdraw.geom.Geom
Trong khi dịch bắt đầu bằng cách thay đổi tất cả các tờ khai bộ sưu tập để Mảng (vectơ sử dụng nếu bạn đang nhắm mục tiêu chỉ những người dùng FP10) . Tôi có một số regexes mà bạn có thể thấy hữu ích trong chuyển đổi - Tôi có thể đăng chúng nếu bạn muốn.
Dưới đây là danh sách các regex mà bạn có thể thấy hữu ích. Trong mỗi cặp, dán cái đầu tiên vào vùng văn bản tìm kiếm và thứ hai vào vùng thay thế, chọn hộp kiểm regex và sử dụng nút Tìm và Thay thế. Không sử dụngReplace All
- không cách nào trong số này được đảm bảo là đơn giản.
Thay thế tất cả int/double name
tờ khai với var name:Number
\b(double|int)\s+(\w+)\b
var $2:Number
Thay thế tất cả Point2D.Double name
tờ khai với var name:Point
\bPoint2D\.Double\s+(\w+)\b
var $1:Point
Thay thế tất cả int/double name
tờ khai trong chữ ký chức năng với name:Number
\(([^)]*)\b(?:double|int)\s+(\w+)\b([^)]*?)\)
($1$2:Number$3)
Thay thế tất cả Point2D.Double name
tờ khai trong chữ ký chức năng với name:Point
\(([^)]*)\b(?:Point2D\.Double)\s+(\w+)\b([^)]*?)\)
($1$2:Point$3)
Trước khi thay đổi chữ ký phương pháp, chắc chắn rằng tất cả các phương pháp tĩnh:
(public|private)\s+(?!static)
Thay thế chữ ký phương pháp để AS dạng
(public|private)\s+static\s+(\w+)\s+(\w+)\s*\(([^)]*)\)
$1 static function $3($4):$2
Thay thế ArrayList.get (index) bằng mảng [index] // Cảnh báo: thất bại cho list.get (danh sách.size() - 1)
(\w+)\.get\(([^)]+)\)
$1[$2]
//avoid the() failure
(\w+)\.get\(([^)]*(?:\([^)]*\))[^)]*)\)
$1[$2]
Thay ArrayList.set(index, element)
với array[index] = element
// Cảnh báo: không cho 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]
Thay arraylist.add(object)
với 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)
Thay thế chữ ký của phương thức thành định dạng AS (phương pháp không tĩnh)
(public|private)\s+(?!function)(\w+)\s+(\w+)\s*\(([^)]*)\)
$1 function $3($4):$2
Thay thế tất cả int/double/point/boolean name
tờ khai trong chữ ký chức năng với name:type
\(([^)]*)\b(\w+)\s+(\w+)\b([^)]*?)\)
($1$3:$2$4)
Thay thế tất cả các khai báo biến trong một dòng riêng với một = AS dạng
^(\s+)(\w+)\s+(\w+)\s*=\s*(.+?)\s*;(\s*)$
$1var $3:$2 = $4;$5
đặt thay đổi niềng răng.
^(\t)(\s*)([^\n]+)\{\s*(\n)\s+
$1$2$3$4$1$2{$4$1$2
thay đổi } else
vào } \n else
^([ \t]+)}[ \t]*else\b([^\n]*)(\n)
$1}$3$1else$2$3
Thay 4 khai báo biến trong một đường duy nhất để AS trong dòng khác nhau
^(\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
tờ khai mảng Thay
^(\s+)\w+\[\]\s*(\w+)\b
$1 var $2:Array
Remove() đúc - AS biên dịch không thích chúng
(?:\(\w+\)\s*)([^ ,*+;/)><=\-])
$1
Thay max vv vào Math.max - AS không có hàng nhập khẩu tĩnh
(?<!Math\.)\b(max|min|abs|sqrt|PI|cos|sin|atan2)\(
Math.$1(
Tôi đang tìm kiếm điều tương tự nhưng javascript, bạn có biết không? – igor