maxy-gen 0.3.0 → 0.3.1
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.
- 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
|
-

|
5
|
+

|
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
|