161 lines
4.5 KiB
Python
161 lines
4.5 KiB
Python
from talon import Context, actions, settings
|
|
|
|
from ..tags.operators import Operators
|
|
|
|
ctx = Context()
|
|
ctx.matches = r"""
|
|
code.language: php
|
|
"""
|
|
|
|
ctx.lists["user.code_type"] = {
|
|
"int": "int",
|
|
"float": "float",
|
|
"string": "string",
|
|
"bool": "bool",
|
|
"array": "array",
|
|
"null": "null",
|
|
"void": "void",
|
|
}
|
|
|
|
operators = Operators(
|
|
# code_operators_assignment
|
|
ASSIGNMENT=" = ",
|
|
ASSIGNMENT_ADDITION=" += ",
|
|
ASSIGNMENT_SUBTRACTION=" -= ",
|
|
ASSIGNMENT_MULTIPLICATION=" *= ",
|
|
ASSIGNMENT_DIVISION=" /= ",
|
|
ASSIGNMENT_MODULO=" %= ",
|
|
ASSIGNMENT_INCREMENT="++",
|
|
ASSIGNMENT_BITWISE_AND=" &= ",
|
|
ASSIGNMENT_BITWISE_OR=" |= ",
|
|
ASSIGNMENT_BITWISE_EXCLUSIVE_OR=" ^= ",
|
|
ASSIGNMENT_BITWISE_LEFT_SHIFT=" <<= ",
|
|
ASSIGNMENT_BITWISE_RIGHT_SHIFT=" >>= ",
|
|
# code_operators_bitwise
|
|
BITWISE_AND=" & ",
|
|
BITWISE_OR=" | ",
|
|
BITWISE_EXCLUSIVE_OR=" ^ ",
|
|
BITWISE_LEFT_SHIFT=" << ",
|
|
BITWISE_RIGHT_SHIFT=" >> ",
|
|
BITWISE_NOT="~",
|
|
# code_operators_math
|
|
MATH_ADD=" + ",
|
|
MATH_SUBTRACT=" - ",
|
|
MATH_MULTIPLY=" * ",
|
|
MATH_DIVIDE=" / ",
|
|
MATH_MODULO=" % ",
|
|
MATH_EXPONENT=" ** ",
|
|
MATH_EQUAL=" === ",
|
|
MATH_NOT_EQUAL=" !== ",
|
|
MATH_WEAK_EQUAL=" == ",
|
|
MATH_WEAK_NOT_EQUAL=" != ",
|
|
MATH_GREATER_THAN=" > ",
|
|
MATH_GREATER_THAN_OR_EQUAL=" >= ",
|
|
MATH_LESS_THAN=" < ",
|
|
MATH_LESS_THAN_OR_EQUAL=" <= ",
|
|
MATH_NOT="!",
|
|
MATH_AND=" && ",
|
|
MATH_OR=" || ",
|
|
)
|
|
|
|
|
|
@ctx.action_class("user")
|
|
class UserActions:
|
|
def code_get_operators() -> Operators:
|
|
return operators
|
|
|
|
def code_self():
|
|
actions.auto_insert("$this")
|
|
|
|
def code_operator_object_accessor():
|
|
actions.auto_insert("->")
|
|
|
|
def code_comment_block_prefix():
|
|
actions.auto_insert("/*")
|
|
|
|
def code_comment_block_suffix():
|
|
actions.auto_insert("*/")
|
|
|
|
def code_insert_true():
|
|
actions.auto_insert("true")
|
|
|
|
def code_insert_false():
|
|
actions.auto_insert("false")
|
|
|
|
def code_insert_null():
|
|
actions.auto_insert("null")
|
|
|
|
def code_insert_is_null():
|
|
actions.auto_insert("is_null()")
|
|
actions.edit.left()
|
|
|
|
def code_insert_is_not_null():
|
|
actions.auto_insert("isset()")
|
|
actions.edit.left()
|
|
|
|
def code_default_function(text: str):
|
|
actions.user.code_public_function(text)
|
|
|
|
def code_protected_function(text: str):
|
|
"""Inserts protected function declaration"""
|
|
result = "protected function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_protected_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_public_function(text: str):
|
|
"""Inserts public function declaration"""
|
|
result = "public function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_public_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_private_function(text: str):
|
|
"""Inserts private function declaration"""
|
|
result = "private function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_public_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_private_static_function(text: str):
|
|
"""Inserts private static function declaration"""
|
|
result = "private static function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_protected_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_protected_static_function(text: str):
|
|
"""Inserts protected static function declaration"""
|
|
result = "protected static function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_protected_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_public_static_function(text: str):
|
|
"""Inserts public static function declaration"""
|
|
result = "public static function {}()".format(
|
|
actions.user.formatted_text(
|
|
text, settings.get("user.code_public_function_formatter")
|
|
)
|
|
)
|
|
actions.user.paste(result)
|
|
actions.edit.left()
|
|
|
|
def code_insert_return_type(type: str):
|
|
actions.insert(f": {type}")
|