FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
vscode-python/pythonFiles/parso/python/prefix.py at master · litleleprikon/vscode-python · GitHub
litleleprikon
/
vscode-python
Public
forked from
microsoft/vscode-python
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
vscode-python
/
pythonFiles
/
parso
/
python
/
prefix.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
97 lines (81 loc) · 2.35 KB
Breadcrumbs
vscode-python
/
pythonFiles
/
parso
/
python
/
prefix.py
Copy path
File metadata and controls
97 lines (81 loc) · 2.35 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import
re
from
codecs
import
BOM_UTF8
from
parso
.
python
.
tokenize
import
group
unicode_bom
=
BOM_UTF8
.
decode
(
'utf-8'
)
class
PrefixPart
(
object
):
def
__init__
(
self
,
leaf
,
typ
,
value
,
spacing
=
''
,
start_pos
=
None
):
assert
start_pos
is
not
None
self
.
parent
=
leaf
self
.
type
=
typ
self
.
value
=
value
self
.
spacing
=
spacing
self
.
start_pos
=
start_pos
@
property
def
end_pos
(
self
):
if
self
.
value
.
endswith
(
'
\n
'
):
return
self
.
start_pos
[
0
]
+
1
,
0
if
self
.
value
==
unicode_bom
:
# The bom doesn't have a length at the start of a Python file.
return
self
.
start_pos
return
self
.
start_pos
[
0
],
self
.
start_pos
[
1
]
+
len
(
self
.
value
)
def
create_spacing_part
(
self
):
column
=
self
.
start_pos
[
1
]
-
len
(
self
.
spacing
)
return
PrefixPart
(
self
.
parent
,
'spacing'
,
self
.
spacing
,
start_pos
=
(
self
.
start_pos
[
0
],
column
)
)
def
__repr__
(
self
):
return
'%s(%s, %s, %s)'
%
(
self
.
__class__
.
__name__
,
self
.
type
,
repr
(
self
.
value
),
self
.
start_pos
)
_comment
=
r'#[^\n\r\f]*'
_backslash
=
r'\\\r?\n'
_newline
=
r'\r?\n'
_form_feed
=
r'\f'
_only_spacing
=
'$'
_spacing
=
r'[ \t]*'
_bom
=
unicode_bom
_regex
=
group
(
_comment
,
_backslash
,
_newline
,
_form_feed
,
_only_spacing
,
_bom
,
capture
=
True
)
_regex
=
re
.
compile
(
group
(
_spacing
,
capture
=
True
)
+
_regex
)
_types
=
{
'#'
:
'comment'
,
'
\\
'
:
'backslash'
,
'
\f
'
:
'formfeed'
,
'
\n
'
:
'newline'
,
'
\r
'
:
'newline'
,
unicode_bom
:
'bom'
}
def
split_prefix
(
leaf
,
start_pos
):
line
,
column
=
start_pos
start
=
0
value
=
spacing
=
''
bom
=
False
while
start
!=
len
(
leaf
.
prefix
):
match
=
_regex
.
match
(
leaf
.
prefix
,
start
)
spacing
=
match
.
group
(
1
)
value
=
match
.
group
(
2
)
if
not
value
:
break
type_
=
_types
[
value
[
0
]]
yield
PrefixPart
(
leaf
,
type_
,
value
,
spacing
,
start_pos
=
(
line
,
column
+
start
-
int
(
bom
)
+
len
(
spacing
))
)
if
type_
==
'bom'
:
bom
=
True
start
=
match
.
end
(
0
)
if
value
.
endswith
(
'
\n
'
):
line
+=
1
column
=
-
start
if
value
:
spacing
=
''
yield
PrefixPart
(
leaf
,
'spacing'
,
spacing
,
start_pos
=
(
line
,
column
+
start
)
)
Back
|
FazBrowse Home
|
New Git URL