The Cobra Programming Language
How To
PrintHelloWorld
WriteBasicSyntax
UseProperties
MakeAnIfElseLadder
MakeABranchStatement
DeclareInits
MakeAClassHierarchy
UseNilAndNilableTypes
UseDynamicTyping
DeclareVariableNumberOfArgs
ReadAndWriteFiles
CheckInheritanceAndImplementation
ImplementIEnumerable1
ImplementIEnumerable2
IterateThroughRecursiveDataWithYield
MakeACollectionClass
AccessMySQL
"""
Reading files in Cobra relies on the libraries and therefore is pretty the much
the same as C# or VB.

See the BCL (Base Class Library) docs for File, StreamReader, StreamWriter,
TextReader and TextWriter for more.
"""


class Test

    def main is shared
        nl = Environment.newLine
        fileName = 'test-file.text'

        # write a whole file
        File.writeAllText(fileName, 'This is a test file.[nl]To make sure there is a file to work with.[nl]')

        # read a whole file
        contents = File.readAllText(fileName)
        assert 'test' in contents   # The `in` operator works for strings: <substring> in <string> ==> bool

        # read line by line
        num = 1
        using sr = File.openText(fileName)
            while true
                line = sr.readLine
                if line is nil
                    break
                print '[num]. len=[line.length] "[line.trim()]"'
                num += 1

        # be nice about IO errors
        fileName = 'bad-file-name.text'
        try
            contents = File.readAllText(fileName)
        catch ioe as IOException
            print 'I/O Error: [ioe.message]'
        success
            assert 'test' in contents