documentation!
Bystroushaak
bystrousak at kitakitsune.org
Fri Jul 22 21:18:54 UTC 2016
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me at xeny.net [self-interest]
napsal(a):
> IMO the worst thing that ever happened to object-oriented programming
> was the idea that if we write good code our environments will
> automatically be self-documenting.
I am kind of fighting with this now, when I am trying to write first
projects in Self and almost no method in collections is documented.
Sometimes it may be clear from the name, but even then it is kinda hard
to deduce what types the method accepts as parameters (strings
especially, where there is methods that accepts just one character long
strings).
I think that documentation in method comments would be great for the web
browsers like http://browser.russell.larrikin.org.
On the slightly different topic: I implemented the splitBy:* method,
which allows you to split source strings by variable length strings.
Something like python's str.split(str). Either I wasn't able to find it,
or it wasn't there. Would it be possible (or desirable) to add it to
official Self distribution (if it isn't already there)? I use it all the
time for simple text parsing like
protocol: ('http://domain' splitBy: '://') first
Another issue - the unittests. I've managed to find assert:, and assert:
Equals:, but they are hidden somewhere deep in the test suite for traits
oddball and there is also assert: in traits block and I am confused on
what should I use.
*
bootstrap addSlotsTo: bootstrap stub -> 'traits' -> 'string' -> () From:
( | {
'Category: transforming\x7fCategory: tokenizing\x7fComment:
Split the string by the `word`. If the word is empty,
return string splitted by charactes. If it is nil,
return list with the whole string.\x7fModuleInfo: Module: http_client
InitialContents: FollowSlot'
splitBy: word = ( |
current <- 0.
full_size.
out.
|
out: list copy.
word = nil ifTrue: [^out add: self].
full_size: self size.
full_size <= word size ifTrue: [^out].
word size = 0 ifTrue: [^self asList.].
[current <= full_size] whileTrue: [
self
findSubstring: word
StartingAt: current
IfPresent: [| :pos. |
out add: (self copyFrom: current UpTo: pos).
current: pos + (word size).
]
IfAbsent: [
(current = 0) ifTrue: [^ (list copy) add: self.].
out add: (self copyFrom: current UpTo: full_size).
^out.
].
].
^out).
} | )
More information about the Self-interest
mailing list