![My resume Raging against the machine with the Office Space crew.](https://user-images.githubusercontent.com/12698076/249662222-43db25e7-810c-461d-b4dc-b84f9b426dac.jpeg)
evanthegrayt / standup_md Goto Github PK
View Code? Open in Web Editor NEW๐จโโ๏ธ Standup Doctor: An automated and customizable way to keep track of daily standups in markdown files.
License: MIT License
๐จโโ๏ธ Standup Doctor: An automated and customizable way to keep track of daily standups in markdown files.
License: MIT License
Implement version module like I have in StandupMD
-e
to prevent adding a new entry for today if it doesn't already exist.-t
to add tomorrow's entry-n
to write the file, but don't open it in the editor.Make an Entry
class and split out all the hash/entry stuff into objects that can be manipulated.
This will make it easier to edit old entries if necessary. Methods the class should have:
to_md
return the entry as Markdownto_json
return the entry as JSONheader
and all things to do with formattingGet the readme ready for a release.
After #9, we need to get documentation updated. Especially the table of options/flags.
Not sure what this would entail, but it'd be cool if there was an option for sending today's entry directly to a chat channel.
Notes don't work. They should also be optional -- don't print to file
Current entries and impediments are stored in arrays with no bullet character. Previous entries should be the same way.
Something like...
entries.map { |e| e.sub(/^\s*[\*-]\s*/, '')
Should be done with #9
I think this one will be tricky, but if you have subtasks, they are stripped of leading whitespace, so they're lost.
Example:
- Task 1
- Subtask 1
In the above example, the leading whitespace from Subtask 1
would be lost.
Because Slack (bafflingly) doesn't use real markdown, I've noticed some of my coworkers use asterisks for headers (like*Current*
) so the header will actually be bold in the Slack UI. I don't like this, because it's not markdown headers, but I understand the need for it.
the real fix would be for Slack to implement markdown but I've given up hope on that
Allow the user to set an array that will specify the preferred order of sub-headers. Default will be
@sub_header_order = [:previous, :current, :impediment, :notes]
Add another two attributes. Instead of header formats including the #
, have header_depth=(integer)
and sub_header_depth=(integer)
. The number (1..6
) will determine how many octothorps will preface the header. Keeping them separate will assist when we do #9, as we won't want the octothorps in our headers.
Output for -t
returns a hash. It should print the markdown to the terminal. Make a method that can be reused.
currently, only the Cli
reads the ~/.standup_md.yml
config file, but there should be a way to pass #config_file=(file)
and have it set the options.
Entries are being carried over to new month's files. Today is May 1st, and while it did create the new file, it still printed all of April's entries in May's file.
# 2020-05-01
## Previous
- TDC: [Admin routes](https://gitlab.com/publicstrategies/tdc/-/issues/59)
- TDC: [Email sign-up and contact us](https://gitlab.com/publicstrategies/tdc/-/issues/56)
## Today
- project: [task](link)
## Impediments
- None
# 2020-04-30
## Previous
- TDC: [Install and evaluate CKEditor](https://gitlab.com/publicstrategies/tdc/-/merge_requests/35)
- TDC: [Admin routes](https://gitlab.com/publicstrategies/tdc/-/issues/59)
## Today
- TDC: [Admin routes](https://gitlab.com/publicstrategies/tdc/-/issues/59)
- TDC: [Email sign-up and contact us](https://gitlab.com/publicstrategies/tdc/-/issues/56)
## Impediments
- None
<!-- rest of april's entry below -->
We're on 3.3 now, but the tests only go up to 3.0.
Add a way to search entries. This would mean it would have to know how to find entries in their associated file if the user specified an entry that's from a different month.
april_6th = Standup.entry('2020-04-06') # Also maybe accept a `Date` object
Also make files searchable.
april = Standup.entries('2020_04.md") # Also maybe accept a `Date` object
All entries for March will be returned. Make the file string honor file_name_format
.
There are a few TODO
s in the test suite. These need to be fixed, and also, StandupMD#reload!
isn't working as expected. This should also be fixed.
Github pages and rdoc can't support tables, apparently....
The following doesn't work, as the output isn't 100% _gnu_generic
compatible.
# Put in ~/.zshrc
compdef _gnu_generic standup
Write a custom completion function.
By the way, until this is ready, using the above method mostly woks, so it can be used in the meantime.
Because we let the user set editor
via the config file, but the StandupMP
class doesn't use editor and loads the config file.
We should probably add a cli
sub-section to the YAML. Something like:
current_header: Today
cli:
editor: vim
Change #all_previous_entries
from array into a hash. #to_json
can then be called on it. Structure should be:
{
"2020-04-20": {
"previous": ["task 1", "task 2"],
"today": ["task3"],
"impediments": ["None"]
},
"2020-04-19": {
"previous": ["task 1", "task 2"],
"today": ["task3"],
"impediments": ["None"]
}
}
This will be a pretty significant refactor, related to #13 and #15
Add way to change configurations for the whole pre-existing file. For example, if a file currently uses -
(dash) for bullet_character
, but they want to change it to *
, call a method called #convert
:
def convert(attribute, from, to)
# rewrite the file with the attribute change from`from` to `to`
end
s = Standup.new
s.convert(:bullet_header, '-', '*')
The only page that isn't working is this one and I have no clue why. Need to look into it.
Make the executable into a class and write tests for it.
Upon a new installation, if ~/.cache
doesn't exist, the program blows up.
The parser requires files to be formatted exactly in the way it expects. If a user has a previously existing file, but it's not in the right format, the parser will fail. Options will need to be set via config file before the executable is run. Add this to readme.
Conform to StandardRB
File#load
and File#write
should be abstracted into parser objects.
Add a test for the StandupMD file
When calling standup -p DATE
, only certain entries are found. From a little bit of testing, seems like the newest two from the file? More research is needed.
If a user is adding an entry from the command line, if they pass -v
they should know it worked. This should be the same for all options.
Make this gem installable
It's annoying to change header_depth
because it can't be greater than sub_header_depth
, but header_depth
starts at 1
, and sub_header_depth
starts at 2
. To change it, header_depth
, you first must change sub_header_depth
or an exception is raised. Just automatically change the depths if they're too high or low.
This is wrong. Shouldn't yield config, but entry.
def self.create
entry = new(
Date.today,
config.current,
config.previous,
config.impediments,
config.notes
)
yield config if block_given?
entry
end
Should be
def self.create
new(
Date.today,
config.current,
config.previous,
config.impediments,
config.notes
).tap { |config| yield config if block_given? }
end
Currently, there's no way to open a previous file in your editor. It would be a nice feature to have.
Currently only 2.6 is tested. We need to test 2.7, 3.0, and 3.1.
Once all other issues are completed, push to RubyGems.org
It'd be cool if this gem knew how to read/write yaml files. The only thing that would need to be added is new load/write methods.
This will actually help with another design problem I'm having. I want to add a to_md
method at the entry level that will return the entry as an array of markdown lines. We already have to_json
and to_h
, at the entry level, so to_md
would be nice. Then, when writing a file, we could just do
File.open(file, 'w') do |f|
entry_list.each { |e| f.puts(e.to_md) }
end
The only thing I don't like about this, is I don't feel like the config for markdown should be in the Entry
class. In other words, this feels wrong:
StandupMD.configure do |s|
s.entry.header_depth = 2
s.entry.bullet_character = '*'
end
BUT, if we have different parsers for YAML, Markdown, etc, then the config can live in those classes.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.