Wiki

Ticket #281: count.patch

File count.patch, 11.0 KB (added by hopscc, 7 years ago)
  • Source/Snapshot/Cobra.Lang/Extensions.cobra

     
    5050                if .length == 0, return this 
    5151                return this[:1].toUpper + this[1:] 
    5252 
    53         def count(c as char) as int 
     53        def countOf(c as char) as int 
    5454            """ Return a count of the number of occurrences of the char in this string. """ 
    5555            test 
    56                 assert ''.count(c'x')==0 
    57                 assert 'x'.count(c'x')==1 
    58                 assert 'X'.count(c'x')==0  # case sensitive 
    59                 assert ' ! ! '.count(c'!')==2 
     56                assert ''.countOf(c'x')==0 
     57                assert 'x'.countOf(c'x')==1 
     58                assert 'X'.countOf(c'x')==0  # case sensitive 
     59                assert ' ! ! '.countOf(c'!')==2 
    6060            body 
    6161                count = 0 
    6262                for ch in this 
  • Source/Tokenizer.cobra

     
    586586            if _sourceLine is nil 
    587587                # end of source 
    588588                return false 
    589             numLines = _sourceLine.count(c'\n') 
     589            numLines = _sourceLine.countOf(c'\n') 
    590590            if numLines == 0 and _willAlwaysEndWithNewLine 
    591591                _sourceLine += "\n" 
    592592            #trace sourceLine 
  • Source/Cobra.Lang/Extensions.cobra

     
    7474                if .length == 0, return this 
    7575                return this[:1].toUpper + this[1:] 
    7676 
    77         def count(c as char) as int 
     77        def count as int 
     78            """ 
     79            Return count of single chars in this string i.e this.length. 
     80            Analogous to count on Collections, Enumerables (list). 
     81            """ 
     82            test 
     83                assert ''.count == 0 
     84                assert 'chuck'.count == 5  
     85                s = 'split(sep, 2) is not easier,simpler or more obvious than break(sep)' 
     86                assert s.count == s.length 
     87            body 
     88                return .length 
     89             
     90        def countOf(c as char) as int 
    7891            """ Return a count of the number of occurrences of the char in this string. """ 
    7992            test 
    80                 assert ''.count(c'x')==0 
    81                 assert 'x'.count(c'x')==1 
    82                 assert 'X'.count(c'x')==0  # case sensitive 
    83                 assert ' ! ! '.count(c'!')==2 
     93                assert ''.countOf(c'x')==0 
     94                assert 'x'.countOf(c'x')==1 
     95                assert 'X'.countOf(c'x')==0  # case sensitive 
     96                assert ' ! ! '.countOf(c'!')==2 
    8497            body 
    8598                count = 0 
    8699                for ch in this, if c == ch, count += 1 
    87100                return count 
    88101 
    89         def count(substring as String) as int 
     102        def countOf(substring as String) as int 
    90103            """ Return a count of the number of occurrences of the substring in this string. """ 
    91104            test 
    92                 assert ''.count('aoeu') == 0 
    93                 assert 'x'.count('x') == 1 
    94                 assert 'xyxy'.count('xy') == 2 
    95                 assert 'xyxy'.count('a') == 0 
     105                assert ''.countOf('aoeu') == 0 
     106                assert 'x'.countOf('x') == 1 
     107                assert 'xyxy'.countOf('xy') == 2 
     108                assert 'xyxy'.countOf('a') == 0 
    96109            body 
    97110                return (.length - .replace(substring, '').length) // substring.length 
    98111 
  • Source/CommandLine.cobra

     
    514514    """ 
    515515 
    516516    get versionString as String is shared 
    517         ensure result.count(c'.') >= 2 
     517        ensure result.countOf(c'.') >= 2 
    518518 
    519519        # Can't just take CobraCore.versionDescription as is, because that will be the one from Snapshot, 
    520520        # not the current Source directory. And Snapshot can be a final release such as '0.7.4' for a 
     
    999999        reMatch = Regex(r'\d+\.\d+\.\d+').match(.versionString) 
    10001000        assert reMatch.success 
    10011001        version = reMatch.value to ! 
    1002         assert version.count(c'.') == 2  # ex: '0.8.0' 
     1002        assert version.countOf(c'.') == 2  # ex: '0.8.0' 
    10031003        if ' ' in .versionString or 'post' in .versionString  # ex: '0.8.0 post' 
    10041004            # 'post' versions have a fourth version component of 1, as opposed to 0 
    10051005            version += '.1' 
    1006             assert version.count(c'.') == 3 
     1006            assert version.countOf(c'.') == 3 
    10071007        _options.addExtraUse('use System.Reflection') 
    10081008        _options.addExtraSource("assembly\n\thas AssemblyVersion('[version]')\n") 
    10091009        .doCompile(List<of String>(), true, false, nil) 
  • Source/Phases/BindRunTimeLibraryPhase.cobra

     
    3939        runTimePaths = c.commandLineArgParser.readFilesFile(filesPath) 
    4040        runTimePaths.reverse 
    4141        runTimeLibNativeSourceFileName = c.backEnd.runTimeLibNativeSourceFileName   # 'Native.cs', 'Native.m', etc. 
    42         assert runTimeLibNativeSourceFileName.count(c'.') == 1 
     42        assert runTimeLibNativeSourceFileName.countOf(c'.') == 1 
    4343        for runTimePath in runTimePaths 
    4444            if Path.getFileName(runTimePath) == runTimeLibNativeSourceFileName 
    4545                suffix = .options.embedRunTimeSuffix 
  • Source/BackEndClr/ScanClrType.cobra

     
    221221                    .warning(CobraWarning('Already have declaration "[clrType.name]" in namespace "[curNameSpace.fullName]".')) 
    222222                else 
    223223                    if type.isClass 
    224                         if type.name.startsWith('Extend_') and type.name.count(c'_') >= 2 
     224                        if type.name.startsWith('Extend_') and type.name.countOf(c'_') >= 2 
    225225                            curNameSpace.addDecl(Extension(clrType, .backEnd)) 
    226226                        else 
    227227                            curNameSpace.addDecl(Class(clrType, .backEnd)) 
  • Source/BackEndJvm/JvmJarSig.cobra

     
    116116            assert fullName.contains('<') and fullName.endsWith('>') 
    117117            canonName = fullName.before('<') 
    118118            #params = fullName.after('<')[0:-1] # drop end '>' 
    119             #nParams = 1 + params.count(c',') # params.countOf(c',')   
     119            #nParams = 1 + params.countOf(c',') # params.countOf(c',')   
    120120            #assert canonName.contains('.') 
    121121            #idx = canonName.lastIndexOf('.') 
    122122            #gDefName = canonName[idx+1:] + '`[nParams]' 
     
    519519         
    520520        _isArray = true 
    521521        _arrayComponentType = elementType 
    522         _arrayDimension = name.count(c'[') 
     522        _arrayDimension = name.countOf(c'[') 
    523523         
    524524        # has properties 'length' and method 'getLength' and indexer for get and set 
    525525        methodList = List<of JavaMethodInfo>() 
  • Source/BackEndJvm/ScanJvmType.cobra

     
    137137                    .warning(CobraWarning('Already have declaration "[jvmNative.name]" in namespace "[curNameSpace.fullName]".')) 
    138138                else 
    139139                    if jvmType.isClass 
    140                         if jvmType.name.startsWith('Extend_') and jvmType.name.count(c'_') >= 2 
     140                        if jvmType.name.startsWith('Extend_') and jvmType.name.countOf(c'_') >= 2 
    141141                            # e.g.Extend_String - TODO  
    142142                            curNameSpace.addDecl(Extension(jvmNative, .backEnd)) 
    143143                        else 
  • Source/BackEndJvm/JavaGenerator.cobra

     
    280280        if false 
    281281            # kind of silly, but it works: 
    282282            d = Dictionary<of int, int>() 
    283             for i in 1 : File.readAllText(_javaFileName).count(c'\n')+1 
     283            for i in 1 : File.readAllText(_javaFileName).countOf(c'\n')+1 
    284284                d[i] = i 
    285285            return d     
    286286        return nil 
  • Source/CobraTokenizer.cobra

     
    363363        assert tok.text.endsWith(' ') 
    364364        # this is okay on continued lines 
    365365        if .justDidLineContinuation 
    366             indentLevel = tok.text.count(c'\t') + tok.text.count(c' ') // 4 
     366            indentLevel = tok.text.countOf(c'\t') + tok.text.countOf(c' ') // 4 
    367367            return _processNumIndentLevels(indentLevel)  # will check continuation indentation rules 
    368368        else 
    369369            return .onINDENT_MIXED_TS(tok) 
     
    385385        return .onINDENT_MIXED_TS(tok) 
    386386 
    387387    def onINDENT_ALL_TABS(tok as IToken) as IToken? 
    388         numTabs = tok.text.count(c'\t') 
     388        numTabs = tok.text.countOf(c'\t') 
    389389        return _processNumIndentLevels(numTabs) 
    390390 
    391391    def onINDENT_ALL_SPACES(tok as IToken) as IToken? 
    392         numSpaces = tok.text.count(c' ') 
     392        numSpaces = tok.text.countOf(c' ') 
    393393        if numSpaces % 4 and not .justDidLineContinuation # yes, 4. hard coded, intentionally. 
    394394            # TODO: should really just record an error and take (numSpaces/4).round as the indent 
    395395            .throwError('Space-based indentation must be a multiple of 4. This line has a remainder of [numSpaces%4].') 
  • Tests/200-misc/855-countOf.cobra

     
     1# test string extns countOf (instead of count) 
     2class TestCountOf 
     3    def main is shared 
     4        # chars 
     5        s = 'a.b.c.d' 
     6        c = s.countOf(c'.')  
     7        assert c == 3 
     8        assert s.countOf(c'-') == 0 
     9     
     10        #substrings 
     11        assert s.countOf('.') == 3 
     12        assert s.countOf('-') == 0 
     13        assert s.countOf('.c') == 1 
     14         
     15        # chk count noargs same as length 
     16        assert ''.count == 0 
     17        assert "".count == 0 
     18        assert 'xyzzy'.count == 5 
     19        s = 'ezri dax is an excellent successor to jadzia dax' 
     20        assert s.count == s.length 
     21         
  • Tests/200-misc/850-count.cobra

     
     1# test/ensure that String Extn count(char) is changed to be more analogous 
     2# to count on other .Net things ( like Collections) - i.e no args 
     3class TestCount 
     4    def main is shared 
     5        s = 'a.b.c.d' 
     6        c = s.count(c'.') # .error.  The method "count" is expecting 0 arguments, but 1 are being supplied in this call 
     7        assert c == 3 # notreached 
  • Tests/700-command-line/900-check-complier-message-format/200-check-compiler-message-format.cobra

     
    3535                if 'error' in line, foundError = true  # expecting an error for each file tested 
    3636                assert '(' in line 
    3737                assert re.match(line).success, line 
    38             if '(' in line, assert line.count(c'(') == 1 
     38            if '(' in line, assert line.countOf(c'(') == 1 
    3939        assert foundError 
    4040         
    4141    def run(args as String) as String