def vocab(m): vocab = vocab_map[m['vocab']] if m['subcommands']: subcommand = subcommands[m['subcommands']] vocab = subcommand(vocab) if 'dotted' in m['transcript']: vocab = '.'.join(vocab) + '.' insert(vocab)
def formatters(m): phrase = m['phrase'] if 'title' in m['formatters']: phrase = formatters_map['title'](phrase) m['formatters'].remove('title') for formatter in m['formatters']: phrase = formatters_map[formatter](phrase) insert(phrase)
'copy': 'cp ', 'link': 'ln ', 'list': 'ls ', 'make dir': 'mkdir ', 'move': 'mv ', 'p grep': 'pgrep ', 'p kill': 'pkill ', 'remove': 'rm ', 'remove dir': 'rmdir ', 'symbolic link': 'ln -s ', 'all': '-a ', 'force': '-f ', 'interactive': '-i ', 'long': '-l ', 'recursive': '-r ', 'silent': '-s ', 'verbose': '-v ', 'flag': '--', 'help': '--help', 'version': '--version', 'parent': '../', } ctx = Context('cli') ctx.set_commands({ '<cli>': lambda m: insert(cli_map[m['cli']]), }) ctx.set_choices({ 'cli': cli_map, })
suffix = 'th' return suffix def format_number(n, separator): n = str(n) if not separator: return n n = list(n) for i in range(3, len(n), 4): n.insert(len(n) - i, separator) return ''.join(n) def number(m): n = m['n'] separator = separators_map[m['separators']] if m['separators'] else None return format_number(n, separator) ctx = Context('numbers') ctx.set_commands({ 'number <n> [with <separators>]': lambda m: insert(number(m)), 'ordinal <n> [with <separators>]': lambda m: insert(number(m) + ordinal_suffix(m['n'])), }) ctx.set_choices({ 'separators': separators_map.keys(), })
def surround(m): delimiters = delimiters_map[m['delimiters']] insert(delimiters) for _i in range(len(delimiters) // 2): press('Left')
delimiters_map = normalize_keys({ 'tick': '``', 'quote': '\'\'', 'square|bracket': '[]', 'angle': '<>', 'double quote|double quotes': '""', 'brace|curly': '{}', 'paren': '()', 'double under': '____', 'space': ' ', }) def surround(m): delimiters = delimiters_map[m['delimiters']] insert(delimiters) for _i in range(len(delimiters) // 2): press('Left') ctx = Context('delimiters') ctx.set_commands({ 'surround <delimiters>': surround, 'pair <delimiters>': lambda m: insert(delimiters_map[m['delimiters']]), }) ctx.set_choices({ 'delimiters': delimiters_map.keys(), })
def operators(m): op = operators_map[m['operators']] insert(f' {op} ')
def camel_case(m): phrase = m['phrase'] formatter = lambda i, word: word if i == 0 else word.capitalize() formatted = format(phrase, formatter) insert(formatted)
def formatters(m): phrase = m['phrase'] if 'title' in m['formatters']: phrase = formatters_map['title'](phrase) m['formatters'].remove('title') for formatter in m['formatters']: phrase = formatters_map[formatter](phrase) insert(phrase) ctx = Context('formatters') ctx.set_commands({ 'word <word>': lambda m: insert(uppercase_i(m['word'])), 'upper <word>': lambda m: insert(m['word'].capitalize()), 'lower <word>': lambda m: insert(m['word'].lower()), 'phrase <phrase>': lambda m: insert(uppercase_i(m['phrase'])), 'sentence <phrase>': lambda m: insert(uppercase_i(m['phrase'].capitalize())), 'camel <phrase>': camel_case, '<formatters>+ <phrase>': formatters, 'undo insert': lambda m: undo_insert(), })
""" This module is used for typing out words that are already in the model vocabulary but are difficult for the engine to identify because they get confused with other words. """ from osprey.voice import Context, insert fix_list = [ 'add', 'and', 'bin', 'crate', 'desk', 'git', 'man', ] ctx = Context('fix') ctx.set_commands({ 'fix <fix>': lambda m: insert(m['fix']), 'fix upper <fix>': lambda m: insert(m['fix'].capitalize()), }) ctx.set_choices({ 'fix': fix_list, })
def code_block(m): insert('```') press('Enter') press('Enter') insert('```') press('Up')
from osprey.voice import Context, insert, press def code_block(m): insert('```') press('Enter') press('Enter') insert('```') press('Up') ctx = Context('markdown') ctx.set_commands({ 'check box': lambda m: insert('- [ ] '), 'code block': code_block, })
'June': 'Jun', 'July': 'Jul', 'August': 'Aug', 'September': 'Sept', 'October': 'Oct', 'November': 'Nov', 'December': 'Dec', # days of the week 'Sunday': 'Sun', 'Monday': 'Mon', 'Tuesday': 'Tue', 'Wednesday': 'Wed', 'Thursday': 'Thu', 'Friday': 'Fri', 'Saturday': 'Sat', } ctx = Context('shrink') ctx.set_commands({ 'shrink <shrink>': lambda m: insert(shrink_map[m['shrink']]), 'shrink upper <shrink>': lambda m: insert(shrink_map[m['shrink']].capitalize()), 'shrink lower <shrink>': lambda m: insert(shrink_map[m['shrink']].lower()), }) ctx.set_choices({ 'shrink': shrink_map.keys(), })
from osprey.voice import Context, insert symbols_map = { 'arrow': '->', 'wide arrow': '=>', 'ellipsis': '...', 'degree': '°', } ctx = Context('symbols') ctx.set_commands({ 'symbol <symbols>': lambda m: insert(symbols_map[m['symbols']]), }) ctx.set_choices({ 'symbols': symbols_map, })