Initial commit
commit
eca3da6455
|
@ -0,0 +1,2 @@
|
|||
__pycache__/
|
||||
*.py[cod]
|
|
@ -0,0 +1,122 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands that are to be used for Angular programming
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, RuleRef, DictList, DictListRef, Text, Key, AppContext, MappingRule, Function, Sequence, Mimic)
|
||||
|
||||
def doSomethingToCommand(command):
|
||||
newCommand = Sequence(command)
|
||||
newCommand.execute()
|
||||
|
||||
class AngularEnabler(CompoundRule):
|
||||
spec = "Activate Angular JS" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
AngularBootstrap.disable()
|
||||
AngularGrammar.enable()
|
||||
print "Angular JS grammar enabled"
|
||||
|
||||
class AngularDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
AngularGrammar.disable()
|
||||
AngularBootstrap.enable()
|
||||
print "Angular JS grammar disabled"
|
||||
|
||||
|
||||
class AngularTestRule(CompoundRule):
|
||||
spec = "test Angular JS" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "Angular JS grammar tested"
|
||||
|
||||
class AngularControlStructures(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"variable": Text("var "),
|
||||
"function": Text("function functionName() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"self function": Text("(function() {") + Key("enter")+ Key("enter"), #+ Text("}())"),
|
||||
"code block": Text("{") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if": Text("if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"else if": Text("else if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("down") + Text("while()"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
class AngularCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") #+ Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
class AngularMiscellaneousStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equals": Text(" = "),
|
||||
"new": Text("new "),
|
||||
|
||||
}
|
||||
|
||||
class AngularComparisonOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equal to": Text("=="),
|
||||
"exactly equal to": Text("==="),
|
||||
"not equal to": Text("!="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"greater than or equal to": Text(">="),
|
||||
"less than or equal to": Text("<="),
|
||||
|
||||
}
|
||||
|
||||
class AngularArithmeticOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus plus": Text("++"),
|
||||
"minus minus": Text("--"),
|
||||
|
||||
}
|
||||
|
||||
class AngularAssignmentOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
"multiply equals": Text("*="),
|
||||
"divide equals": Text("/="),
|
||||
"modulus equals": Text("%="),
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
AngularBootstrap = Grammar("Angular bootstrap") # Create a grammar to contain the command rule.
|
||||
AngularBootstrap.add_rule(AngularEnabler())
|
||||
AngularBootstrap.load()
|
||||
|
||||
AngularGrammar = Grammar("Angular grammar")
|
||||
AngularGrammar.add_rule(AngularTestRule())
|
||||
AngularGrammar.add_rule(AngularControlStructures())
|
||||
AngularGrammar.add_rule(AngularCommentsSyntax())
|
||||
AngularGrammar.add_rule(AngularMiscellaneousStuff())
|
||||
AngularGrammar.add_rule(AngularComparisonOperators())
|
||||
AngularGrammar.add_rule(AngularArithmeticOperators())
|
||||
AngularGrammar.add_rule(AngularAssignmentOperators())
|
||||
AngularGrammar.add_rule(AngularDisabler())
|
||||
AngularGrammar.load()
|
||||
AngularGrammar.disable()
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global AngularGrammar
|
||||
if AngularGrammar: AngularGrammar.unload()
|
||||
AngularGrammar = None
|
|
@ -0,0 +1,201 @@
|
|||
# Author:Brandon Lovrien
|
||||
# this script includes the macros for C++ programming
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule, Integer)
|
||||
|
||||
|
||||
class CPPEnabler(CompoundRule):
|
||||
spec = "Enable CPP" # note: this command couldn't be "enable C++" because it causes problems with the grammar engine due to complexity.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
CPPBootstrap.disable()
|
||||
CPPGrammar.enable()
|
||||
print "C++ grammar enabled"
|
||||
|
||||
class CPPDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
CPPGrammar.disable()
|
||||
CPPBootstrap.enable()
|
||||
print "C++ grammar disabled"
|
||||
|
||||
|
||||
# test rule to see if this script is working
|
||||
class CPPTestRule(CompoundRule):
|
||||
spec = "test CPP" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "C++ grammar tested"
|
||||
|
||||
#Rules for implementing control structures in C++
|
||||
class CPPControlStructures(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"code block": Text("{") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if": Text("if()") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"else if": Text("else if() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("enter") + Text("} while();"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"try catch": Text("try {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("catch() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
|
||||
|
||||
}
|
||||
|
||||
#Some syntax rules for functions, classes, etc. in C++
|
||||
class CPPFunctionsAndClassesSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
#function syntax stuff
|
||||
"function prototype": Text("returnType functionName();"),
|
||||
"function": Text("returnType functionName() {")+Key("enter")+ Key("enter")+ Text("}"),
|
||||
#miscellaneous syntax stuff
|
||||
"struct": Text("struct structName {") + Key("enter")+ Key("enter") + Text("};"),
|
||||
"union": Text("union unionName {") + Key("enter")+ Key("enter") + Text("};"),
|
||||
"enumeration": Text("enum enumerationName {") + Key("enter")+ Key("enter") + Text("};"),
|
||||
"type definition": Text("typedef existingDatatype name;"),
|
||||
"create namespace": Text("namespace namespaceName {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
#class syntax stuff
|
||||
"class": Text("class ClassName {") + Key("enter")+ Text("public:")+ Key("enter") + Key("enter") + Text("};"),
|
||||
"constructor": Text("();") + Key("left")+ Key("left")+ Key("left"),
|
||||
"destructor": Text("~();") + Key("left")+ Key("left")+ Key("left"),
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
class CPPOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"scope operator": Text("::"),
|
||||
|
||||
"plus plus": Text("++"),
|
||||
"minus minus": Text("--"),
|
||||
"plus": Text("+"),
|
||||
"minus": Text("-"),
|
||||
"divided by": Text("/"),
|
||||
"address of": Text("&"),
|
||||
"left shift": Text(" << "),
|
||||
"right shift": Text(" >> "),
|
||||
"equals": Text("="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"greater than or equal to": Text(">="),
|
||||
"less than or equal to": Text("<="),
|
||||
"equals equals": Text("=="),
|
||||
"not equal to": Text("!="),
|
||||
"logical and": Text("&&"),
|
||||
"logical or": Text("||"),
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
|
||||
|
||||
}
|
||||
|
||||
#Handles the C++ commenting syntax
|
||||
class CPPCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") + Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
#Some useful miscellaneous C++ functions
|
||||
class CPPUsefulFunctions(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"print statement": Text("cout << ;") + Key("left"),
|
||||
"input statement": Text("cin >> ;") + Key("left"),
|
||||
"end line": Text("endl"),
|
||||
|
||||
|
||||
}
|
||||
|
||||
#Syntax for preprocessor directives in C++
|
||||
class CPPPreprocessorDirectives(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"directive include": Text("#include "),
|
||||
"directive pragma": Text("#pragma "),
|
||||
"directive if": Text("#if "),
|
||||
"directive else": Text("#else"),
|
||||
"directive else if": Text("#elif "),
|
||||
"directive if defined": Text("#ifdef "),
|
||||
"directive if not defined": Text("#ifndef "),
|
||||
"directive end if": Text("#endif"),
|
||||
"directive define": Text("#define "),
|
||||
"directive undefine": Text("#undef "),
|
||||
"directive error": Text("#error"),
|
||||
"directive line": Text("#line ")
|
||||
|
||||
}
|
||||
|
||||
|
||||
#C++ datatypes
|
||||
class CPPDataTypes(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"integer": Text("int "),
|
||||
"float": Text("float "),
|
||||
"double": Text("double "),
|
||||
"boolean": Text("bool "),
|
||||
"char": Text("char "),
|
||||
"string": Text("string "),
|
||||
"long": Text("long "),
|
||||
"long double": Text("long double "),
|
||||
"wide character": Text("wchar_t "),
|
||||
"short": Text("short "),
|
||||
"constant": Text("const "),
|
||||
"null": Text("NULL"),
|
||||
|
||||
#my attempt at a C++ script for shortcut float notation
|
||||
"<n> point <n2> float": Text("%(n)d.%(n2)d") + Text("f"),
|
||||
"<n> point <n2> <n3> float": Text("%(n)d.%(n2)d%(n3)d") + Text("f"),
|
||||
"<n> point <n2> <n3> <n4> float": Text("%(n)d.%(n2)d%(n3)d%(n4)d") + Text("f"),
|
||||
}
|
||||
extras = [
|
||||
Integer("n", -1000, 1000),
|
||||
Integer("n2", 0, 1000),
|
||||
Integer("n3", 0, 1000),
|
||||
Integer("n4", 0, 1000)
|
||||
]
|
||||
|
||||
class CPPEscapeSequences(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"escape quotes": Text("\ ")+ Key("left") + Text("\"") + Text("\ ")+ Key("left") + Text("\""),
|
||||
"escape single quotes": Text("\ ")+ Key("left") + Text("\'") + Text("\ ")+ Key("left") + Text("\'"),
|
||||
"escape line": Text("\ ")+ Key("left") + Text("n"),
|
||||
"escape tab": Text("\ ")+ Key("left") + Text("t"),
|
||||
"escape carriage return": Text("\ ")+ Key("left") + Text("r"),
|
||||
}
|
||||
|
||||
|
||||
|
||||
CPPBootstrap = Grammar("C++ bootstrap") # Create a grammar to contain the command rule.
|
||||
CPPBootstrap.add_rule(CPPEnabler())
|
||||
CPPBootstrap.load()
|
||||
|
||||
CPPGrammar = Grammar("C++ grammar")
|
||||
CPPGrammar.add_rule(CPPTestRule())
|
||||
CPPGrammar.add_rule(CPPControlStructures())
|
||||
CPPGrammar.add_rule(CPPCommentsSyntax())
|
||||
CPPGrammar.add_rule(CPPUsefulFunctions())
|
||||
CPPGrammar.add_rule(CPPPreprocessorDirectives())
|
||||
CPPGrammar.add_rule(CPPOperators())
|
||||
CPPGrammar.add_rule(CPPEscapeSequences())
|
||||
CPPGrammar.add_rule(CPPFunctionsAndClassesSyntax())
|
||||
CPPGrammar.add_rule(CPPDataTypes())
|
||||
CPPGrammar.add_rule(CPPDisabler())
|
||||
CPPGrammar.load()
|
||||
CPPGrammar.disable()
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global CPPGrammar
|
||||
if CPPGrammar: CPPGrammar.unload()
|
||||
CPPGrammar = None
|
|
@ -0,0 +1,186 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes the macros for the C# programming language
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule, Integer)
|
||||
|
||||
class CSEnabler(CompoundRule):
|
||||
spec = "Enable C sharp" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
csBootstrap.disable()
|
||||
csGrammar.enable()
|
||||
print "C# grammar enabled"
|
||||
|
||||
class CSDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
csGrammar.disable()
|
||||
csBootstrap.enable()
|
||||
print "C# grammar disabled"
|
||||
|
||||
# This is a test rule to see if the C# grammar is enabled
|
||||
class CSTestRule(CompoundRule):
|
||||
spec = "test C sharp" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "C# grammar tested"
|
||||
|
||||
# Handles C# commenting syntax
|
||||
class CSCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") + Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
# Deals with printing C# datatypes
|
||||
class CSDataTypes(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"integer": Text("int "),
|
||||
"float": Text("float "),
|
||||
"float <n>": Text("float%(n)d "),
|
||||
"double": Text("double "),
|
||||
"boolean": Text("bool "),
|
||||
"char": Text("char "),
|
||||
"string": Text("string "),
|
||||
"long": Text("long ")
|
||||
}
|
||||
extras = [
|
||||
Integer("n", 0, 64)
|
||||
|
||||
]
|
||||
|
||||
# This rule deals with the C# comparison operators
|
||||
class CSComparisonOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equal to": Text("=="),
|
||||
"not equal to": Text("!="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"less than or equal to": Text("<="),
|
||||
"greater than or equal to": Text(">="),
|
||||
|
||||
}
|
||||
# This rule deals with the C# Boolean operators
|
||||
class CSBooleanOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"logical and": Text("&&"),
|
||||
"logical or": Text("||"),
|
||||
"true": Text("true"),
|
||||
"false": Text("false"),
|
||||
"not": Text("!")
|
||||
|
||||
}
|
||||
|
||||
|
||||
class CSControlStructures(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"code block": Text("{") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if": Text("if() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"else if": Text("else if() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("down") + Text("while()"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"for each loop": Text("foreach() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"try catch": Text("try {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("catch(Exception e) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"class": Text("<access modifier> class ClassName {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"interface": Text("<access modifier> interface InterfaceName {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"enumeration": Text("<access modifier> enum EnumName {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"method": Text("<datatype> methodName() {") + Key("enter") + Key("enter") + Text("}"),
|
||||
|
||||
}
|
||||
# This rule provides some useful method calls in C#
|
||||
class CSUsefulMethods(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"print statement": Text("Console.WriteLine()") + Key("left"),
|
||||
|
||||
}
|
||||
# This rule deals with some of the C# arithmetic operators
|
||||
class CSArithmeticOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus plus": Text("++"),
|
||||
"minus minus": Text("--"),
|
||||
"multiplied by": Text("*"),
|
||||
"plus": Text("+"),
|
||||
"minus": Text("-"),
|
||||
"divided by": Text("/"),
|
||||
"modulus": Text("%") #causes some weird problem in dragonfly so this doesn't work, use "percent sign" instead
|
||||
|
||||
}
|
||||
|
||||
class CSAssignmentOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
"multiply equals": Text("*="),
|
||||
"divide equals": Text("/="),
|
||||
|
||||
|
||||
}
|
||||
|
||||
class CSMiscellaneousStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equals": Text(" = "),
|
||||
"new": Text("new "),
|
||||
|
||||
}
|
||||
|
||||
class CSAccessModifiers(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"public": Text("public "),
|
||||
"private": Text("private "),
|
||||
"protected": Text("protected ")
|
||||
|
||||
}
|
||||
|
||||
class CSEscapeSequences(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"escape quotes": Text("\ ")+ Key("left") + Text("\"") + Text("\ ")+ Key("left") + Text("\""),
|
||||
"escape single quotes": Text("\ ")+ Key("left") + Text("\'") + Text("\ ")+ Key("left") + Text("\'"),
|
||||
"escape line": Text("\ ")+ Key("left") + Text("n"),
|
||||
"escape tab": Text("\ ")+ Key("left") + Text("t"),
|
||||
"escape carriage return": Text("\ ")+ Key("left") + Text("r"),
|
||||
}
|
||||
|
||||
# The main C# grammar rules are activated here
|
||||
csBootstrap = Grammar("C sharp bootstrap")
|
||||
csBootstrap.add_rule(CSEnabler())
|
||||
csBootstrap.load()
|
||||
|
||||
csGrammar = Grammar("C sharp grammar")
|
||||
csGrammar.add_rule(CSTestRule())
|
||||
csGrammar.add_rule(CSCommentsSyntax())
|
||||
csGrammar.add_rule(CSDataTypes())
|
||||
csGrammar.add_rule(CSComparisonOperators())
|
||||
csGrammar.add_rule(CSBooleanOperators())
|
||||
csGrammar.add_rule(CSControlStructures())
|
||||
csGrammar.add_rule(CSUsefulMethods())
|
||||
csGrammar.add_rule(CSArithmeticOperators())
|
||||
csGrammar.add_rule(CSAssignmentOperators())
|
||||
csGrammar.add_rule(CSMiscellaneousStuff())
|
||||
csGrammar.add_rule(CSAccessModifiers())
|
||||
csGrammar.add_rule(CSEscapeSequences())
|
||||
csGrammar.add_rule(CSDisabler())
|
||||
csGrammar.load()
|
||||
csGrammar.disable()
|
||||
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global csGrammar
|
||||
if csGrammar: csGrammar.unload()
|
||||
csGrammar = None
|
|
@ -0,0 +1,84 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands used for CSS coding
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule, Choice, Integer, Function)
|
||||
|
||||
# Voice command rule for "middle-slash" naming convention.
|
||||
def middle_slash_format(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
printer = Text(someString.replace(' ', '-'))
|
||||
printer.execute()
|
||||
|
||||
class CSSEnabler(CompoundRule):
|
||||
spec = "Enable CSS" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
cssBootstrap.disable()
|
||||
cssGrammar.enable()
|
||||
print "CSS grammar enabled"
|
||||
|
||||
class CSSDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
cssGrammar.disable()
|
||||
cssBootstrap.enable()
|
||||
print "CSS grammar disabled"
|
||||
|
||||
|
||||
class CSSTestRule(CompoundRule):
|
||||
spec = "test CSS" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "CSS grammar tested"
|
||||
|
||||
class CSSSelectors(MappingRule):
|
||||
mapping = {
|
||||
"ID selector": Text("#idName")+ Key("enter") + Text("{\n\n}"),
|
||||
"class selector": Text(".className")+ Key("enter") + Text("{\n\n}"),
|
||||
"tag selector": Text("tagName")+ Key("enter") + Text("{\n\n}"),
|
||||
# I know there are more types of selectors in CSS but these are the most common
|
||||
}
|
||||
|
||||
class CSSValues(MappingRule):
|
||||
mapping = {
|
||||
"<value> (pixels | pixel)": Text("%(value)dpx"),
|
||||
"<value> (points | point)": Text("%(value)dpt"),
|
||||
}
|
||||
extras = [
|
||||
Integer("value", 0, 800),
|
||||
]
|
||||
class CSSTags(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"property <command>": Function(middle_slash_format) + Text(":;") + Key("left"),
|
||||
"comment": Text("/* */"),
|
||||
|
||||
|
||||
}
|
||||
extras = [
|
||||
Dictation("command"),
|
||||
]
|
||||
|
||||
# Code for initial setup of the HTML grammar
|
||||
cssBootstrap = Grammar("css bootstrap") # Create a grammar to contain the command rule.
|
||||
cssBootstrap.add_rule(CSSEnabler())
|
||||
cssBootstrap.load()
|
||||
|
||||
|
||||
cssGrammar = Grammar("css grammar")
|
||||
cssGrammar.add_rule(CSSTestRule())
|
||||
cssGrammar.add_rule(CSSDisabler())
|
||||
cssGrammar.add_rule(CSSValues())
|
||||
cssGrammar.add_rule(CSSSelectors())
|
||||
cssGrammar.add_rule(CSSTags())
|
||||
cssGrammar.load()
|
||||
cssGrammar.disable()
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global cssGrammar
|
||||
if cssGrammar: cssGrammar.unload()
|
||||
cssGrammar = None
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes some commands for various useful symbols used in programming
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule)
|
||||
|
||||
# Useful commands for encapsulation of quotes, etc.
|
||||
class UsefulStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"in quotes": Text("\"\"") + Key("left"),
|
||||
"in single quotes": Text("\'\'") + Key("left"),
|
||||
"in parentheses": Text("()") + Key("left"),
|
||||
"in brackets": Text("[]") + Key("left"),
|
||||
"in braces": Text("{}") + Key("left"),
|
||||
"in angle brackets": Text("<>") + Key("left"),
|
||||
"parameters": Text("()"),
|
||||
"arrow": Text("->"),
|
||||
"double arrow": Text("=>"),
|
||||
}
|
||||
|
||||
globalStuff = Grammar("useful custom global commands") # Create a grammar to contain the command rule.
|
||||
globalStuff.add_rule(UsefulStuff())
|
||||
globalStuff.load()
|
|
@ -0,0 +1,36 @@
|
|||
# This file is part of Aenea
|
||||
#
|
||||
# Aenea is free software: you can redistribute it and/or modify it under
|
||||
# the terms of version 3 of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# Aenea is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
# License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with Aenea. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Copyright (2014) Alex Roper
|
||||
# Alex Roper <alex@aroper.net>
|
||||
|
||||
from aenea import Grammar, MappingRule, Text
|
||||
|
||||
grammar = Grammar('hello world aenea')
|
||||
|
||||
print 'Aenea hello world grammar: Loaded.'
|
||||
|
||||
class TestRule(MappingRule):
|
||||
mapping = {
|
||||
'test hello world remote grammar': Text('Aenea remote setup operational'),
|
||||
}
|
||||
|
||||
grammar.add_rule(TestRule())
|
||||
grammar.load()
|
||||
|
||||
def unload():
|
||||
global grammar
|
||||
if grammar:
|
||||
grammar.unload()
|
||||
grammar = None
|
|
@ -0,0 +1,188 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands used for HTML coding
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule, Choice)
|
||||
|
||||
class HTMLEnabler(CompoundRule):
|
||||
spec = "Enable HTML" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
htmlBootstrap.disable()
|
||||
htmlGrammar.enable()
|
||||
print "HTML grammar enabled"
|
||||
|
||||
class HTMLDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
htmlGrammar.disable()
|
||||
htmlBootstrap.enable()
|
||||
print "HTML grammar disabled"
|
||||
|
||||
|
||||
class HTMLTestRule(CompoundRule):
|
||||
spec = "test HTML" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "HTML grammar tested"
|
||||
|
||||
|
||||
class HTMLTags(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"doc type": Text("<!DOCTYPE HTML>"),
|
||||
"comment": Text( "<!---->" ) + Key( "left" ) + Key( "left" ) + Key( "left" ),
|
||||
"tags": Text("<>") + Text("</>"),
|
||||
"single tag": Text("</>"),
|
||||
"line break": Text( "<br />" ),
|
||||
"image": Text( "<img />" ),
|
||||
"equals": Text( "=" ),
|
||||
"<tagname> tags": Text("<%(tagname)s>") ,#+ Text("</%(tagname)s>"),
|
||||
|
||||
# used to specify tag attributes
|
||||
"attribute": Text( ' attributeName=""' ) + Key( "left" ),
|
||||
"attribute <attribute>": Text( ' %(attribute)s=""' ) + Key( "left" ),
|
||||
|
||||
|
||||
}
|
||||
extras = [
|
||||
Choice("attribute", {
|
||||
"ID": "id",
|
||||
"class": "class",
|
||||
"style": "style",
|
||||
"title": "title",
|
||||
"SRC": "src",
|
||||
"HREF": "href",
|
||||
}
|
||||
),
|
||||
Choice("tagname", {
|
||||
"anchor": "a",
|
||||
"abbreviation": "abbr",
|
||||
"address": "address",
|
||||
"area": "area",
|
||||
"article": "article",
|
||||
"aside": "aside",
|
||||
"audio": "audio",
|
||||
"bold": "b",
|
||||
"base": "base",
|
||||
"BDI": "bdi",
|
||||
"BDO": "bdo",
|
||||
"block quote": "blockquote",
|
||||
"body": "body",
|
||||
"button": "button",
|
||||
"Canvas": "canvas",
|
||||
# means the same thing and represents a table caption
|
||||
"caption": "caption", "table caption": "caption",
|
||||
"cite": "cite",
|
||||
"code": "code",
|
||||
"table column": "col",
|
||||
"table column group": "colgroup",
|
||||
"command": "command",
|
||||
"data list": "datalist",
|
||||
"definition description": "dd",
|
||||
"del": "del",
|
||||
"details": "details",
|
||||
"dfn": "dfn",
|
||||
"div": "div",
|
||||
"dl": "dl",
|
||||
"dt": "dt",
|
||||
"em": "em",
|
||||
"embed": "embed",
|
||||
"field set": "fieldset",
|
||||
"figure caption": "figcaption",
|
||||
"figure": "figure",
|
||||
"footer": "footer",
|
||||
"form": "form",
|
||||
"H1": "h1",
|
||||
"H2": "h2",
|
||||
"H3": "h3",
|
||||
"H4": "h4",
|
||||
"H5": "h5",
|
||||
"H6": "h6",
|
||||
"head": "head",
|
||||
"H group": "hgroup",
|
||||
"HR": "hr",
|
||||
"HTML": "html",
|
||||
"I": "i",
|
||||
"I frame": "iframe",
|
||||
"input": "input",
|
||||
"INS": "ins",
|
||||
"key gen": "keygen",
|
||||
"KBD": "kbd",
|
||||
"label": "label",
|
||||
"legend": "legend",
|
||||
"list item": "li",
|
||||
"Link": "link",
|
||||
"Mark": "mark",
|
||||
"menu": "menu",
|
||||
"meta": "meta",
|
||||
"meter": "meter",
|
||||
"nav": "nav",
|
||||
"no script": "noscript",
|
||||
"object": "object",
|
||||
"ordered list": "ol",
|
||||
"option group": "optgroup",
|
||||
"option": "option",
|
||||
"output": "output",
|
||||
"p": "p",
|
||||
"parameter": "param",
|
||||
"pre": "pre",
|
||||
"progress": "progress",
|
||||
"g": "g",
|
||||
"RP": "rp",
|
||||
"RT": "rt",
|
||||
"Ruby": "ruby",
|
||||
"s": "s",
|
||||
"sample": "samp",
|
||||
"script": "script",
|
||||
"section": "section",
|
||||
"select": "select",
|
||||
"small": "small",
|
||||
"source": "source",
|
||||
"span": "span",
|
||||
"strong": "strong",
|
||||
"style": "style",
|
||||
"sub": "sub",
|
||||
"summary": "summary",
|
||||
"superscript": "sup",
|
||||
"table": "table",
|
||||
"T body": "tbody",
|
||||
# means the same thing and represents a table cell
|
||||
"TD": "td", "table cell": "td",
|
||||
"textarea": "textarea",
|
||||
"T foot": "tfoot",
|
||||
# means the same thing and represents a table header
|
||||
"TH": "th", "table header": "th",
|
||||
"T head": "thead",
|
||||
"time": "time",
|
||||
"title": "title",
|
||||
# means the same thing and represents a table row
|
||||
"table row": "tr", "TR": "tr",
|
||||
"track": "track",
|
||||
"unordered list": "ul",
|
||||
"variable": "var",
|
||||
"video": "video",
|
||||
"label": "label",
|
||||
|
||||
}
|
||||
)
|
||||
]
|
||||
|
||||
# Code for initial setup of the HTML grammar
|
||||
htmlBootstrap = Grammar("html bootstrap") # Create a grammar to contain the command rule.
|
||||
htmlBootstrap.add_rule(HTMLEnabler())
|
||||
htmlBootstrap.load()
|
||||
|
||||
|
||||
htmlGrammar = Grammar("html grammar")
|
||||
htmlGrammar.add_rule(HTMLTestRule())
|
||||
htmlGrammar.add_rule(HTMLDisabler())
|
||||
htmlGrammar.add_rule(HTMLTags())
|
||||
htmlGrammar.load()
|
||||
htmlGrammar.disable()
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global htmlGrammar
|
||||
if htmlGrammar: htmlGrammar.unload()
|
||||
htmlGrammar = None
|
|
@ -0,0 +1,181 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands that are useful for the Java programming language
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule)
|
||||
|
||||
class JavaEnabler(CompoundRule):
|
||||
spec = "Enable Java" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
javaBootstrap.disable()
|
||||
javaGrammar.enable()
|
||||
print "Java grammar enabled"
|
||||
|
||||
class JavaDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
javaGrammar.disable()
|
||||
javaBootstrap.enable()
|
||||
print "Java grammar disabled"
|
||||
|
||||
# This is a test rule to see if the Java grammar is enabled
|
||||
class JavaTestRule(CompoundRule):
|
||||
spec = "test Java" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "Java grammar tested"
|
||||
|
||||
# Handles Java commenting syntax
|
||||
class JavaCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") #+ Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
# Deals with printing Java datatypes
|
||||
class JavaDataTypes(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"integer": Text("int "),
|
||||
"float": Text("float "),
|
||||
"double": Text("double "),
|
||||
"boolean": Text("boolean "),
|
||||
"char": Text("char "),
|
||||
"string": Text("String "),
|
||||
"long": Text("long ")
|
||||
}
|
||||
|
||||
# This rule deals with the Java comparison operators
|
||||
class JavaComparisonOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equal to": Text("=="),
|
||||
"not equal to": Text("!="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"less than or equal to": Text("<="),
|
||||
"greater than or equal to": Text(">="),
|
||||
|
||||
}
|
||||
# This rule deals with the Java Boolean operators
|
||||
class JavaBooleanOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"logical and": Text("&&"),
|
||||
"logical or": Text("||"),
|
||||
"true": Text("true"),
|
||||
"false": Text("false"),
|
||||
"not": Text("!")
|
||||
|
||||
}
|
||||
|
||||
|
||||
class JavaControlStructures(MappingRule):
|
||||
#note: the last curly braces were commented out so that these commands properly work with the auto formatting of the eclipse IDE.
|
||||
mapping = {
|
||||
"code block": Text("{") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if": Text("if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"else if": Text("else if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("down") + Text("while()"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"try catch": Text("try {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("catch(Exception e) {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"class": Text("<access modifier> class ClassName {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"interface": Text("<access modifier> interface InterfaceName {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"enumeration": Text("<access modifier> enum EnumName {") + Key("enter")+ Key("enter"), #+ Text("}")
|
||||
"method": Text("<datatype> methodName() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
|
||||
}
|
||||
# This rule provides some useful method calls in Java
|
||||
class JavaUsefulMethods(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"print statement": Text("System.out.println()") + Key("left")
|
||||
|
||||
}
|
||||
# This rule deals with some of the Java arithmetic operators
|
||||
class JavaArithmeticOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus plus": Text("++"),
|
||||
"minus minus": Text("--"),
|
||||
"multiplied by": Text("*"),
|
||||
"plus": Text("+"),
|
||||
"minus": Text("-"),
|
||||
"divided by": Text("/"),
|
||||
"modulus": Text("%") #causes some weird problem in dragonfly so this doesn't work, use "percent sign" instead
|
||||
|
||||
}
|
||||
|
||||
class JavaAssignmentOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
"multiply equals": Text("*="),
|
||||
"divide equals": Text("/="),
|
||||
|
||||
|
||||
}
|
||||
|
||||
class JavaMiscellaneousStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equals": Text(" = "),
|
||||
"import": Text("import ;") + Key("left"),
|
||||
"new": Text("new "),
|
||||
|
||||
}
|
||||
|
||||
class JavaAccessModifiers(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"public": Text("public "),
|
||||
"private": Text("private "),
|
||||
"protected": Text("protected ")
|
||||
|
||||
}
|
||||
|
||||
class JavaEscapeSequences(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"escape quotes": Text("\ ")+ Key("left") + Text("\"") + Text("\ ")+ Key("left") + Text("\""),
|
||||
"escape single quotes": Text("\ ")+ Key("left") + Text("\'") + Text("\ ")+ Key("left") + Text("\'"),
|
||||
"escape line": Text("\ ")+ Key("left") + Text("n"),
|
||||
"escape tab": Text("\ ")+ Key("left") + Text("t"),
|
||||
"escape carriage return": Text("\ ")+ Key("left") + Text("r"),
|
||||
}
|
||||
|
||||
# The main Java grammar rules are activated here
|
||||
javaBootstrap = Grammar("java bootstrap")
|
||||
javaBootstrap.add_rule(JavaEnabler())
|
||||
javaBootstrap.load()
|
||||
|
||||
javaGrammar = Grammar("java grammar")
|
||||
javaGrammar.add_rule(JavaTestRule())
|
||||
javaGrammar.add_rule(JavaCommentsSyntax())
|
||||
javaGrammar.add_rule(JavaDataTypes())
|
||||
javaGrammar.add_rule(JavaComparisonOperators())
|
||||
javaGrammar.add_rule(JavaBooleanOperators())
|
||||
javaGrammar.add_rule(JavaControlStructures())
|
||||
javaGrammar.add_rule(JavaUsefulMethods())
|
||||
javaGrammar.add_rule(JavaArithmeticOperators())
|
||||
javaGrammar.add_rule(JavaAssignmentOperators())
|
||||
javaGrammar.add_rule(JavaMiscellaneousStuff())
|
||||
javaGrammar.add_rule(JavaAccessModifiers())
|
||||
javaGrammar.add_rule(JavaEscapeSequences())
|
||||
javaGrammar.add_rule(JavaDisabler())
|
||||
javaGrammar.load()
|
||||
javaGrammar.disable()
|
||||
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global javaGrammar
|
||||
if javaGrammar: javaGrammar.unload()
|
||||
javaGrammar = None
|
|
@ -0,0 +1,155 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands that are to be used for JavaScript programming
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, RuleRef, DictList, DictListRef, Text, Key, AppContext, MappingRule, Function, Sequence, Mimic)
|
||||
import win32com.client
|
||||
speaker = win32com.client.Dispatch("SAPI.SpVoice")
|
||||
|
||||
def doSomethingToCommand(command):
|
||||
newCommand = Sequence(command)
|
||||
newCommand.execute()
|
||||
|
||||
class JavaScriptEnabler(CompoundRule):
|
||||
spec = "Activate JS" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
JavaScriptBootstrap.disable()
|
||||
JavaScriptGrammar.enable()
|
||||
s = "JavaScript grammar enabled"
|
||||
print s
|
||||
speaker.Speak(s)
|
||||
|
||||
|
||||
class JavaScriptDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
JavaScriptGrammar.disable()
|
||||
JavaScriptBootstrap.enable()
|
||||
s = "JavaScript grammar disabled"
|
||||
print s
|
||||
speaker.Speak(s)
|
||||
|
||||
class JavaScriptTestRule(CompoundRule):
|
||||
spec = "test JavaScript" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "JavaScript grammar tested"
|
||||
|
||||
class JavaScriptControlStructures(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"variable": Text("var "),
|
||||
"console": Text("console.log();"),
|
||||
"function": Text("function functionName() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"variable function": Text("functionName = function () {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"self function": Text("(function() {") + Key("enter")+ Key("enter"), #+ Text("}())"),
|
||||
"code block": Text("{") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if": Text("if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"else if": Text("else if() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("down") + Text("while()"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter"), #+ Text("}"),
|
||||
"alpha": Text("a"),
|
||||
"bravo": Text("b"),
|
||||
"charlie": Text("c"),
|
||||
"delta": Text("d"),
|
||||
"echo": Text("e"),
|
||||
"foxtrot": Text("f"),
|
||||
"golf": Text("g"),
|
||||
"hotel": Text("h"),
|
||||
"(india|indigo) ": Text("i"),
|
||||
"juliet": Text("j"),
|
||||
"kilo": Text("k"),
|
||||
"lima": Text("l"),
|
||||
"mike": Text("m"),
|
||||
"november": Text("n"),
|
||||
"oscar": Text("o"),
|
||||
"(P|papa|poppa) ": Text("p"),
|
||||
"(Q|quebec|quiche) ": Text("q"),
|
||||
"romeo": Text("r"),
|
||||
"sierra": Text("s"),
|
||||
"tango": Text("t"),
|
||||
"uniform": Text("u"),
|
||||
"victor": Text("v"),
|
||||
"whiskey": Text("w"),
|
||||
"(X|x-ray) ": Text("x"),
|
||||
"yankee": Text("y"),
|
||||
"zulu": Text("z"),
|
||||
|
||||
}
|
||||
|
||||
|
||||
class JavaScriptCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") #+ Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
class JavaScriptMiscellaneousStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equals": Text(" = "),
|
||||
"new": Text("new "),
|
||||
|
||||
}
|
||||
|
||||
class JavaScriptComparisonOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equal to": Text("=="),
|
||||
"exactly equal to": Text("==="),
|
||||
"not equal to": Text("!="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"greater than or equal to": Text(">="),
|
||||
"less than or equal to": Text("<="),
|
||||
|
||||
}
|
||||
|
||||
class JavaScriptArithmeticOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus plus": Text("++"),
|
||||
"minus minus": Text("--"),
|
||||
|
||||
}
|
||||
|
||||
class JavaScriptAssignmentOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
"multiply equals": Text("*="),
|
||||
"divide equals": Text("/="),
|
||||
"modulus equals": Text("%="),
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
JavaScriptBootstrap = Grammar("JavaScript bootstrap") # Create a grammar to contain the command rule.
|
||||
JavaScriptBootstrap.add_rule(JavaScriptEnabler())
|
||||
JavaScriptBootstrap.load()
|
||||
|
||||
JavaScriptGrammar = Grammar("JavaScript grammar")
|
||||
JavaScriptGrammar.add_rule(JavaScriptTestRule())
|
||||
JavaScriptGrammar.add_rule(JavaScriptControlStructures())
|
||||
JavaScriptGrammar.add_rule(JavaScriptCommentsSyntax())
|
||||
JavaScriptGrammar.add_rule(JavaScriptMiscellaneousStuff())
|
||||
JavaScriptGrammar.add_rule(JavaScriptComparisonOperators())
|
||||
JavaScriptGrammar.add_rule(JavaScriptArithmeticOperators())
|
||||
JavaScriptGrammar.add_rule(JavaScriptAssignmentOperators())
|
||||
JavaScriptGrammar.add_rule(JavaScriptDisabler())
|
||||
JavaScriptGrammar.load()
|
||||
JavaScriptGrammar.disable()
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global JavaScriptGrammar
|
||||
if JavaScriptGrammar: JavaScriptGrammar.unload()
|
||||
JavaScriptGrammar = None
|
|
@ -0,0 +1,136 @@
|
|||
"""
|
||||
Author:Jeremy Hayes
|
||||
Modified from: Brandon Lovrien version
|
||||
|
||||
Command module for programming variable naming conventions
|
||||
==========================================================
|
||||
|
||||
|
||||
"""
|
||||
|
||||
from dragonfly import *
|
||||
|
||||
|
||||
|
||||
# helper function handling "camelBack"
|
||||
def camel_back(command):
|
||||
someString = str(command)
|
||||
lowerString = someString.lower()
|
||||
words = lowerString.split()
|
||||
finalString = ""
|
||||
isFirst = 1
|
||||
for word in words:
|
||||
if isFirst == 1:
|
||||
finalString = finalString + word
|
||||
isFirst = 0
|
||||
else:
|
||||
finalString = finalString + word.title()
|
||||
printer = Text(finalString)
|
||||
printer.execute()
|
||||
|
||||
# Voice command rule for "Camel" naming convention.
|
||||
def camel_format(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
upperString = someString.title()
|
||||
printer = Text(upperString.replace(' ', ''))
|
||||
printer.execute()
|
||||
|
||||
# Voice command rule for "middle_underscores" naming convention.
|
||||
def middle_underscores(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
printer = Text(someString.replace(' ', '_'))
|
||||
printer.execute()
|
||||
|
||||
# Voice command rule for "dot.notation" naming convention.
|
||||
def dot_notation(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
printer = Text(someString.replace(' ', '.'))
|
||||
printer.execute()
|
||||
|
||||
|
||||
# Voice command rule for "_BEGINNING_UNDERSCORES" naming convention.
|
||||
def _BEGINNING_UNDERSCORES(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
upperString = "_" + someString.upper()
|
||||
printer = Text(upperString.replace(' ', '_'))
|
||||
printer.execute()
|
||||
|
||||
# Voice command rule for "middle-slash" naming convention.
|
||||
def middle_slash_format(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
printer = Text(someString.replace(' ', '-'))
|
||||
printer.execute()
|
||||
|
||||
# Voice command rule for "spacefree" naming convention.
|
||||
def SpaceFreeFormat(command): # Callback when command is spoken.
|
||||
textToPrint = command
|
||||
someString = str(textToPrint)
|
||||
printer = Text(someString.replace(' ', ''))
|
||||
printer.execute()
|
||||
|
||||
class ProgrammingNamingConventions(MappingRule):
|
||||
|
||||
mapping = {
|
||||
|
||||
#both of these commands do the same thing in terms of name formatting example: testValue
|
||||
"var <command>": Function(camel_back),
|
||||
"var <command> <symbol>": Function(camel_back) + Text("%(symbol)s"),
|
||||
"<symbol> var <command>": Text("%(symbol)s") + Function(camel_back),
|
||||
|
||||
"camelback <command>": Function(camel_back),
|
||||
"camelback <command> <symbol>": Function(camel_back) + Text("%(symbol)s"),
|
||||
"<symbol> camelback <command>": Text("%(symbol)s") + Function(camel_back),
|
||||
|
||||
#this command capitalizes the 1st letter of each word and removes spaces example: TestValue
|
||||
"camel <command>": Function(camel_format),
|
||||
"camel <command> <symbol>": Function(camel_format) + Text("%(symbol)s"),
|
||||
"<symbol> camel <command>": Text("%(symbol)s") + Function(camel_format),
|
||||
|
||||
#this command replaces spaces between words with underscores example:test_value
|
||||
"middle under <command>": Function(middle_underscores),
|
||||
"middle under <command> <symbol>": Function(middle_underscores) + Text("%(symbol)s"),
|
||||
"<symbol> middle under <command>": Text("%(symbol)s") + Function(middle_underscores),
|
||||
|
||||
#this command replaces spaces between words with dots example:test.value
|
||||
"dot notation <command>": Function(dot_notation),
|
||||
"dot notation <command> <symbol>": Function(dot_notation) + Text("%(symbol)s"),
|
||||
"<symbol> dot notation <command>": Text("%(symbol)s") + Function(dot_notation),
|
||||
|
||||
#example of this command: _TEST_VALUE
|
||||
"beginning under <command>": Function(_BEGINNING_UNDERSCORES),
|
||||
"beginning under <command> <symbol>": Function(_BEGINNING_UNDERSCORES) + Text("%(symbol)s"),
|
||||
"<symbol> beginning under <command>": Text("%(symbol)s") + Function(_BEGINNING_UNDERSCORES),
|
||||
|
||||
#example of this command: test-value
|
||||
"middle lines <command>": Function(middle_slash_format),
|
||||
"middle lines <command> <symbol>": Function(middle_slash_format) + Text("%(symbol)s"),
|
||||
"<symbol> middle lines <command>": Text("%(symbol)s") + Function(middle_slash_format),
|
||||
|
||||
# example of this command: testvalue
|
||||
"space free <command>": Function(SpaceFreeFormat),
|
||||
"space free <command> <symbol>": Function(SpaceFreeFormat) + Text("%(symbol)s"),
|
||||
"<symbol> space free <command>": Text("%(symbol)s") + Function(SpaceFreeFormat),
|
||||
}
|
||||
|
||||
extras = [
|
||||
Dictation("command"),
|
||||
Choice("symbol",{
|
||||
"dot":".",
|
||||
"arrow":"->",
|
||||
"parameters":"()",
|
||||
"parameters dot":"()."
|
||||
}
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
|
||||
# Create a grammar which contains and loads the command rule.
|
||||
naminggrammar = Grammar("naming conventions") # Create a grammar to contain the command rule.
|
||||
naminggrammar.add_rule(ProgrammingNamingConventions())
|
||||
naminggrammar.load()
|
|
@ -0,0 +1,203 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script includes commands that are to be used for programming in the PHP programming language
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule)
|
||||
|
||||
|
||||
class PHPEnabler(CompoundRule):
|
||||
spec = "Enable PHP" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
phpBootstrap.disable()
|
||||
phpGrammar.enable()
|
||||
print "PHP grammar enabled"
|
||||
|
||||
class PHPDisabler(CompoundRule):
|
||||
spec = "switch language" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
phpGrammar.disable()
|
||||
phpBootstrap.enable()
|
||||
print "PHP grammar disabled"
|
||||
|
||||
|
||||
class PHPTestRule(CompoundRule):
|
||||
spec = "test PHP" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "PHP grammar tested"
|
||||
|
||||
# Deals with printing PHP datatypes
|
||||
class PHPDataTypes(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"integer": Text("int"),
|
||||
"float": Text("float"),
|
||||
"boolean": Text("boolean"),
|
||||
"string": Text("string"),
|
||||
"object": Text("object"),
|
||||
"null": Text("NULL")
|
||||
}
|
||||
|
||||
class PHPVariableDeclarations(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"variable": Text("$")
|
||||
|
||||
}
|
||||
|
||||
# Handles PHP commenting syntax
|
||||
class PHPCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("// "),
|
||||
"multiline comment": Text("/*") + Key("enter") + Key("enter") + Text("*/") + Key("up")
|
||||
|
||||
}
|
||||
|
||||
class PHPSuperGlobals(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"globals": Text("$GLOBALS['']"),
|
||||
"post": Text("$_POST['']"),
|
||||
"get": Text("$_GET['']"),
|
||||
"files": Text("$_FILES['']"),
|
||||
"cookie": Text("$_COOKIE['']"),
|
||||
"session": Text("$_SESSION['']"),
|
||||
"request": Text("$_REQUEST['']"),
|
||||
"environment": Text("$_ENV['']")
|
||||
}
|
||||
|
||||
class PHPControlStructures(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"code block": Text("{") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if": Text("if() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"if else": Text("if() {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("else {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"else if": Text("elseif() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"for loop": Text("for(;;) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"for each loop": Text("for(<array> as [<value> |<key> => <value>]) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"while loop": Text("while() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"do while loop": Text("do {") + Key("enter") + Key("down") + Text("while()"),
|
||||
"switch statement": Text("switch() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"try catch": Text("try {") + Key("enter")+ Key("enter") + Text("}") + Key("enter") + Text("catch(<ExceptionClass> e) {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"function": Text("function functionName() {") + Key("enter")+ Key("enter") + Text("}"),
|
||||
"class": Text("class ClassName {") + Key("enter")+ Key("enter") + Text("}")
|
||||
|
||||
}
|
||||
|
||||
class PHPAccessModifiers(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"public": Text("public "),
|
||||
"private": Text("private "),
|
||||
"static": Text("static ")
|
||||
|
||||
}
|
||||
|
||||
class PHPUsefulMethods(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"print statement": Text("echo \"\"") + Key("left")
|
||||
|
||||
}
|
||||
|
||||
class PHPLogicalOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"logical and": Text("&&"),
|
||||
"logical or": Text("||"),
|
||||
"true": Text("true"),
|
||||
"false": Text("false"),
|
||||
"not": Text("!"),
|
||||
"logical exclusive or": Text("xor")
|
||||
}
|
||||
|
||||
class PHPAssignmentOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"plus equals": Text("+="),
|
||||
"minus equals": Text("-="),
|
||||
"multiply equals": Text("*="),
|
||||
"divide equals": Text("/="),
|
||||
".equals": Text(".=")
|
||||
}
|
||||
|
||||
class PHPArithmeticOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"multiplied by": Text("*"),
|
||||
"plus": Text("+"),
|
||||
"minus": Text("-"),
|
||||
"divided by": Text("/"),
|
||||
"modulus": Text("%") #causes some weird problem in dragonfly so this doesn't work, use "percent sign" instead
|
||||
}
|
||||
|
||||
|
||||
class PHPEscapeSequences(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"escape quotes": Text("\ ")+ Key("left") + Text("\"") + Text("\ ")+ Key("left") + Text("\""),
|
||||
"escape single quotes": Text("\ ")+ Key("left") + Text("\'") + Text("\ ")+ Key("left") + Text("\'"),
|
||||
"escape line": Text("\ ")+ Key("left") + Text("n"),
|
||||
"escape tab": Text("\ ")+ Key("left") + Text("t"),
|
||||
"escape carriage return": Text("\ ")+ Key("left") + Text("r"),
|
||||
}
|
||||
|
||||
class PHPComparisonOperators(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"equal to": Text("=="),
|
||||
"not equal to": Text("!="),
|
||||
"equal to type comparison": Text("==="),
|
||||
"not equal to type comparison": Text("!=="),
|
||||
"greater than": Text(">"),
|
||||
"less than": Text("<"),
|
||||
"less than or equal to": Text("<="),
|
||||
"greater than or equal to": Text(">="),
|
||||
|
||||
}
|
||||
|
||||
class PHPMiscellaneousStuff(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"PHP block": Text("<?php ?>"),
|
||||
|
||||
|
||||
"require": Text("require ('');"),
|
||||
"require once": Text("require_once ('');"),
|
||||
"include": Text("include ('');"),
|
||||
"include once": Text("require_once ('');"),
|
||||
"equals": Text(" = "),
|
||||
|
||||
}
|
||||
|
||||
phpBootstrap = Grammar("php bootstrap") # Create a grammar to contain the command rule.
|
||||
phpBootstrap.add_rule(PHPEnabler())
|
||||
phpBootstrap.load()
|
||||
|
||||
phpGrammar = Grammar("php grammar")
|
||||
phpGrammar.add_rule(PHPTestRule())
|
||||
phpGrammar.add_rule(PHPDataTypes())
|
||||
phpGrammar.add_rule(PHPVariableDeclarations())
|
||||
phpGrammar.add_rule(PHPCommentsSyntax())
|
||||
phpGrammar.add_rule(PHPSuperGlobals())
|
||||
phpGrammar.add_rule(PHPControlStructures())
|
||||
phpGrammar.add_rule(PHPAccessModifiers())
|
||||
phpGrammar.add_rule(PHPUsefulMethods())
|
||||
phpGrammar.add_rule(PHPLogicalOperators())
|
||||
phpGrammar.add_rule(PHPAssignmentOperators())
|
||||
phpGrammar.add_rule(PHPArithmeticOperators())
|
||||
phpGrammar.add_rule(PHPEscapeSequences())
|
||||
phpGrammar.add_rule(PHPComparisonOperators())
|
||||
phpGrammar.add_rule(PHPMiscellaneousStuff())
|
||||
phpGrammar.add_rule(PHPDisabler())
|
||||
phpGrammar.load()
|
||||
phpGrammar.disable()
|
||||
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global phpGrammar
|
||||
if phpGrammar: phpGrammar.unload()
|
||||
phpGrammar = None
|
|
@ -0,0 +1,71 @@
|
|||
# Author:Brandon Lovrien
|
||||
# This script is to be used for programming in the Python programming language
|
||||
|
||||
from dragonfly import (Grammar, CompoundRule, Dictation, Text, Key, AppContext, MappingRule)
|
||||
|
||||
class PythonEnabler(CompoundRule):
|
||||
spec = "Enable Python" # Spoken command to enable the Python grammar.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
pythonBootstrap.disable()
|
||||
pythonGrammar.enable()
|
||||
print "Python grammar enabled"
|
||||
|
||||
class PythonDisabler(CompoundRule):
|
||||
spec = "switch language" # spoken command to disable the Python grammar.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
pythonGrammar.disable()
|
||||
pythonBootstrap.enable()
|
||||
print "Python grammar disabled"
|
||||
|
||||
# This is a test rule to see if the Python grammar is enabled
|
||||
class PythonTestRule(CompoundRule):
|
||||
spec = "test Python" # Spoken form of command.
|
||||
|
||||
def _process_recognition(self, node, extras): # Callback when command is spoken.
|
||||
print "Python grammar tested"
|
||||
|
||||
# Handles Python commenting syntax
|
||||
class PythonCommentsSyntax(MappingRule):
|
||||
|
||||
mapping = {
|
||||
"comment": Text("# "),
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
# handles Python control structures
|
||||
class PythonControlStructures(MappingRule):
|
||||
mapping = {
|
||||
"if": Text("if condition:") + Key("enter"),
|
||||
"while loop": Text("while condition:") + Key("enter"),
|
||||
"for loop": Text("for something in something:") + Key("enter"),
|
||||
|
||||
"function": Text("def functionName():") + Key("enter"),
|
||||
"class": Text("class className(inheritance):") + Key("enter"),
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
# The main Python grammar rules are activated here
|
||||
pythonBootstrap = Grammar("python bootstrap")
|
||||
pythonBootstrap.add_rule(PythonEnabler())
|
||||
pythonBootstrap.load()
|
||||
|
||||
pythonGrammar = Grammar("python grammar")
|
||||
pythonGrammar.add_rule(PythonTestRule())
|
||||
pythonGrammar.add_rule(PythonCommentsSyntax())
|
||||
pythonGrammar.add_rule(PythonControlStructures())
|
||||
pythonGrammar.add_rule(PythonDisabler())
|
||||
pythonGrammar.load()
|
||||
pythonGrammar.disable()
|
||||
|
||||
|
||||
# Unload function which will be called by natlink at unload time.
|
||||
def unload():
|
||||
global pythonGrammar
|
||||
if pythonGrammar: pythonGrammar.unload()
|
||||
pythonGrammar = None
|
|
@ -0,0 +1 @@
|
|||
{"host": "localhost", "port": 8240}
|
Loading…
Reference in New Issue