mirror of
https://github.com/c0de-archive/pixoPython.git
synced 2024-12-21 21:12:39 +00:00
add some quality of life methods
This commit is contained in:
parent
3be186d8b0
commit
a4342f45e9
73
helpers.py
Normal file
73
helpers.py
Normal file
@ -0,0 +1,73 @@
|
||||
import os
|
||||
from machine import Timer
|
||||
from board import TOTAL_DOTS
|
||||
|
||||
def cat(filename, content=False):
|
||||
"""
|
||||
Simulation of an OS's `cat`
|
||||
|
||||
`filename` is either a full or relative path
|
||||
to a file to interact with.
|
||||
|
||||
When `content` is not provided, the contents
|
||||
of the file will be printed out. When provided,
|
||||
`content` is expected to be a string-like value
|
||||
that will be written to `filename`
|
||||
"""
|
||||
mode = 'r'
|
||||
if content:
|
||||
mode = 'w'
|
||||
with open(filename, mode) as file:
|
||||
if content:
|
||||
file.write(content)
|
||||
else:
|
||||
print(''.join(file.readlines()))
|
||||
file.close()
|
||||
|
||||
def ls(path=''):
|
||||
"""
|
||||
Prints out the contents of a directory.
|
||||
|
||||
When `path` is defined, it's expected to
|
||||
be string containing the full or relative
|
||||
path to a destination
|
||||
"""
|
||||
print('ls %s' % path)
|
||||
print('\n'.join(os.listdir()))
|
||||
|
||||
class TimeLoop:
|
||||
"""
|
||||
If you have an iterable (such as the BOARD),
|
||||
you can use this class to run some code
|
||||
asyncronously; which will still allow interactive
|
||||
commands on the REPL.
|
||||
|
||||
Available methods:
|
||||
|
||||
`self.st(callback)` - Starts the timer running
|
||||
and will run `callback` every self.timer_speed ms
|
||||
|
||||
`self.s()` - Completely stops the timer
|
||||
|
||||
Arguments at initialization:
|
||||
|
||||
`timer_speed` is required, and will determine
|
||||
how often (in ms) `self.st(callback)` will be
|
||||
triggered. (You can't call `callback` from `self`)
|
||||
|
||||
`timer_id` is optional, and should only be used
|
||||
when you want to run multiple timers concurrently
|
||||
"""
|
||||
def __init__(self, timer_speed, timer_id=-1):
|
||||
self.timer = Timer(timer_id)
|
||||
self.timer_speed = timer_speed
|
||||
|
||||
def st(self, callback):
|
||||
self.timer.init(
|
||||
period=self.timer_speed,
|
||||
mode=Timer.PERIODIC,
|
||||
callback=lambda self: callback()
|
||||
)
|
||||
|
||||
def s(self):
|
||||
self.timer.deinit()
|
Loading…
Reference in New Issue
Block a user