microstation 0.8.3 → 0.8.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.
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'spec_helper'
4
+
5
+
6
+ describe Microstation do
7
+ describe '#root' do
8
+ subject { Microstation.root }
9
+
10
+ it 'to_s' do
11
+ _(subject.to_s).must_equal(Pathname.getwd.to_s)
12
+ end
13
+ end
14
+
15
+ describe '#run' do
16
+ it 'opens up and yields an app' do
17
+ result = nil
18
+ Microstation.run do |app|
19
+ _(app).must_be_instance_of(Microstation::App)
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '#get_text' do
25
+ let(:drawing_with_text) { drawing_path('drawing_with_text.dgn') }
26
+ let(:drawing_no_text) { drawing_path('drawing_no_block.dgn') }
27
+ let(:text_for_drawing_with_text){ [
28
+ "Four score and seven years ago our fathers brought forth",
29
+ "Out out brief candle\nLifes but a walking shadow",
30
+ "It is my lady, it is my love\nOh that she knew she were"
31
+ ]
32
+ }
33
+
34
+ describe 'when drawing has text' do
35
+ it 'returns the text' do
36
+ text = Microstation.get_text(drawing_with_text)
37
+ _(text.sort).must_equal(text_for_drawing_with_text.sort)
38
+ end
39
+ end
40
+
41
+ describe 'when drawing has no text' do
42
+ it 'returns an empty array' do
43
+ _(Microstation.get_text(drawing_no_text)).must_equal([])
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+ SPEC_DIR = Pathname(__dir__).expand_path
5
+ ROOT_DIR = SPEC_DIR.parent
6
+ DRAWING_DIR = ROOT_DIR + 'cad_files'
7
+ OUTPUT_DIR = ROOT_DIR + 'test_outdir'
8
+ TEMP_DIR = ROOT_DIR + 'tmp'
9
+
10
+ require 'bundler/setup'
11
+ $LOAD_PATH.unshift( ROOT_DIR + 'lib')
12
+
13
+ require 'minitest/spec'
14
+ require 'minitest/autorun'
15
+ require 'minitest/hooks/default'
16
+ require 'microstation'
17
+ require 'pry'
18
+ def drawing_path(file)
19
+ (DRAWING_DIR + file).expand_path
20
+ end
21
+
22
+ def output_path(file = nil)
23
+ if file
24
+ (OUTPUT_DIR + file).expand_path.to_s
25
+ else
26
+ OUTPUT_DIR
27
+ end
28
+ end
29
+
30
+ def seedfile_path(file)
31
+ drawing_path(file)
32
+ end
33
+
34
+ def normalize_path(p)
35
+ p.to_s.sub(/[c,C]:/, 'C:')
36
+ end
37
+
38
+ def config_app(app)
39
+ conf = app.configuration
40
+ conf.prepend('MS_SEEDFILES', DRAWING_DIR)
41
+ # conf.set!('MS_DESIGNSEED','seed2d')
42
+ end
43
+
44
+ def open_existing_drawing(name)
45
+ path = drawing_path(name)
46
+ raise "drawing #{name} doesn't exist" unless File.file?(path)
47
+
48
+ @app.open_drawing(path)
49
+ end
50
+
51
+ def new_drawing(name, seedfile: 'seed2d' )
52
+ seed_path = (drawing_path(seedfile) if seedfile)
53
+ begin
54
+ @app.close_active_drawing
55
+ rescue StandardError
56
+ nil
57
+ end
58
+ @path = output_path(name)
59
+ File.delete(@path) if File.exist? @path
60
+ @app.new_drawing(@path, seedfile: seed_path)
61
+ end
62
+
63
+ def non_existent_path(name)
64
+ path = drawing_path(name)
65
+ File.delete(path) if File.exist? path
66
+ path
67
+ end
68
+
69
+ def delete_current_drawing
70
+ if drawing = @app.current_drawing
71
+ path = drawing.path
72
+ begin
73
+ @app.close_active_drawing
74
+ rescue StandardError
75
+ nil
76
+ end
77
+ begin
78
+ File.delete path
79
+ rescue StandardError
80
+ nil
81
+ end
82
+ end
83
+ end
84
+
85
+ def before_new_drawing
86
+ @app.close_active_drawing
87
+ begin
88
+ File.delete(@path)
89
+ rescue StandardError
90
+ nil
91
+ end
92
+ end
93
+
94
+ # def before_new_drawing
95
+ # @app.close_active_drawing
96
+ # File.delete(@drawing_path) if (@drawing_path && File.exist? @drawing_path)
97
+ # end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microstation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Sisneros
@@ -339,7 +339,6 @@ email:
339
339
  executables:
340
340
  - dgn2pdf
341
341
  - dgn_template
342
- - microstation
343
342
  - pw_print
344
343
  extensions: []
345
344
  extra_rdoc_files:
@@ -356,14 +355,14 @@ files:
356
355
  - Rakefile
357
356
  - bin/dgn2pdf
358
357
  - bin/dgn_template
359
- - bin/microstation
360
358
  - bin/pw_print
361
359
  - cad_files/drawing_faatitle_in_non_default_model.dgn
362
360
  - cad_files/drawing_no_block.dgn
363
361
  - cad_files/drawing_with_3_block.dgn
364
362
  - cad_files/drawing_with_block.dgn
363
+ - cad_files/drawing_with_text.dgn
365
364
  - cad_files/seed2d.dgn
366
- - cad_files/test.dgn
365
+ - cad_files/seed3d.dgn
367
366
  - lib/microstation.rb
368
367
  - lib/microstation/app.rb
369
368
  - lib/microstation/cad_input_queue.rb
@@ -427,6 +426,16 @@ files:
427
426
  - plot/tiff.plt
428
427
  - plot/wmbw.tbl
429
428
  - plot/wmcolor.tbl
429
+ - spec/microstation/app_spec.rb
430
+ - spec/microstation/configuration_spec.rb
431
+ - spec/microstation/drawing_spec.rb
432
+ - spec/microstation/functions_spec.rb
433
+ - spec/microstation/tag_set_spec.rb
434
+ - spec/microstation/template_spec.rb
435
+ - spec/microstation/text_node_spec.rb
436
+ - spec/microstation/text_spec.rb
437
+ - spec/microstation_spec.rb
438
+ - spec/spec_helper.rb
430
439
  homepage: https://github.com/dsisnero/microstation
431
440
  licenses:
432
441
  - MIT
data/bin/microstation DELETED
@@ -1,231 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require_relative '../lib/microstation'
3
-
4
- # app = Microstation::App.new
5
- # drawing = app.current_drawing if app.has_current_drawing?
6
- # drawing.scan_text do |t|
7
- # puts t if t.to_s =~ /{/
8
- # end
9
-
10
- module Faa
11
-
12
- module Templates
13
-
14
- :0
15
- class App
16
-
17
- attr_reader :racks, :lid, :factype
18
-
19
- def initialize(lid: nil, factype:nil)
20
- @lid = lid || 'LID'
21
- @factype = factype || 'FACTYPE'
22
- @racks = []
23
- end
24
-
25
- def add_rco_rack(name: nil)
26
- rack = Rco::Rack.new(name):
27
- yield rack if block_given?
28
- racks << rack
29
- rack
30
- end
31
-
32
- def dry_run(lid: @lid, factype: @factype, starting_number: 1,dir: nil)
33
- accum = { result: [], next_number: nil}
34
- result =racks.each_with_object(accum) do |r, o|
35
- result, next_number = r.dry_run(lid: lid, factype: factype,ending_number: o[:next_number], starting_number: starting_number )
36
- o[:result].concat(result)
37
- o[:next_number] = next_number
38
- o
39
- end
40
- result[:result]
41
- end
42
-
43
- def run_bak(lid: @lid, factype: @factype, starting_number: 1, dir: Pathname.getwd)
44
- changes = dry_run(lid: lid, factype: factype, starting_number: starting_number, dir: dir)
45
- return if changes.size == 0
46
- Microstation.run do |app|
47
- changes.each do |change|
48
- app.change_drawing(change[:template], change[:new_name]) do |drawing|
49
- drawing.change_template_text(change[:updates])
50
- end
51
- end
52
- end
53
- end
54
-
55
- def run2(lid: @lid, factype: @factype, starting_number: 1, dir: Pathname.getwd)
56
- changes = dry_run(lid: lid, factype: factype, starting_number: starting_number, dir: dir)
57
- return if changes.size == 0
58
- require 'pry'; binding.pry
59
- Microstation.run(visible: true) do |app|
60
- changes.each do |change|
61
- app.change_drawing(change[:template], name: change[:new_name], output_dir: dir ) do |drawing|
62
- drawing.change_template_text(change[:updates])
63
- end
64
- end
65
- end
66
- end
67
-
68
- def run(lid: @lid, factype: @factype, starting_number: 1, dir: Pathname.getwd)
69
- changes = dry_run(lid: lid, factype: factype, starting_number: starting_number, dir: dir)
70
- return if changes.size == 0
71
- require 'pry'; binding.pry
72
- Microstation.run(visible: true) do |app|
73
- changes.each do |change|
74
- app.render_template(change[:template], name: change[:new_name], output_dir: dir, locals: change[:updates])
75
- end
76
- end
77
- end
78
-
79
- end
80
-
81
- module Rco
82
-
83
- DIR = ::Microstation::TEMPLATES_PATH + 'rco'
84
-
85
-
86
- class Rack
87
-
88
- DRAWINGS = (1..3).map{ |n| DIR + "t#{n}.dgn" }
89
- CHANNEL_TO_DWG = { 1 => DIR + 't1.dgn',
90
- 2 => DIR + 't2.dgn',
91
- }
92
-
93
- attr_reader :change_steps
94
-
95
- attr_accessor :telco1_tx_drop, :telco1_rx_drop, :telco2_tx_drop, :telco2_rx_drop, :name
96
-
97
-
98
- def initialize(name = nil, &block)
99
- @name = name
100
- @change_steps = {}
101
- instance_eval(&block) if block_given?
102
- end
103
-
104
- def add_channel(freq,number)
105
- add_transmitter(freq,number)
106
- add_receiver(freq, number)
107
- end
108
-
109
- def channel_to_radio_number(chan)
110
- number_start = case chan
111
- when 1
112
- 1
113
- when 2
114
- 3
115
- when 3
116
- 5
117
- when 4
118
- 7
119
- end
120
- end
121
-
122
- def channel_to_drawing(chan)
123
- case chan
124
- when 1
125
- DIR + 't1.dgn'
126
- when 2
127
- DIR + 't2.dgn'
128
- end
129
-
130
- end
131
- def add_radio( freq, number: 1, type: :tx, func: main)
132
- result = []
133
- string_type = case type
134
- when :tx, 'transmitter', 'tx'
135
- 'TRANSMITTER'
136
- when :rx, 'receiver', 'rx'
137
- 'RECEIVER'
138
- else
139
- raise
140
- end
141
- string_func = case func
142
- when :main, /\bmain\b/
143
- 'MAIN'
144
- when :stby, /\bstby\b/i, /\bstandby\b/i
145
- 'STBY'
146
- end
147
-
148
- result << "#{string_type}#{number}"
149
- result << "#{freq} MHz #{string_func}"
150
- result << "CM-300 V2"
151
- result.join("\n")
152
- end
153
-
154
- def add_channel(freq:, channel: 1)
155
- change_steps[channel] = add_channel_changes(freq, channel)
156
- end
157
-
158
- def add_channel_changes(freq, ch)
159
- changes = {}
160
- changes[:channel] = ch
161
- changes[:updates] = text_for_freq_and_channel(freq,ch)
162
- end
163
-
164
- def text_for_freq_and_channel(freq,ch)
165
- number_start = channel_to_radio_number(ch)
166
- { 'tx1' => add_radio(freq, number: number_start, type: :tx, func: :main),
167
- 'rx1' => add_radio(freq, number: number_start, type: :rx, func: :main),
168
- 'tx2' => add_radio( freq, number: number_start + 1, type: :tx, func: :stby),
169
- 'rx2' => add_radio( freq, number: number_start + 1, type: :rx, func: :stby),
170
- }
171
- end
172
-
173
-
174
- def dry_run(lid: , factype: , starting_number: 1, ending_number: nil)
175
- starting_number = ending_number || starting_number
176
- results = []
177
- DRAWINGS.each.with_index(1) do |drawing,ch|
178
- new_name = "%s-%s-Q-%03d.dgn" % [lid,factype, starting_number]
179
- changes = change_steps.fetch(ch, {})
180
- ch = ch + 1
181
- starting_number += 1
182
- result_hash = { template: drawing, new_name: new_name, updates: changes}
183
- results << result_hash
184
-
185
- end
186
-
187
- [results,starting_number]
188
- end
189
- end
190
-
191
- end
192
-
193
- end
194
-
195
- end
196
-
197
-
198
- if $0 == __FILE__
199
- app = Faa::Templates::App.new
200
-
201
-
202
- app.add_rco_rack do |r|
203
- r.add_channel(freq: 255.4, channel: 1)
204
- end
205
- app.add_rco_rack do |r|
206
- r.add_channel(freq: 122.2, channel: 1)
207
- r.add_channel(freq: 122.6, channel: 2)
208
- end
209
- app.add_rco_rack do |r|
210
- r.add_channel(freq: 121.5, channel: 1)
211
- r.add_channel(freq: 243, channel: 2)
212
- end
213
- app.run(lid: 'BTF', factype: 'RTR', starting_number: 110, dir: 'btf')
214
-
215
- end
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
- # drawing.scan_cells_for_text do |t|
224
- # puts t
225
- # end
226
-
227
-
228
- # drawing.scan_cells_for_text do |t|
229
- # if t =~ /{{\s+(\w+)\s+}}/
230
- # end
231
- # end
data/cad_files/test.dgn DELETED
Binary file