improve documentation
authorIan Kelling <ian@iankelling.org>
Wed, 2 Jul 2014 02:34:56 +0000 (19:34 -0700)
committerIan Kelling <ian@iankelling.org>
Wed, 2 Jul 2014 02:34:56 +0000 (19:34 -0700)
Readme.org

index 887294e21d36b99352719bc17f6f34da8275412c..f99e92a2cabb7bfb818389989ae3408644a9b546 100644 (file)
@@ -96,7 +96,32 @@ You may customize spray by modifying following items:
 - [Face] spray-base-face
 - [Face] spray-accent-face
 
+** Algorithm details
+
+*** Why?
+Based on a quick count, similar programs are implemented in 6 languages, 9 platforms and 15+ projects. The core algorithm is choosing a word, an accent character and an interval to display it, and how to do that best is quite important. However, how exactly each project implements that algorithm is generally buried in unrelated code, and mostly undocumented.  It is extremely difficult and time consuming to figure out the exact algorithm and differences between them for each project, and I don't think it's hardly ever been done. This sucks. Users would like to know so they can pick one. Developers would like to know so that they can improve their implementation of the algorithm.
+
+So, I am opening a bug on every project I find, asking them to document what file and function(s) their algorithm is implemented in, and preferably to document it in english as well. The following is an example.
+
+*** Algorithm code location
+This project's implementation is located in ./spray.el
+The functions =spray--word-at-point=, =spray--update= and =spray-start= contain the main of the algorithm. Word splitting is also duplicated the same way as in those functions throughout ./spray.el.
+
+*** Algorithm translated from code to english
+
+words are split at space, tab and newline characters, and if any of the characters =.!?;= appear in a word, a blank word is appended to the current word
+
+each word is displayed for (60 / the choosen wpm) seconds, except if the word contains any of =:,= or is greater than 9 characters long, in which case it is displayed for twice as long
+
+The accent location is chosen as the nth character in a word, depending on its length, based on the following table
+| length | accent position |
+|      1 |               1 |
+|    2-5 |               2 |
+|    6-9 |               3 |
+|  10-13 |               4 |
+|    14+ |               5 |
+  
 
 ** Contributions are welcome!
 
-There's lots of features and enhancements to do. The algorithm has lots of room for improvement. Also, other projects may have algorithm improvements we can port over to this one.
+There's lots of features and enhancements to do. The algorithm and interface could certainly be improved in various ways.