|
Create LICENSE and README for project
First commit for godiffx, just boilerplate based off of
pydiffx.
Testing done: NA
|
4552441df26f5bc1f71e0957b915eb5d294e2c88 |
Jordan |
|
Create basic support files for diffx.
Created errors.go, sections.go, options.go, and text.go. These will
all be based on their python equivalents from pydiffx. At the moment,
there is no code within them besides stating which package they are
apart of.
No functionality introduced so no testing done.
|
53615b11759d77a06b2a0d6aa8f387beeb1eced7 |
Jordan |
|
Write basic constants for options.go
Added the basic functions to options.go based on what is in
options.py for pydiffx. This was accomplished via enums using iota
in go. The implementation may be tweaked overtime once I actually need
to start using them.
The functionality of these was tested in another go file. This was
also the first time I tried testing the godiffx module locally and
it worked!
|
ed55e923e78ead35565ee3f344a234516cfc3921 |
Jordan |
|
Wrote code for sections.go
sections.go is based off of sections.py, and the functionality was
replicated as close as possible to that file. One hiccup was that
Go does not support sets natively, but an easy work around is to use
sets and just set all of the keys to true.
Code was tested by creating the struct in another file that imported
this module. The default parameter method was tested and properly adds
in the default values and the getters were all functioning as expected.
|
3659b78ffe8b8cc27d23a5d1f497f2bb0ab00a21 |
Jordan |
|
Update documentation for sections.go
Basic documentation via comments was added to the code in sections.go.
No new functionality was introduced so there was no additional testing.
|
398e1cd37ede5380265ee716bb93f7217bfa9996 |
Jordan |
|
Write all custom errors for godiffx.
These are based on the errors that were created for pydiffx. Go
does not use errors in the same way, but an error struct was created
and an error can be returned whenever needed by other functions.
One note is that at the moment, there is no unicode support since I am not
very familiar with it or implementing it, but I assume it will be as
simple as changing the type and possibly importing the library in the
future.
This was tested by importing the module locally and testing each of
the different types of errors. The init function was validated to
ensure it would not overwrite an existing error and the Err function
was tested to ensure it printed properly. I also tested to ensure
the baseDiffXError was not accessible.
|
37da0122f047f79a5cb92e0aeba4d0b5711196ec |
Jordan |
|
Add documentation and fix line value for DiffXParseError
Basic documentation was added to all of the functions and errors.
They are all pretty simple definitions based off of what was used in
the pydiffx version.
There was also a modification made to the way line and column values are
treated in DiffXParseError. Originally this was set to just use the values
as they are passed in. However, pydiffx assumes these are 0 based so the
message increments it by 1. This change was tested by importing the
module locally in another file.
|
b9ade0ac8f01e150291ac24e2bebc38b01276cbc |
Jordan |
|
Create text values and write SplitLines
Following the example from text.py, the maps have been created for
godiffx as well. One thing to note is the utils folder is now gone.
This is because when creating a module in Go, you actually don't
use nested directories since those will then belong to a new package.
Another change is that instead of using a map for the objects like in
python, structs were created along with a way to initialize their
default values. The reasoning behind this is that BOMS uses tuples to
store multiple values in pydiffx, but tuples don't exist in Go.
The SplitLines method was also written. This took a fair bit of time
while I experimented and learned about the best way to handle bytes.
The bytes.Buffer seems to be a very efficient data structure that comes
with some functionality. Time will tell if this is the right way to go!
All of the objects have been tested in the separate project using this
module and I have run SplitLines with what I believe to be the proper
behaviour.
|
ddb24d486e20a4f3365cb1186c647575d2ff3458 |
Jordan |
|
Fix Errors and Write StripBom Method.
I made a silly mistake when creating the errors by naming the
error functions 'Err()' instead of 'Error()' so they were not
quite working like errors yet, so that has been resolved.
I also wrote the StripBom method which will remove a given BOM from
a byte buffer if it exists. In order to do this, I made a method that
can retrieve the BOM given a string of the encoding type.
I tested out the methods again in main. To test StripBom, I created a
buffer that held "\uFEFF is a string that starts with a Byte Order Mark"
and compared its length to before and after running the function. The buffer
that the function returns will be shorter but it will not mutate the buffer
passed in.
|
87a9119601141817aa81cef3e8b163a7d20b4f7b |
Jordan |
|
Created test files and wrote init tests for Errors.go
All of the test files were created and can be run with the command
'go test'. I have written all of the Init tests for errors.go except
for the base class since I am not 100% sure how to test private methods.
However, I don't think it is too important since all of the other test cases
work.
|
0576404dacb4b9f6ac9f5eceb9c29ee97c022b2a |
Jordan |
|
Finish tests for errors.go
Finished writing the rest of the tests for errors.go, specifically
all of the tests for the Error() methods.
The only testing that was done was running the test suite and seeing
all of the new tests pass.
|
40257068d62ca72958a447221529a04876ca908a |
Jordan |