pygments.rb 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -0
- data/lexers +0 -0
- data/lib/pygments/version.rb +1 -1
- data/test/test_pygments.rb +1 -1
- data/vendor/custom_lexers/github.py +15 -9
- data/vendor/pygments-main/AUTHORS +12 -2
- data/vendor/pygments-main/CHANGES +52 -2
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +67 -44
- data/vendor/pygments-main/pygmentize +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +2 -2
- data/vendor/pygments-main/pygments/formatter.py +3 -0
- data/vendor/pygments-main/pygments/lexers/__init__.py +11 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +2880 -3124
- data/vendor/pygments-main/pygments/lexers/_mapping.py +30 -20
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +206 -20
- data/vendor/pygments-main/pygments/lexers/agile.py +378 -5
- data/vendor/pygments-main/pygments/lexers/asm.py +2 -2
- data/vendor/pygments-main/pygments/lexers/compiled.py +235 -8
- data/vendor/pygments-main/pygments/lexers/dotnet.py +88 -47
- data/vendor/pygments-main/pygments/lexers/functional.py +195 -62
- data/vendor/pygments-main/pygments/lexers/github.py +15 -9
- data/vendor/pygments-main/pygments/lexers/jvm.py +14 -11
- data/vendor/pygments-main/pygments/lexers/math.py +284 -18
- data/vendor/pygments-main/pygments/lexers/other.py +132 -21
- data/vendor/pygments-main/pygments/lexers/shell.py +29 -15
- data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +8 -8
- data/vendor/pygments-main/pygments/lexers/text.py +59 -9
- data/vendor/pygments-main/pygments/lexers/web.py +832 -210
- data/vendor/pygments-main/pygments/modeline.py +40 -0
- data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
- data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
- data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +29 -10
- data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
- data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +86 -75
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +40 -30
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
- data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
- data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
- data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
- data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
- data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
- data/vendor/pygments-main/tests/test_basic_api.py +3 -3
- data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
- metadata +21 -2
data/README.md
CHANGED
data/lexers
CHANGED
Binary file
|
data/lib/pygments/version.rb
CHANGED
data/test/test_pygments.rb
CHANGED
@@ -32,7 +32,7 @@ class PygmentsHighlightTest < Test::Unit::TestCase
|
|
32
32
|
def test_highlight_works_with_larger_files
|
33
33
|
code = P.highlight(REDIS_CODE)
|
34
34
|
assert_match 'used_memory_peak_human', code
|
35
|
-
assert_equal
|
35
|
+
assert_equal 455203, code.bytesize.to_i
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_returns_nil_on_timeout
|
@@ -408,7 +408,7 @@ class SlashLanguageLexer(ExtendedRegexLexer):
|
|
408
408
|
def right_angle_bracket(lexer, match, ctx):
|
409
409
|
if len(ctx.stack) > 1 and ctx.stack[-2] == "string":
|
410
410
|
ctx.stack.pop()
|
411
|
-
yield match.start(),
|
411
|
+
yield match.start(), String.Interpol, u"}"
|
412
412
|
ctx.pos = match.end()
|
413
413
|
pass
|
414
414
|
|
@@ -423,7 +423,7 @@ class SlashLanguageLexer(ExtendedRegexLexer):
|
|
423
423
|
"string": [
|
424
424
|
(r"\\", String.Escape, move_state("string_e")),
|
425
425
|
(r"\"", String, move_state("slash")),
|
426
|
-
(r"#\{",
|
426
|
+
(r"#\{", String.Interpol, "slash"),
|
427
427
|
(r'.|\n', String),
|
428
428
|
],
|
429
429
|
"string_e": [
|
@@ -459,8 +459,14 @@ class SlashLanguageLexer(ExtendedRegexLexer):
|
|
459
459
|
(r'true'+_nkw, Name.Builtin),
|
460
460
|
(r'false'+_nkw, Name.Builtin),
|
461
461
|
(r'self'+_nkw, Name.Builtin),
|
462
|
+
(r'(class)(\s+)([A-Z][a-zA-Z0-9_\']*)',
|
463
|
+
bygroups(Keyword, Whitespace, Name.Class)),
|
462
464
|
(r'class'+_nkw, Keyword),
|
463
465
|
(r'extends'+_nkw, Keyword),
|
466
|
+
(r'(def)(\s+)(self)(\s*)(\.)(\s*)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
|
467
|
+
bygroups(Keyword, Whitespace, Name.Builtin, Whitespace, Punctuation, Whitespace, Name.Function)),
|
468
|
+
(r'(def)(\s+)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
|
469
|
+
bygroups(Keyword, Whitespace, Name.Function)),
|
464
470
|
(r'def'+_nkw, Keyword),
|
465
471
|
(r'if'+_nkw, Keyword),
|
466
472
|
(r'elsif'+_nkw, Keyword),
|
@@ -482,14 +488,14 @@ class SlashLanguageLexer(ExtendedRegexLexer):
|
|
482
488
|
(r'throw'+_nkw, Keyword),
|
483
489
|
(r'use'+_nkw, Keyword),
|
484
490
|
(r'switch'+_nkw, Keyword),
|
485
|
-
(r'\\'
|
486
|
-
(r'λ'
|
491
|
+
(r'\\', Keyword),
|
492
|
+
(r'λ', Keyword),
|
487
493
|
(r'__FILE__'+_nkw, Name.Builtin.Pseudo),
|
488
494
|
(r'__LINE__'+_nkw, Name.Builtin.Pseudo),
|
489
|
-
(r'[A-Z][a-zA-Z0-9_]*'+_nkw, Name.Constant),
|
490
|
-
(r'[a-z_][a-zA-Z0-9_]*'+_nkw, Name
|
491
|
-
(r'@[a-z_][a-zA-Z0-9_]*'+_nkw, Name.Variable.Instance),
|
492
|
-
(r'@@[a-z_][a-zA-Z0-9_]*'+_nkw, Name.Variable.Class),
|
495
|
+
(r'[A-Z][a-zA-Z0-9_\']*'+_nkw, Name.Constant),
|
496
|
+
(r'[a-z_][a-zA-Z0-9_\']*'+_nkw, Name),
|
497
|
+
(r'@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Instance),
|
498
|
+
(r'@@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Class),
|
493
499
|
(r'\(', Punctuation),
|
494
500
|
(r'\)', Punctuation),
|
495
501
|
(r'\[', Punctuation),
|
@@ -540,7 +546,7 @@ class SlashLanguageLexer(ExtendedRegexLexer):
|
|
540
546
|
(r'::', Operator),
|
541
547
|
(r':', Operator),
|
542
548
|
(r'(\s|\n)+', Whitespace),
|
543
|
-
(r'[a-z_][a-zA-Z0-9_]*',
|
549
|
+
(r'[a-z_][a-zA-Z0-9_\']*', Name.Variable),
|
544
550
|
],
|
545
551
|
}
|
546
552
|
|
@@ -6,8 +6,9 @@ Major developers are Tim Hatch <tim@timhatch.com> and Armin Ronacher
|
|
6
6
|
Other contributors, listed alphabetically, are:
|
7
7
|
|
8
8
|
* Sam Aaron -- Ioke lexer
|
9
|
-
* Kumar Appaiah -- Debian control lexer
|
10
9
|
* Ali Afshar -- image formatter
|
10
|
+
* Thomas Aglassinger -- Rexx lexer
|
11
|
+
* Kumar Appaiah -- Debian control lexer
|
11
12
|
* Andreas Amann -- AppleScript lexer
|
12
13
|
* Timothy Armstrong -- Dart lexer fixes
|
13
14
|
* Jeffrey Arnold -- R/S, Rd, BUGS, Jags, and Stan lexers
|
@@ -15,6 +16,7 @@ Other contributors, listed alphabetically, are:
|
|
15
16
|
* Stefan Matthias Aust -- Smalltalk lexer
|
16
17
|
* Ben Bangert -- Mako lexers
|
17
18
|
* Max Battcher -- Darcs patch lexer
|
19
|
+
* Tim Baumann -- (Literate) Agda lexer
|
18
20
|
* Paul Baumgart, 280 North, Inc. -- Objective-J lexer
|
19
21
|
* Michael Bayer -- Myghty lexers
|
20
22
|
* John Benediktsson -- Factor lexer
|
@@ -29,20 +31,25 @@ Other contributors, listed alphabetically, are:
|
|
29
31
|
* Christian Jann -- ShellSession lexer
|
30
32
|
* Christopher Creutzig -- MuPAD lexer
|
31
33
|
* Pete Curry -- bugfixes
|
32
|
-
*
|
34
|
+
* Bryan Davis -- EBNF lexer
|
35
|
+
* Owen Durni -- Haxe lexer
|
33
36
|
* Nick Efford -- Python 3 lexer
|
34
37
|
* Sven Efftinge -- Xtend lexer
|
35
38
|
* Artem Egorkine -- terminal256 formatter
|
36
39
|
* James H. Fisher -- PostScript lexer
|
40
|
+
* William S. Fulton -- SWIG lexer
|
37
41
|
* Carlos Galdino -- Elixir and Elixir Console lexers
|
38
42
|
* Michael Galloy -- IDL lexer
|
39
43
|
* Naveen Garg -- Autohotkey lexer
|
40
44
|
* Laurent Gautier -- R/S lexer
|
41
45
|
* Alex Gaynor -- PyPy log lexer
|
46
|
+
* Richard Gerkin -- Igor Pro lexer
|
42
47
|
* Alain Gilbert -- TypeScript lexer
|
48
|
+
* Alex Gilding -- BlitzBasic lexer
|
43
49
|
* Bertrand Goetzmann -- Groovy lexer
|
44
50
|
* Krzysiek Goj -- Scala lexer
|
45
51
|
* Matt Good -- Genshi, Cheetah lexers
|
52
|
+
* Michał Górny -- vim modeline support
|
46
53
|
* Patrick Gotthardt -- PHP namespaces support
|
47
54
|
* Olivier Guibe -- Asymptote lexer
|
48
55
|
* Jordi Gutiérrez Hermoso -- Octave lexer
|
@@ -53,6 +60,7 @@ Other contributors, listed alphabetically, are:
|
|
53
60
|
* Greg Hendershott -- Racket lexer
|
54
61
|
* David Hess, Fish Software, Inc. -- Objective-J lexer
|
55
62
|
* Varun Hiremath -- Debian control lexer
|
63
|
+
* Rob Hoelz -- Perl 6 lexer
|
56
64
|
* Doug Hogan -- Mscgen lexer
|
57
65
|
* Ben Hollis -- Mason lexer
|
58
66
|
* Dustin Howett -- Logos lexer
|
@@ -64,6 +72,7 @@ Other contributors, listed alphabetically, are:
|
|
64
72
|
* Igor Kalnitsky -- vhdl lexer
|
65
73
|
* Pekka Klärck -- Robot Framework lexer
|
66
74
|
* Eric Knibbe -- Lasso lexer
|
75
|
+
* Stepan Koltsov -- Clay lexer
|
67
76
|
* Adam Koprowski -- Opa lexer
|
68
77
|
* Benjamin Kowarsch -- Modula-2 lexer
|
69
78
|
* Alexander Kriegisch -- Kconfig and AspectJ lexers
|
@@ -97,6 +106,7 @@ Other contributors, listed alphabetically, are:
|
|
97
106
|
* Mike Nolta -- Julia lexer
|
98
107
|
* Jonas Obrist -- BBCode lexer
|
99
108
|
* David Oliva -- Rebol lexer
|
109
|
+
* Pat Pannuto -- nesC lexer
|
100
110
|
* Jon Parise -- Protocol buffers lexer
|
101
111
|
* Ronny Pfannschmidt -- BBCode lexer
|
102
112
|
* Benjamin Peterson -- Test suite refactoring
|
@@ -6,6 +6,56 @@ Issue numbers refer to the tracker at
|
|
6
6
|
pull request numbers to the requests at
|
7
7
|
<http://bitbucket.org/birkenfeld/pygments-main/pull-requests/merged>.
|
8
8
|
|
9
|
+
Version 1.7
|
10
|
+
-----------
|
11
|
+
(under development)
|
12
|
+
|
13
|
+
- Lexers added:
|
14
|
+
|
15
|
+
* Clay (PR#184)
|
16
|
+
* Perl 6 (PR#181)
|
17
|
+
* Swig (PR#168)
|
18
|
+
* nesC (PR#166)
|
19
|
+
* BlitzBasic (PR#197)
|
20
|
+
* EBNF (PR#193)
|
21
|
+
* Igor Pro (PR#172)
|
22
|
+
* Rexx (PR#199)
|
23
|
+
* Agda and Literate Agda (PR#203)
|
24
|
+
|
25
|
+
- Pygments will now recognize "vim" modelines when guessing the lexer for
|
26
|
+
a file based on content (PR#118).
|
27
|
+
|
28
|
+
- The NameHighlightFilter now works with any Name.* token type (#790).
|
29
|
+
|
30
|
+
- Python 3 lexer: add new exceptions from PEP 3151.
|
31
|
+
|
32
|
+
- Opa lexer: add new keywords (PR#170).
|
33
|
+
|
34
|
+
- Julia lexer: add keywords and underscore-separated number
|
35
|
+
literals (PR#176).
|
36
|
+
|
37
|
+
- Lasso lexer: fix method highlighting, update builtins. Fix
|
38
|
+
guessing so that plain XML isn't always taken as Lasso (PR#163).
|
39
|
+
|
40
|
+
- Objective C/C++ lexers: allow "@" prefixing any expression (#871).
|
41
|
+
|
42
|
+
- Ruby lexer: fix lexing of Name::Space tokens (#860).
|
43
|
+
|
44
|
+
- Stan lexer: update for version 1.3.0 of the language (PR#162).
|
45
|
+
|
46
|
+
- JavaScript lexer: add the "yield" keyword (PR#196).
|
47
|
+
|
48
|
+
- HTTP lexer: support for PATCH method (PR#190).
|
49
|
+
|
50
|
+
- Koka lexer: update to newest language spec (PR#201).
|
51
|
+
|
52
|
+
- Haxe lexer: rewrite and support for Haxe 3 (PR#174).
|
53
|
+
|
54
|
+
- Prolog lexer: add different kinds of numeric literals (#864).
|
55
|
+
|
56
|
+
- F# lexer: rewrite with newest spec for F# 3.0 (#842).
|
57
|
+
|
58
|
+
|
9
59
|
Version 1.6
|
10
60
|
-----------
|
11
61
|
(released Feb 3, 2013)
|
@@ -259,7 +309,7 @@ Version 1.3
|
|
259
309
|
* Ada
|
260
310
|
* Coldfusion
|
261
311
|
* Modula-2
|
262
|
-
*
|
312
|
+
* Haxe
|
263
313
|
* R console
|
264
314
|
* Objective-J
|
265
315
|
* Haml and Sass
|
@@ -318,7 +368,7 @@ Version 1.2
|
|
318
368
|
* CMake
|
319
369
|
* Ooc
|
320
370
|
* Coldfusion
|
321
|
-
*
|
371
|
+
* Haxe
|
322
372
|
* R console
|
323
373
|
|
324
374
|
- Added options for rendering LaTeX in source code comments in the
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
7304e4759ae6
|
@@ -83,6 +83,58 @@ If no rule matches at the current position, the current char is emitted as an
|
|
83
83
|
1.
|
84
84
|
|
85
85
|
|
86
|
+
Adding and testing a new lexer
|
87
|
+
==============================
|
88
|
+
|
89
|
+
To make pygments aware of your new lexer, you have to perform the following
|
90
|
+
steps:
|
91
|
+
|
92
|
+
First, change to the current directory containing the pygments source code:
|
93
|
+
|
94
|
+
.. sourcecode:: console
|
95
|
+
|
96
|
+
$ cd .../pygments-main
|
97
|
+
|
98
|
+
Next, make sure the lexer is known from outside of the module. All modules in
|
99
|
+
the ``pygments.lexers`` specify ``__all__``. For example, ``other.py`` sets:
|
100
|
+
|
101
|
+
.. sourcecode:: python
|
102
|
+
|
103
|
+
__all__ = ['BrainfuckLexer', 'BefungeLexer', ...]
|
104
|
+
|
105
|
+
Simply add the name of your lexer class to this list.
|
106
|
+
|
107
|
+
Finally the lexer can be made publically known by rebuilding the lexer
|
108
|
+
mapping:
|
109
|
+
|
110
|
+
.. sourcecode:: console
|
111
|
+
|
112
|
+
$ make mapfiles
|
113
|
+
|
114
|
+
To test the new lexer, store an example file with the proper extension in
|
115
|
+
``tests/examplefiles``. For example, to test your ``DiffLexer``, add a
|
116
|
+
``tests/examplefiles/example.diff`` containing a sample diff output.
|
117
|
+
|
118
|
+
Now you can use pygmentize to render your example to HTML:
|
119
|
+
|
120
|
+
.. sourcecode:: console
|
121
|
+
|
122
|
+
$ ./pygmentize -O full -f html -o /tmp/example.html tests/examplefiles/example.diff
|
123
|
+
|
124
|
+
Note that this explicitely calls the ``pygmentize`` in the current directory
|
125
|
+
by preceding it with ``./``. This ensures your modifications are used.
|
126
|
+
Otherwise a possibly already installed, unmodified version without your new
|
127
|
+
lexer would have been called from the system search path (``$PATH``).
|
128
|
+
|
129
|
+
To view the result, open ``/tmp/example.html`` in your browser.
|
130
|
+
|
131
|
+
Once the example renders as expected, you should run the complete test suite:
|
132
|
+
|
133
|
+
.. sourcecode:: console
|
134
|
+
|
135
|
+
$ make test
|
136
|
+
|
137
|
+
|
86
138
|
Regex Flags
|
87
139
|
===========
|
88
140
|
|
@@ -5,13 +5,19 @@
|
|
5
5
|
|
6
6
|
This is the shell script that was used to extract Lasso 9's built-in keywords
|
7
7
|
and generate most of the _lassobuiltins.py file. When run, it creates a file
|
8
|
-
named "lassobuiltins-9.py" containing the types, traits,
|
9
|
-
currently-installed version of Lasso 9.
|
8
|
+
named "lassobuiltins-9.py" containing the types, traits, methods, and members
|
9
|
+
of the currently-installed version of Lasso 9.
|
10
10
|
|
11
|
-
A
|
11
|
+
A list of tags in Lasso 8 can be generated with this code:
|
12
12
|
|
13
13
|
<?LassoScript
|
14
|
-
local('l8tags' = list
|
14
|
+
local('l8tags' = list,
|
15
|
+
'l8libs' = array('Cache','ChartFX','Client','Database','File','HTTP',
|
16
|
+
'iCal','Lasso','Link','List','PDF','Response','Stock','String',
|
17
|
+
'Thread','Valid','WAP','XML'));
|
18
|
+
iterate(#l8libs, local('library'));
|
19
|
+
local('result' = namespace_load(#library));
|
20
|
+
/iterate;
|
15
21
|
iterate(tags_list, local('i'));
|
16
22
|
#l8tags->insert(string_removeleading(#i, -pattern='_global_'));
|
17
23
|
/iterate;
|
@@ -30,9 +36,12 @@ local(f) = file("lassobuiltins-9.py")
|
|
30
36
|
#f->writeString('# -*- coding: utf-8 -*-
|
31
37
|
"""
|
32
38
|
pygments.lexers._lassobuiltins
|
33
|
-
|
39
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
40
|
+
|
41
|
+
Built-in Lasso types, traits, methods, and members.
|
34
42
|
|
35
|
-
|
43
|
+
:copyright: Copyright 2006-'+date->year+' by the Pygments team, see AUTHORS.
|
44
|
+
:license: BSD, see LICENSE for details.
|
36
45
|
"""
|
37
46
|
|
38
47
|
')
|
@@ -42,16 +51,16 @@ lcapi_loadModules
|
|
42
51
|
// Load all of the libraries from builtins and lassoserver
|
43
52
|
// This forces all possible available types and methods to be registered
|
44
53
|
local(srcs =
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
54
|
+
tie(
|
55
|
+
dir(sys_masterHomePath + 'LassoLibraries/builtins/')->eachFilePath,
|
56
|
+
dir(sys_masterHomePath + 'LassoLibraries/lassoserver/')->eachFilePath
|
57
|
+
)
|
49
58
|
)
|
50
59
|
|
51
60
|
with topLevelDir in #srcs
|
52
|
-
where
|
61
|
+
where not #topLevelDir->lastComponent->beginsWith('.')
|
53
62
|
do protect => {
|
54
|
-
|
63
|
+
handle_error => {
|
55
64
|
stdoutnl('Unable to load: ' + #topLevelDir + ' ' + error_msg)
|
56
65
|
}
|
57
66
|
library_thread_loader->loadLibrary(#topLevelDir)
|
@@ -61,60 +70,74 @@ do protect => {
|
|
61
70
|
local(
|
62
71
|
typesList = list(),
|
63
72
|
traitsList = list(),
|
64
|
-
|
73
|
+
unboundMethodsList = list(),
|
74
|
+
memberMethodsList = list()
|
65
75
|
)
|
66
76
|
|
67
|
-
//
|
68
|
-
with
|
69
|
-
where
|
70
|
-
|
71
|
-
|
72
|
-
|
77
|
+
// types
|
78
|
+
with type in sys_listTypes
|
79
|
+
where #typesList !>> #type
|
80
|
+
do {
|
81
|
+
#typesList->insert(#type)
|
82
|
+
with method in #type->getType->listMethods
|
83
|
+
let name = #method->methodName
|
84
|
+
where not #name->asString->endsWith('=') // skip setter methods
|
85
|
+
where #name->asString->isAlpha(1) // skip unpublished methods
|
86
|
+
where #memberMethodsList !>> #name
|
87
|
+
do #memberMethodsList->insert(#name)
|
88
|
+
}
|
73
89
|
|
74
90
|
// traits
|
75
91
|
with trait in sys_listTraits
|
76
|
-
where
|
77
|
-
where #traitsList !>> #trait
|
92
|
+
where not #trait->asString->beginsWith('$') // skip combined traits
|
93
|
+
where #traitsList !>> #trait
|
78
94
|
do {
|
79
|
-
#traitsList->insert(#trait
|
80
|
-
with
|
81
|
-
|
82
|
-
where #
|
83
|
-
where #
|
84
|
-
|
95
|
+
#traitsList->insert(#trait)
|
96
|
+
with method in tie(#trait->getType->provides, #trait->getType->requires)
|
97
|
+
let name = #method->methodName
|
98
|
+
where not #name->asString->endsWith('=') // skip setter methods
|
99
|
+
where #name->asString->isAlpha(1) // skip unpublished methods
|
100
|
+
where #memberMethodsList !>> #name
|
101
|
+
do #memberMethodsList->insert(#name)
|
85
102
|
}
|
86
103
|
|
87
|
-
//
|
88
|
-
with
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
do #methodsList->insert(#tmethod->methodName->asString)
|
97
|
-
}
|
104
|
+
// unbound methods
|
105
|
+
with method in sys_listUnboundMethods
|
106
|
+
let name = #method->methodName
|
107
|
+
where not #name->asString->endsWith('=') // skip setter methods
|
108
|
+
where #name->asString->isAlpha(1) // skip unpublished methods
|
109
|
+
where #typesList !>> #name
|
110
|
+
where #traitsList !>> #name
|
111
|
+
where #unboundMethodsList !>> #name
|
112
|
+
do #unboundMethodsList->insert(#name)
|
98
113
|
|
99
114
|
#f->writeString("BUILTINS = {
|
100
115
|
'Types': [
|
101
116
|
")
|
102
117
|
with t in #typesList
|
103
|
-
do #f->writeString(" '"+string_lowercase(#t)+"',\n")
|
118
|
+
do !#t->asString->endsWith('$') ? #f->writeString(" '"+string_lowercase(#t->asString)+"',\n")
|
104
119
|
|
105
120
|
#f->writeString(" ],
|
106
121
|
'Traits': [
|
107
122
|
")
|
108
123
|
with t in #traitsList
|
109
|
-
do #f->writeString(" '"+string_lowercase(#t)+"',\n")
|
124
|
+
do #f->writeString(" '"+string_lowercase(#t->asString)+"',\n")
|
110
125
|
|
111
126
|
#f->writeString(" ],
|
112
|
-
'Methods': [
|
127
|
+
'Unbound Methods': [
|
113
128
|
")
|
114
|
-
with t in #
|
115
|
-
do #f->writeString(" '"+string_lowercase(#t)+"',\n")
|
129
|
+
with t in #unboundMethodsList
|
130
|
+
do #f->writeString(" '"+string_lowercase(#t->asString)+"',\n")
|
116
131
|
|
117
|
-
#f->writeString(" ]
|
132
|
+
#f->writeString(" ]
|
133
|
+
}
|
134
|
+
MEMBERS = {
|
135
|
+
'Member Methods': [
|
136
|
+
")
|
137
|
+
with t in #memberMethodsList
|
138
|
+
do #f->writeString(" '"+string_lowercase(#t->asString)+"',\n")
|
139
|
+
|
140
|
+
#f->writeString(" ]
|
118
141
|
}
|
119
142
|
")
|
120
143
|
|