Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save netchampfaris/dae0d164be1edec8e0528334c4fbc0db to your computer and use it in GitHub Desktop.
Save netchampfaris/dae0d164be1edec8e0528334c4fbc0db to your computer and use it in GitHub Desktop.
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
import io
import re
def execute(file_path):
with open(file_path, 'r') as f:
content = f.read()
# Class.extend -> class ClassName
content = re.sub(r'(\w+)\s*=\s*Class.extend\(', r'\1 = class \1 ', content)
# ExtendedClass.extend -> class ClassName extends ExtendedClass
content = re.sub(r'(\w+)\s*=\s*([\w.]+)\.extend\(', r'\1 = class \1 extends \2 ', content)
# render: function() -> render()
content = re.sub(r'(\n\t\w+):\s*function', r'\1', content)
# }, -> }
content = re.sub(r'(\n\t\}),', r'\1', content)
# doesn't work
content = re.sub(r'\n\}\);\n,', r'\n};\n', content)
# init() -> constructor()
content = content.replace('\tinit(', '\tconstructor(')
# this._super() -> super.
# this step needs manual review
content = content.replace('this._super', 'super.')
with open(file_path, 'w') as f:
f.write(content)
files = [
# "frappe/public/js/frappe/ui/iconbar.js",
# "frappe/public/js/frappe/ui/page.js",
# "frappe/public/js/frappe/ui/sort_selector.js",
# "frappe/public/js/frappe/ui/tag_editor.js",
# "frappe/public/js/frappe/ui/filters/field_select.js",
# "frappe/public/js/frappe/ui/toolbar/awesome_bar.js",
# "frappe/public/js/frappe/views/container.js",
# "frappe/public/js/frappe/views/treeview.js",
# "frappe/public/js/frappe/views/calendar/calendar.js",
# "frappe/public/js/frappe/views/image/image_view.js",
# "frappe/public/js/frappe/form/sidebar/attachments.js",
# "frappe/public/js/frappe/form/controls/attach.js",
# "frappe/public/js/frappe/form/controls/barcode.js",
# "frappe/public/js/frappe/form/controls/base_input.js",
# "frappe/public/js/frappe/form/controls/button.js",
# "frappe/public/js/frappe/form/controls/check.js",
# "frappe/public/js/frappe/form/controls/code.js",
# "frappe/public/js/frappe/form/controls/color.js",
# "frappe/public/js/frappe/form/controls/comment.js",
# "frappe/public/js/frappe/form/controls/currency.js",
# "frappe/public/js/frappe/form/controls/data.js",
# "frappe/public/js/frappe/form/controls/date_range.js",
# "frappe/public/js/frappe/form/controls/date.js",
# "frappe/public/js/frappe/form/controls/datetime.js",
# "frappe/public/js/frappe/form/controls/duration.js",
# "frappe/public/js/frappe/form/controls/dynamic_link.js",
# "frappe/public/js/frappe/form/controls/float.js",
# "frappe/public/js/frappe/form/controls/geolocation.js",
# "frappe/public/js/frappe/form/controls/heading.js",
# "frappe/public/js/frappe/form/controls/html_editor.js",
# "frappe/public/js/frappe/form/controls/html.js",
# "frappe/public/js/frappe/form/controls/image.js",
# "frappe/public/js/frappe/form/controls/int.js",
# "frappe/public/js/frappe/form/controls/link.js",
# "frappe/public/js/frappe/form/controls/markdown_editor.js",
# "frappe/public/js/frappe/form/controls/multicheck.js",
# "frappe/public/js/frappe/form/controls/multiselect_list.js",
# "frappe/public/js/frappe/form/controls/multiselect_pills.js",
# "frappe/public/js/frappe/form/controls/multiselect.js",
# "frappe/public/js/frappe/form/controls/password.js",
# "frappe/public/js/frappe/form/controls/rating.js",
# "frappe/public/js/frappe/form/controls/read_only.js",
# "frappe/public/js/frappe/form/controls/select.js",
# "frappe/public/js/frappe/form/controls/signature.js",
# "frappe/public/js/frappe/form/controls/table_multiselect.js",
# "frappe/public/js/frappe/form/controls/table.js",
# "frappe/public/js/frappe/form/controls/text_editor.js",
# "frappe/public/js/frappe/form/controls/text.js",
# "frappe/public/js/frappe/form/controls/time.js",
# "frappe/public/js/frappe/ui/field_group.js",
# "erpnext/erpnext/education/doctype/student_attendance_tool/student_attendance_tool.js",
# "erpnext/erpnext/healthcare/doctype/exercise_type/exercise_type.js",
# "erpnext/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js",
# "erpnext/erpnext/public/js/utils/item_selector.js",
# "erpnext/erpnext/public/js/utils/serial_no_batch_selector.js",
# "erpnext/erpnext/stock/dashboard/item_dashboard.js",
# "erpnext/erpnext/templates/includes/rfq.js",
# "erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.js",
# "erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js",
# "erpnext/erpnext/accounts/doctype/pos_invoice/pos_invoice.js",
# "erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js",
# "erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js",
# "erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js",
# "erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js",
# "erpnext/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js",
# "erpnext/erpnext/crm/doctype/lead/lead.js",
# "erpnext/erpnext/crm/doctype/opportunity/opportunity.js",
# "erpnext/erpnext/hr/doctype/employee/employee.js",
# "erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.js",
# "erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js",
# "erpnext/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js",
# "erpnext/erpnext/manufacturing/doctype/bom/bom.js",
# "erpnext/erpnext/public/js/account_tree_grid.js",
# "erpnext/erpnext/public/js/stock_analytics.js",
# "erpnext/erpnext/public/js/stock_grid_report.js",
# "erpnext/erpnext/public/js/telephony.js",
# "erpnext/erpnext/public/js/controllers/buying.js",
# "erpnext/erpnext/public/js/controllers/stock_controller.js",
# "erpnext/erpnext/public/js/controllers/taxes_and_totals.js",
# "erpnext/erpnext/public/js/controllers/transaction.js",
# "erpnext/erpnext/public/js/payment/payments.js",
# "erpnext/erpnext/public/js/utils/customer_quick_entry.js",
# "erpnext/erpnext/public/js/utils/item_quick_entry.js",
# "erpnext/erpnext/selling/sales_common.js",
# "erpnext/erpnext/selling/doctype/installation_note/installation_note.js",
# "erpnext/erpnext/selling/doctype/quotation/quotation.js",
# "erpnext/erpnext/selling/doctype/sales_order/sales_order.js",
# "erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js",
# "erpnext/erpnext/stock/doctype/item/item.js",
# "erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js",
# "erpnext/erpnext/stock/doctype/material_request/material_request.js",
# "erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js",
# "erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js",
# "erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js",
# "erpnext/erpnext/support/doctype/warranty_claim/warranty_claim.js",
]
# process 5 files at a time
for file in files[:5]:
print("/Users/farisansari/Projects/benches/frappe-bench/apps/" + file)
execute(file)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment