22 import tokenize |
22 import tokenize |
23 |
23 |
24 from dataclasses import dataclass |
24 from dataclasses import dataclass |
25 |
25 |
26 from eric7 import Utilities |
26 from eric7 import Utilities |
|
27 from eric7.EricWidgets.EricApplication import ericApp |
|
28 from eric7.SystemUtilities import FileSystemUtilities |
27 |
29 |
28 KEYWORD = token.NT_OFFSET + 1 |
30 KEYWORD = token.NT_OFFSET + 1 |
29 COMMENT = tokenize.COMMENT |
31 COMMENT = tokenize.COMMENT |
30 INDENT = token.INDENT |
32 INDENT = token.INDENT |
31 DEDENT = token.DEDENT |
33 DEDENT = token.DEDENT |
224 @type dict |
226 @type dict |
225 @return a statistics object with the collected code statistics |
227 @return a statistics object with the collected code statistics |
226 @rtype SourceStat |
228 @rtype SourceStat |
227 """ |
229 """ |
228 try: |
230 try: |
229 text = Utilities.readEncodedFile(filename)[0] |
231 if FileSystemUtilities.isRemoteFileName(filename): |
|
232 remotefsInterface = ( |
|
233 ericApp().getObject("EricServer").getServiceInterface("FileSystem") |
|
234 ) |
|
235 bText = remotefsInterface.readFile( |
|
236 FileSystemUtilities.plainFileName(filename) |
|
237 ) |
|
238 text = Utilities.decode(bText)[0] |
|
239 else: |
|
240 text = Utilities.readEncodedFile(filename)[0] |
230 except (OSError, UnicodeError): |
241 except (OSError, UnicodeError): |
231 return SourceStat() |
242 return SourceStat() |
232 |
243 |
233 parser = Parser() |
244 parser = Parser() |
234 parser.parse(text) |
245 parser.parse(text) |