Skip to content

Commit 9a53fbe

Browse files
committed
Separate each class generated with gen_bindings.py
1 parent 6824f9d commit 9a53fbe

File tree

10 files changed

+460
-386
lines changed

10 files changed

+460
-386
lines changed

analysis_options.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ include: package:pedantic/analysis_options.yaml
66
analyzer:
77
exclude:
88
- gen_bindings/dart_nvim_api.dart
9+
gen_bindings/src/buffer.dart
10+
gen_bindings/src/tabpage.dart
11+
gen_bindings/src/window.dart

gen_bindings/dart_nvim_api.dart

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,22 @@
1-
// Generated {{ date }} by `gen_bindings.py`.
1+
// Generated 2019-10-23 12:28:11.546414 by `gen_bindings.py`.
22
// DO NOT MODIFY DIRECTLY!
33

44
import 'dart:async';
55

66
import 'package:meta/meta.dart';
77

8+
import 'src/tabpage.dart';
9+
import 'src/window.dart';
10+
import 'src/buffer.dart';
811
import 'src/session.dart';
912
import 'src/ui_attach_options.dart';
1013

14+
export 'src/tabpage.dart';
15+
export 'src/window.dart';
16+
export 'src/buffer.dart';
1117
export 'src/session.dart';
1218
export 'src/ui_attach_options.dart';
1319

14-
{% for etype in exttypes %}
15-
class {{ etype.name }} {
16-
dynamic _codeData;
17-
/// Internal value that represents the type.
18-
get codeData => _codeData;
19-
{{ etype.name }}(this._codeData);
20-
21-
{% for f in functions if f.ext and f.name.startswith(etype.prefix) %}
22-
{% set trimmedFname = f.name | replace('nvim_', '') %}
23-
/// since: {{ f.since }}
24-
Future<{{ f.return_type.native_type_ret }}> {{ to_camel_case(trimmedFname) }}(Neovim neovim, {{ f.argstring }}) {
25-
{% set trimmedFname = f.name | replace('nvim_', '') %}
26-
return neovim.session.call("{{f.name}}",
27-
args: [_codeData
28-
{% if f.parameters|count > 0 %}
29-
, {{ f.parameters|map(attribute = "name")|join(", ") }}
30-
{% endif %}
31-
]);
32-
}
33-
{% endfor %}
34-
}
35-
36-
{% endfor %}
37-
3820
/// Represents an instance of Neovim which can be communicated with via
3921
/// methods.
4022
class Neovim {

gen_bindings/gen_bindings.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ def get_api_info(nvim):
6666
return decutf8(msgpack.unpackb(info))
6767

6868

69-
def generate_file(name, outpath, **kw):
69+
def generate_file(name, outpath, location, **kw):
7070
from jinja2 import Environment, FileSystemLoader
7171
env = Environment(loader=FileSystemLoader(
72-
INPUT), trim_blocks=True)
72+
location), trim_blocks=True)
7373
template = env.get_template(name)
7474
with open(os.path.join(outpath, name), 'w') as fp:
7575
fp.write(template.render(kw))
@@ -241,14 +241,16 @@ def print_api(api):
241241

242242
if __name__ == '__main__':
243243

244-
if len(sys.argv) < 2 or len(sys.argv) > 3:
244+
if len(sys.argv) < 2 or len(sys.argv) > 4:
245245
print('Usage:')
246246
print('\tgenerate_bindings <nvim>')
247247
print('\tgenerate_bindings <nvim> [path]')
248+
print('\tgenerate_bindings <nvim> [path] [bindings_dir]')
248249
sys.exit(-1)
249250

250251
nvim = sys.argv[1]
251252
outpath = None if len(sys.argv) < 3 else sys.argv[2]
253+
directory = INPUT if len(sys.argv) < 4 else sys.argv[3]
252254

253255
try:
254256
api = get_api_info(sys.argv[1])
@@ -260,7 +262,7 @@ def print_api(api):
260262
print('Writing auto generated bindings to %s' % outpath)
261263
if not os.path.exists(outpath):
262264
os.makedirs(outpath)
263-
for name in os.listdir(INPUT):
265+
for name in os.listdir(directory):
264266
if name.startswith('.'):
265267
continue
266268
if name.endswith('.dart'):
@@ -276,7 +278,7 @@ def print_api(api):
276278
env['exttypes'] = exttypes
277279
env['to_camel_case'] = make_camel_case
278280
env['make_args_from_params'] = make_args_from_params
279-
generate_file(name, outpath, **env)
281+
generate_file(name, outpath, directory, **env)
280282

281283
else:
282284
print('Neovim api info:')

gen_bindings/src/buffer.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:dart_nvim_api/dart_nvim_api.dart';
2+
3+
{% for etype in exttypes %}
4+
{% if etype.name == "Buffer" %}
5+
class {{ etype.name }} {
6+
dynamic _codeData;
7+
/// Internal value that represents the type.
8+
get codeData => _codeData;
9+
{{ etype.name }}(this._codeData);
10+
11+
{% for f in functions if f.ext and f.name.startswith(etype.prefix) %}
12+
{% set trimmedFname = f.name | replace('nvim_', '') %}
13+
/// since: {{ f.since }}
14+
Future<{{ f.return_type.native_type_ret }}> {{ to_camel_case(trimmedFname) }}(Neovim neovim, {{ f.argstring }}) {
15+
{% set trimmedFname = f.name | replace('nvim_', '') %}
16+
return neovim.session.call("{{f.name}}",
17+
args: [_codeData
18+
{% if f.parameters|count > 0 %}
19+
, {{ f.parameters|map(attribute = "name")|join(", ") }}
20+
{% endif %}
21+
]);
22+
}
23+
{% endfor %}
24+
}
25+
{% endif %}
26+
{% endfor %}

gen_bindings/src/tabpage.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:dart_nvim_api/dart_nvim_api.dart';
2+
3+
{% for etype in exttypes %}
4+
{% if etype.name == "Tabpage" %}
5+
class {{ etype.name }} {
6+
dynamic _codeData;
7+
/// Internal value that represents the type.
8+
get codeData => _codeData;
9+
{{ etype.name }}(this._codeData);
10+
11+
{% for f in functions if f.ext and f.name.startswith(etype.prefix) %}
12+
{% set trimmedFname = f.name | replace('nvim_', '') %}
13+
/// since: {{ f.since }}
14+
Future<{{ f.return_type.native_type_ret }}> {{ to_camel_case(trimmedFname) }}(Neovim neovim, {{ f.argstring }}) {
15+
{% set trimmedFname = f.name | replace('nvim_', '') %}
16+
return neovim.session.call("{{f.name}}",
17+
args: [_codeData
18+
{% if f.parameters|count > 0 %}
19+
, {{ f.parameters|map(attribute = "name")|join(", ") }}
20+
{% endif %}
21+
]);
22+
}
23+
{% endfor %}
24+
}
25+
{% endif %}
26+
{% endfor %}

gen_bindings/src/window.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:dart_nvim_api/dart_nvim_api.dart';
2+
3+
{% for etype in exttypes %}
4+
{% if etype.name == "Window" %}
5+
class {{ etype.name }} {
6+
dynamic _codeData;
7+
/// Internal value that represents the type.
8+
get codeData => _codeData;
9+
{{ etype.name }}(this._codeData);
10+
11+
{% for f in functions if f.ext and f.name.startswith(etype.prefix) %}
12+
{% set trimmedFname = f.name | replace('nvim_', '') %}
13+
/// since: {{ f.since }}
14+
Future<{{ f.return_type.native_type_ret }}> {{ to_camel_case(trimmedFname) }}(Neovim neovim, {{ f.argstring }}) {
15+
{% set trimmedFname = f.name | replace('nvim_', '') %}
16+
return neovim.session.call("{{f.name}}",
17+
args: [_codeData
18+
{% if f.parameters|count > 0 %}
19+
, {{ f.parameters|map(attribute = "name")|join(", ") }}
20+
{% endif %}
21+
]);
22+
}
23+
{% endfor %}
24+
}
25+
{% endif %}
26+
{% endfor %}

0 commit comments

Comments
 (0)