oozby 0.4.0 → 0.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 582eb27392751e57f1f1f4b40721f90d1c00b119
4
- data.tar.gz: 475814b52c59cfe2914341010f8fd52c8b1329cc
3
+ metadata.gz: cdb941976cc799e103cace769bb835829c0f6e2a
4
+ data.tar.gz: 02cd7754307c2772d08da24d5daffc0c980f3488
5
5
  SHA512:
6
- metadata.gz: 65b282a8ea18ee15d80c339bb389bcd03220b8afbe85c3e30ca3f538d6c730b58dabd69a10a987eb2142c5ff8fa31d0788247c1507eb935a821441c8a1e86464
7
- data.tar.gz: 56048c0db5681f7e0e6164f3bea334e967bb61651d506b175622a27402fbb34067ea3ea8c66c387f0d5444d722699caf328ff251a3d34243e2f6568178311c7e
6
+ metadata.gz: b91789fe1b0168b93e7414ef24a70b1eabbe1fd1aa6f84131b8a0522a90136d14b8a1c723cfc9927e480a1d058243821f45e76f3e3265ac020b5649de72392c5
7
+ data.tar.gz: fecffe94b5cbdc3a3cdd1dbf704ec25d70f39e0fc740ac54a2dd19df972b7f3df9fa94a8efb35ee7b09c8c5329ed22e13da133d7fdd50444a26179066f97129e
data/bin/oozby CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'thor' # command line utility utility
3
+ gem 'listen', '< 2.0.0'
3
4
  require 'listen' # listen to filesystem for changes in a smart way
4
5
  require 'pp' # pretty printer
5
6
  require 'rbconfig' # to get path to ruby binary, for making subprocesses
@@ -149,6 +149,16 @@ class Oozby::Environment
149
149
  (a[1].to_f * value_proportion) + (b[1].to_f * (1.0 - value_proportion))
150
150
  end
151
151
 
152
+ # utility for rotating around in a full circle and doing stuff
153
+ def turn iterations = nil, &proc
154
+ if iterations
155
+ raise "Iterations must be Numeric" unless iterations.is_a? Numeric
156
+ (0.0...360.0).step(360.0 / iterations, &proc)
157
+ else
158
+ 0.0...360.0 # return a range which can be iterated however
159
+ end
160
+ end
161
+
152
162
  # gets and sets resolution settings
153
163
  def resolution **settings, &proc
154
164
  warn "Setting fragments_per_turn and degrees_per_fragment together makes no sense!" if settings[:fragments_per_turn] && settings[:degrees_per_fragment]
@@ -5,16 +5,16 @@ class Oozby::Preprocessor
5
5
  public
6
6
 
7
7
  default_filters [:xyz, default: 0]
8
- passthrough :rotate
9
- passthrough :translate
10
- passthrough :mirror
8
+ passthrough :rotate, :a, :v
9
+ passthrough :translate, :v
10
+ passthrough :mirror, :v
11
+ passthrough :resize, :newsize, :auto
11
12
  default_filters [:xyz, default: 1]
12
- passthrough :scale
13
- passthrough :resize
13
+ passthrough :scale, :v
14
14
 
15
15
  default_filters # none for these guys
16
- passthrough :multmatrix
17
- passthrough :color
16
+ passthrough :multmatrix, :m
17
+ passthrough :color, :c
18
18
 
19
19
  default_filters :resolution, :layout_defaults, :expanded_names
20
20
 
@@ -37,9 +37,8 @@ class Oozby::Preprocessor
37
37
  return call
38
38
  end
39
39
 
40
- passthrough :sphere
41
- #passthrough :cylinder
42
- passthrough :polyhedron
40
+ passthrough :sphere, :r
41
+ passthrough :polyhedron, :points, :triangles, :convexity
43
42
  # 2d shapes
44
43
 
45
44
  # detect requests for rounded squares and transfer them over
@@ -51,8 +50,10 @@ class Oozby::Preprocessor
51
50
  return call
52
51
  end
53
52
 
54
- passthrough :circle
55
- passthrough :polygon
53
+ filter :refuse_args, :h
54
+ passthrough :circle, :r
55
+ filter :refuse_args, :h
56
+ passthrough :polygon, :points, :paths
56
57
  # extrude 2d shapes to 3d shapes
57
58
  filter :expanded_names, height_label: :height
58
59
  passthrough :linear_extrude
@@ -171,6 +172,7 @@ class Oozby::Preprocessor
171
172
  [:radius2, :radius_2] => :r2,
172
173
  [:facets, :fragments, :sides] => :"$fn",
173
174
  [:inr, :inradius, :in_radius, :inner_r, :inner_radius] => :ir,
175
+ [:width] => :diameter,
174
176
  [:height, :h] => height_label
175
177
  )
176
178
 
@@ -266,7 +268,7 @@ class Oozby::Preprocessor
266
268
  if call.named_args.keys.include? key
267
269
  value = call.named_args[key]
268
270
  if acceptable.none? { |accepts| accepts === value }
269
- raise "#{call.method}'s argument #{key} must be #{acceptable.inspect}"
271
+ raise "#{@original_method}'s argument #{key} must be #{acceptable.inspect}"
270
272
  end
271
273
  end
272
274
  end
@@ -277,10 +279,17 @@ class Oozby::Preprocessor
277
279
  # Usage> filter :require_args, :first_arg, :second_arg
278
280
  def require_args *list
279
281
  list.each do |name|
280
- raise "#{call.method} requires argument #{name}" unless call.named_args.keys.include? name
282
+ raise "#{@original_method} requires argument #{name}" unless call.named_args.keys.include? name
281
283
  end
282
284
  end
283
285
 
286
+ # ban a list of arguments, to highlight mistakes like passing height to circle
287
+ # Usage> filter :refuse_args, :h
288
+ def refuse_args *list
289
+ list.each do |name|
290
+ raise "#{@original_method} doesn't support #{name}" if call.named_args.keys.include? name
291
+ end
292
+ end
284
293
 
285
294
  def rounded_rectangle size: [1,1], center: false, corner_radius: 0.0, facets: nil
286
295
  size = [size] * 2 if size.is_a? Numeric
@@ -26,11 +26,6 @@ class Oozby::Preprocessor
26
26
  super
27
27
  end
28
28
 
29
- # def passthrough method_name
30
- # @@method_filters[method_name] = @@queued_filters
31
- # @@queued_filters = @@default_filters.dup
32
- # end
33
-
34
29
  def finalize_filter method_name
35
30
  @@method_filters[method_name] = @@queued_filters
36
31
  @@queued_filters = @@default_filters.dup
@@ -83,7 +78,7 @@ class Oozby::Preprocessor
83
78
  def transform_call call_info
84
79
  raise "call info isn't Oozby::Element #{call_info.inspect}" unless call_info.is_a? Oozby::Element
85
80
  @call = call_info
86
- original_method = @call.method
81
+ @original_method = @call.method
87
82
 
88
83
  run_filters call_info.method.to_sym
89
84
 
@@ -98,7 +93,7 @@ class Oozby::Preprocessor
98
93
  # replace called item with this new stuff
99
94
  return result
100
95
  elsif result != nil # ignore nil - we don't need to do anything for that!
101
- raise "#{original_method} preprocessor returned invalid result #{result.inspect}"
96
+ raise "#{@original_method} preprocessor returned invalid result #{result.inspect}"
102
97
  end
103
98
  end
104
99
 
@@ -173,7 +168,11 @@ class Oozby::Preprocessor
173
168
  env.preprocessor(false) {
174
169
  env._execute_oozby(&proc)
175
170
  }
176
- }).find { |x| x.is_a? Oozby::Element }
171
+ }).find { |x|
172
+ x.is_a? Oozby::Element
173
+ }.tap { |x|
174
+ x.modifier = "#{call.modifier}#{x.modifier}" if call.modifier
175
+ }
177
176
  end
178
177
 
179
178
  # remember list of public methods defined so far - these are system ones
@@ -1,5 +1,5 @@
1
1
  class Oozby
2
- Version = '0.4.0'
2
+ Version = '0.4.2'
3
3
 
4
4
  def self.version
5
5
  Oozby::Version
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oozby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bluebie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-01 00:00:00.000000000 Z
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: listen
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: 2.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "<"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.0
26
+ version: 2.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.18.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.18.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: amatch
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.11
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.11
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: colored
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.2'
69
69
  description: OpenSCAD - a cad language for creating solid 3d objects, useful for CNC
@@ -90,24 +90,24 @@ files:
90
90
  - license.txt
91
91
  - examples/using classes/demo-class.rb
92
92
  - bin/oozby
93
- homepage: http://github.com/Bluebie/digiusb.rb
93
+ homepage: http://creativepony.com/oozby/
94
94
  licenses:
95
95
  - LGPL-3
96
96
  metadata: {}
97
97
  post_install_message:
98
98
  rdoc_options:
99
- - --main
99
+ - "--main"
100
100
  - lib/oozby/base.rb
101
101
  require_paths:
102
102
  - lib
103
103
  required_ruby_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - '>='
105
+ - - ">="
106
106
  - !ruby/object:Gem::Version
107
107
  version: 2.0.0
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []