maxy-gen 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +5 -3
- data/lib/maxy/gen/generator.rb +16 -9
- data/lib/maxy/gen/parser.rb +14 -1
- data/lib/maxy/gen/tokenizer.rb +3 -2
- data/lib/maxy/gen/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2df80188bc19f248b46a0ad7662c2420c71947d3bf33c145a799b175ecbf4da1
|
4
|
+
data.tar.gz: 6dbc80719b431ba5e282328d4c51a6c2e97e53ff9d094ae67286d2c3dd08ebed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f145c3e6f1bb9f842cbb325a992aea9d0fde4bbf4eba243e6fadb004b6e5d83f10b60fadc7f2843cb0226e57fded36fdadeb29de1085d92b856df6fdf8ca6f0b
|
7
|
+
data.tar.gz: 20be68f4c03f1f008f03f41da605a56d4ed2385403f9c295355948976d33f78d7d5e6dc5f0eac384563ad17d1149a1177ce482aa679650418d7cf0a9093898f9
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
A commandline tool to generate max patches in an emmet-like fashion
|
4
4
|
|
5
|
-
![](https://s3.eu-central-1.amazonaws.com/maxy-gen/maxygen-demo.gif)
|
5
|
+
![](https://s3.eu-central-1.amazonaws.com/maxy-gen/maxygen-demo-v0.3.0.gif)
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -28,7 +28,7 @@ Note: This is totally untested on Windows!
|
|
28
28
|
|
29
29
|
Use an [emmet](https://emmet.io/)-like pattern to generate a max patch, e.g.
|
30
30
|
|
31
|
-
$ maxy-gen generate '
|
31
|
+
$ maxy-gen generate 'inlet-(\-{3.14}-print)+(trigger{b}-(outlet+print))' > complex_grouping.maxpat
|
32
32
|
|
33
33
|
(or shorter, `maxy-gen g ...`)
|
34
34
|
|
@@ -38,6 +38,8 @@ As of now you can use
|
|
38
38
|
|
39
39
|
- `-` dashes to indicate patch chords
|
40
40
|
- `{}` curly braces to denote arguments passed to objects
|
41
|
+
- `+` to denote sibling objects
|
42
|
+
- `(...)` to group objects together (see demo above)
|
41
43
|
|
42
44
|
A couple of objects need escaping (with `\`), because some characters are taken, obviously. These are:
|
43
45
|
|
@@ -67,4 +69,4 @@ Please include:
|
|
67
69
|
## Support
|
68
70
|
This is a pure side project and depends on your support!
|
69
71
|
|
70
|
-
If you'd like to support the development of `maxy-gen` and my other projects, take a look at [https://www.patreon.com/znibbles](https://www.patreon.com/znibbles)
|
72
|
+
If you'd like to support the development of `maxy-gen` and my other projects, take a look at [https://www.patreon.com/znibbles](https://www.patreon.com/znibbles)
|
data/lib/maxy/gen/generator.rb
CHANGED
@@ -35,10 +35,14 @@ module Maxy
|
|
35
35
|
@patch['patcher']['boxes'] << make_box(node, id)
|
36
36
|
@object_count += 1
|
37
37
|
|
38
|
-
node.child_nodes.
|
38
|
+
node.child_nodes.each_with_index do |child_node, index|
|
39
39
|
child_id = "obj_#{@object_count}"
|
40
40
|
generate_node(child_node, child_id)
|
41
|
-
|
41
|
+
if node.flags.include? :connect_children_individually
|
42
|
+
@patch['patcher']['lines'] << make_line(id, child_id, index, 0)
|
43
|
+
else
|
44
|
+
@patch['patcher']['lines'] << make_line(id, child_id)
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
@@ -46,15 +50,19 @@ module Maxy
|
|
46
50
|
box = @library[:objects][node.name].dup
|
47
51
|
box['id'] = id
|
48
52
|
box['patching_rect'] = [OFFSET_X + (node.x_rank - 1) * STEP_X, OFFSET_Y + (node.y_rank - 1) * STEP_Y, box['width'] || WIDTH, box['height'] || HEIGHT]
|
49
|
-
unless box['text'].nil?
|
50
|
-
box['text'] += " #{node.args}"
|
51
|
-
end
|
53
|
+
box['text'] += " #{node.args}" unless box['text'].nil?
|
52
54
|
|
53
55
|
box
|
54
56
|
end
|
55
57
|
|
56
|
-
def make_line(parent_id, child_id)
|
57
|
-
{
|
58
|
+
def make_line(parent_id, child_id, parent_outlet = 0, child_inlet = 0)
|
59
|
+
{
|
60
|
+
patchline:
|
61
|
+
{
|
62
|
+
destination: [child_id, child_inlet],
|
63
|
+
source: [parent_id, parent_outlet]
|
64
|
+
}
|
65
|
+
}
|
58
66
|
end
|
59
67
|
|
60
68
|
def align_tree(node, x_rank = 1, y_rank = 1)
|
@@ -71,6 +79,5 @@ module Maxy
|
|
71
79
|
node
|
72
80
|
end
|
73
81
|
end
|
74
|
-
|
75
82
|
end
|
76
|
-
end
|
83
|
+
end
|
data/lib/maxy/gen/parser.rb
CHANGED
@@ -18,6 +18,7 @@ module Maxy
|
|
18
18
|
else
|
19
19
|
parse_begin_group parent_node
|
20
20
|
child_node = parse_identifier parent_node
|
21
|
+
parse_equals child_node
|
21
22
|
parse_dash child_node
|
22
23
|
end
|
23
24
|
|
@@ -92,9 +93,21 @@ module Maxy
|
|
92
93
|
parse(obj_node)
|
93
94
|
end
|
94
95
|
end
|
96
|
+
|
97
|
+
def parse_equals(obj_node)
|
98
|
+
if peek(:equals)
|
99
|
+
consume(:equals)
|
100
|
+
obj_node.flags << :connect_children_individually
|
101
|
+
parse(obj_node)
|
102
|
+
end
|
103
|
+
end
|
95
104
|
end
|
96
105
|
|
97
|
-
ObjectNode = Struct.new(:name, :args, :child_nodes, :x_rank, :y_rank)
|
106
|
+
ObjectNode = Struct.new(:name, :args, :child_nodes, :x_rank, :y_rank, :flags) do
|
107
|
+
def initialize(name, args, child_nodes, x_rank=0, y_rank=0, flags=[])
|
108
|
+
super
|
109
|
+
end
|
110
|
+
end
|
98
111
|
RootNode = Struct.new(:child_nodes)
|
99
112
|
|
100
113
|
end
|
data/lib/maxy/gen/tokenizer.rb
CHANGED
@@ -3,11 +3,12 @@ module Maxy
|
|
3
3
|
class Tokenizer
|
4
4
|
TOKEN_TYPES = [
|
5
5
|
[:arguments, /({[^{}]*})/],
|
6
|
-
[:escaped_identifier, /(\\[\S][
|
7
|
-
[:identifier, /([
|
6
|
+
[:escaped_identifier, /(\\[\S][^-+={}()\\]*)(?=[-+=*{}])?/],
|
7
|
+
[:identifier, /([^-+={}()\\]+)(?=[-+=*{}])?/],
|
8
8
|
[:oparen, /(\()/],
|
9
9
|
[:cparen, /(\))/],
|
10
10
|
[:plus, /(\+)/],
|
11
|
+
[:equals, /(=)/],
|
11
12
|
[:dash, /(-)/]
|
12
13
|
]
|
13
14
|
|
data/lib/maxy/gen/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maxy-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Rubisch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|