circuitdata 0.8.0 → 0.9.0
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/lib/circuitdata.rb +2 -2
- data/lib/circuitdata/schema_files/{v1 → current}/ottp_circuitdata_schema.json +0 -0
- data/lib/circuitdata/schema_files/{v1 → current}/ottp_circuitdata_schema_generics.json +0 -0
- data/lib/circuitdata/schema_files/{v1 → current}/ottp_circuitdata_schema_materials.json +0 -0
- data/lib/circuitdata/schema_files/{v1 → current}/ottp_circuitdata_schema_products.json +8 -8
- data/lib/circuitdata/schema_files/{v1 → current}/ottp_circuitdata_schema_profiles_and_capabilities.json +0 -0
- data/lib/circuitdata/schema_files/{schema_v1_dereferenced.json → schema_current_dereferenced.json} +10 -12
- data/lib/circuitdata/summary.rb +19 -46
- data/lib/circuitdata/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e70e5e3c4070c9ebe96c6aa365547551226bc5cb5e4c3c9f37ad95422dbb3aff
|
4
|
+
data.tar.gz: 12f7b26c99c0ff549cea2c05f2ea197f5190bb3752f9b625b1336fb39d690b64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4dda4f6ba82769c6c0050a63587d971f41eeb4b3fe508e0c954775cdc1326241fa3648afad01feb5a7ae60dc269d7118274f5d394108cf01b4c1f9c23700329
|
7
|
+
data.tar.gz: 0f6c9336a9b67492bdce5a9a1ba6602abb8e2ac3b211038476186f418628f7c4a90c45a94a96efb2b9151631a3be99dee5a55eb5ca84ba8741f18ae9f81703d5
|
data/lib/circuitdata.rb
CHANGED
@@ -17,8 +17,8 @@ module Circuitdata
|
|
17
17
|
require_relative "./circuitdata/exposed_area"
|
18
18
|
require_relative "./circuitdata/summary"
|
19
19
|
|
20
|
-
SCHEMA_BASE_PATH = File.join(__dir__, "circuitdata/schema_files/
|
21
|
-
SCHEMA_FULL_PATH = File.join(SCHEMA_BASE_PATH, "..", "
|
20
|
+
SCHEMA_BASE_PATH = File.join(__dir__, "circuitdata/schema_files/current")
|
21
|
+
SCHEMA_FULL_PATH = File.join(SCHEMA_BASE_PATH, "..", "schema_current_dereferenced.json")
|
22
22
|
DEFINITIONS_FULL_PATH = File.join(
|
23
23
|
SCHEMA_BASE_PATH, "ottp_circuitdata_schema_definitions.json"
|
24
24
|
)
|
File without changes
|
File without changes
|
File without changes
|
@@ -574,11 +574,7 @@
|
|
574
574
|
"properties": {
|
575
575
|
"size_x": { "type": "number", "uom": "mm" },
|
576
576
|
"size_y": { "type": "number", "uom": "mm" },
|
577
|
-
"area": { "type": "number", "uom": "
|
578
|
-
"breakaway_method": {
|
579
|
-
"type": "string",
|
580
|
-
"enum": ["routing", "punching"]
|
581
|
-
},
|
577
|
+
"area": { "type": "number", "uom": "mm2" },
|
582
578
|
"thickness": { "type": "number", "uom": "mm" }
|
583
579
|
}
|
584
580
|
},
|
@@ -607,7 +603,7 @@
|
|
607
603
|
"type": "array",
|
608
604
|
"items": {
|
609
605
|
"type": "string",
|
610
|
-
"enum": ["routing", "scoring", "punching", "
|
606
|
+
"enum": ["routing", "scoring", "punching", "jump_scoring"]
|
611
607
|
}
|
612
608
|
},
|
613
609
|
"mouse_bites": { "type": "boolean" },
|
@@ -688,7 +684,7 @@
|
|
688
684
|
"type": "array",
|
689
685
|
"items": {
|
690
686
|
"type": "string",
|
691
|
-
"enum": ["
|
687
|
+
"enum": ["ul94", "c_ul", "rohs", "iec_61249-2-21", "esa", "itar", "dfars", "mil_prf_55110", "mil_prf_50884", "mil_prf_31032", "as9100", "nadcap", "rw_en45545_2_2013", "rw_nf_f_16_101", "rw_uni_cei_11170_3", "rw_nfpa_130"]
|
692
688
|
}
|
693
689
|
},
|
694
690
|
"ipc_6010_class": {
|
@@ -728,7 +724,11 @@
|
|
728
724
|
"type": "string",
|
729
725
|
"enum": ["1", "2", "3"]
|
730
726
|
},
|
731
|
-
"ipc_6018": { "type": "boolean" }
|
727
|
+
"ipc_6018": { "type": "boolean" },
|
728
|
+
"ipc_a600_class": {
|
729
|
+
"type": "string",
|
730
|
+
"enum": ["1", "2", "3"]
|
731
|
+
}
|
732
732
|
}
|
733
733
|
},
|
734
734
|
"testing": {
|
File without changes
|
data/lib/circuitdata/schema_files/{schema_v1_dereferenced.json → schema_current_dereferenced.json}
RENAMED
@@ -1290,14 +1290,7 @@
|
|
1290
1290
|
},
|
1291
1291
|
"area": {
|
1292
1292
|
"type": "number",
|
1293
|
-
"uom": "
|
1294
|
-
},
|
1295
|
-
"breakaway_method": {
|
1296
|
-
"type": "string",
|
1297
|
-
"enum": [
|
1298
|
-
"routing",
|
1299
|
-
"punching"
|
1300
|
-
]
|
1293
|
+
"uom": "mm2"
|
1301
1294
|
},
|
1302
1295
|
"thickness": {
|
1303
1296
|
"type": "number",
|
@@ -1374,8 +1367,6 @@
|
|
1374
1367
|
"routing",
|
1375
1368
|
"scoring",
|
1376
1369
|
"punching",
|
1377
|
-
"v_cut",
|
1378
|
-
"v_grove",
|
1379
1370
|
"jump_scoring"
|
1380
1371
|
]
|
1381
1372
|
}
|
@@ -1512,10 +1503,9 @@
|
|
1512
1503
|
"items": {
|
1513
1504
|
"type": "string",
|
1514
1505
|
"enum": [
|
1515
|
-
"
|
1506
|
+
"ul94",
|
1516
1507
|
"c_ul",
|
1517
1508
|
"rohs",
|
1518
|
-
"ul94",
|
1519
1509
|
"iec_61249-2-21",
|
1520
1510
|
"esa",
|
1521
1511
|
"itar",
|
@@ -1586,6 +1576,14 @@
|
|
1586
1576
|
},
|
1587
1577
|
"ipc_6018": {
|
1588
1578
|
"type": "boolean"
|
1579
|
+
},
|
1580
|
+
"ipc_a600_class": {
|
1581
|
+
"type": "string",
|
1582
|
+
"enum": [
|
1583
|
+
"1",
|
1584
|
+
"2",
|
1585
|
+
"3"
|
1586
|
+
]
|
1589
1587
|
}
|
1590
1588
|
}
|
1591
1589
|
},
|
data/lib/circuitdata/summary.rb
CHANGED
@@ -1,78 +1,52 @@
|
|
1
|
-
require
|
1
|
+
require "bigdecimal"
|
2
|
+
|
2
3
|
module Circuitdata
|
3
4
|
class Summary
|
4
|
-
|
5
|
-
SUMMARY_FIELDS = [
|
6
|
-
:base_materials,
|
7
|
-
:number_of_conductive_layers,
|
8
|
-
:board_outline,
|
9
|
-
:final_thickness,
|
10
|
-
:minimum_track,
|
11
|
-
:minimum_spacing,
|
12
|
-
:min_through_hole_size,
|
13
|
-
:max_aspect_ratio
|
14
|
-
]
|
15
|
-
|
16
5
|
def initialize(product)
|
17
6
|
@product = product
|
18
7
|
end
|
19
8
|
|
20
|
-
def data
|
21
|
-
d = {}
|
22
|
-
SUMMARY_FIELDS.each do |key|
|
23
|
-
d[key] = send(key)
|
24
|
-
end
|
25
|
-
d
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# helper functions
|
31
9
|
def conductive_layers
|
32
10
|
layers_with_function("conductive")
|
33
11
|
end
|
34
12
|
|
35
13
|
def board_area
|
36
|
-
|
37
|
-
sizes
|
38
|
-
sizes.compact.inject(0, :+)
|
14
|
+
sizes = @product.sections.map { |section| section[:mm2] }
|
15
|
+
sizes.compact.sum
|
39
16
|
end
|
40
17
|
|
41
18
|
def layers_with_function(func)
|
42
|
-
@product.layers.select{ |layer| layer[:function] == func}
|
19
|
+
@product.layers.select { |layer| layer[:function] == func }
|
43
20
|
end
|
44
21
|
|
45
|
-
# mapping
|
46
22
|
def base_materials
|
47
23
|
dielectrics = layers_with_function("dielectric")
|
48
24
|
return nil if dielectrics.length == 0
|
49
|
-
|
50
|
-
|
51
|
-
return "
|
25
|
+
|
26
|
+
flexes = dielectrics.map { |d| d.dig(:flexible) }.compact.uniq
|
27
|
+
return "Flexible" if flexes == [true]
|
28
|
+
return "Rigid" if flexes == [false]
|
52
29
|
return "Rigid Flex" if flexes.length == 2
|
53
30
|
return "Unknown" # dielectric is present, but does not have flex info.
|
54
31
|
end
|
55
32
|
|
56
|
-
# Return number of conductive layers
|
57
33
|
def number_of_conductive_layers
|
58
|
-
|
59
|
-
return conductive_layers.length
|
60
|
-
end
|
34
|
+
conductive_layers.length
|
61
35
|
end
|
62
36
|
|
63
37
|
def minimum_track
|
64
|
-
conductive_layers.map { |layer| layer.dig(:layer_attributes, :minimum_track_width)}.compact.min
|
38
|
+
conductive_layers.map { |layer| layer.dig(:layer_attributes, :minimum_track_width) }.compact.min
|
65
39
|
end
|
66
40
|
|
67
41
|
def minimum_spacing
|
68
|
-
conductive_layers.map { |layer| layer.dig(:layer_attributes, :minimum_spacing_width)}.compact.min
|
42
|
+
conductive_layers.map { |layer| layer.dig(:layer_attributes, :minimum_spacing_width) }.compact.min
|
69
43
|
end
|
70
44
|
|
71
45
|
def board_outline
|
72
46
|
array = @product.metrics.fetch(:board, {})
|
73
47
|
size_x = array[:size_x]
|
74
48
|
size_y = array[:size_y]
|
75
|
-
return size_x.to_s+" x "+size_y.to_s+" mm" if size_x && size_y
|
49
|
+
return size_x.to_s + " x " + size_y.to_s + " mm" if size_x && size_y
|
76
50
|
end
|
77
51
|
|
78
52
|
def final_thickness
|
@@ -80,16 +54,15 @@ module Circuitdata
|
|
80
54
|
end
|
81
55
|
|
82
56
|
def min_through_hole_size
|
83
|
-
@product.processes.
|
57
|
+
@product.processes.select { |process| process.dig(:function_attributes, :hole_type) == "through" }
|
58
|
+
.map { |process| process.dig(:function_attributes, :finished_size) }.compact.min
|
84
59
|
end
|
85
60
|
|
86
61
|
def max_aspect_ratio
|
87
|
-
if final_thickness
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
return (ft/th).truncate(2).to_s.to_f
|
92
|
-
end
|
62
|
+
if final_thickness && min_through_hole_size
|
63
|
+
th = BigDecimal(min_through_hole_size.to_s) / 1000.0
|
64
|
+
ft = BigDecimal(final_thickness.to_s)
|
65
|
+
return (ft / th).truncate(2).to_s.to_f
|
93
66
|
end
|
94
67
|
end
|
95
68
|
end
|
data/lib/circuitdata/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circuitdata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Lydersen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json-schema
|
@@ -176,12 +176,12 @@ files:
|
|
176
176
|
- lib/circuitdata/product_id_validator.rb
|
177
177
|
- lib/circuitdata/profile.rb
|
178
178
|
- lib/circuitdata/schema.rb
|
179
|
-
- lib/circuitdata/schema_files/
|
180
|
-
- lib/circuitdata/schema_files/
|
181
|
-
- lib/circuitdata/schema_files/
|
182
|
-
- lib/circuitdata/schema_files/
|
183
|
-
- lib/circuitdata/schema_files/
|
184
|
-
- lib/circuitdata/schema_files/
|
179
|
+
- lib/circuitdata/schema_files/current/ottp_circuitdata_schema.json
|
180
|
+
- lib/circuitdata/schema_files/current/ottp_circuitdata_schema_generics.json
|
181
|
+
- lib/circuitdata/schema_files/current/ottp_circuitdata_schema_materials.json
|
182
|
+
- lib/circuitdata/schema_files/current/ottp_circuitdata_schema_products.json
|
183
|
+
- lib/circuitdata/schema_files/current/ottp_circuitdata_schema_profiles_and_capabilities.json
|
184
|
+
- lib/circuitdata/schema_files/schema_current_dereferenced.json
|
185
185
|
- lib/circuitdata/summary.rb
|
186
186
|
- lib/circuitdata/validator.rb
|
187
187
|
- lib/circuitdata/version.rb
|
@@ -204,8 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '0'
|
206
206
|
requirements: []
|
207
|
-
|
208
|
-
rubygems_version: 2.7.6
|
207
|
+
rubygems_version: 3.0.1
|
209
208
|
signing_key:
|
210
209
|
specification_version: 4
|
211
210
|
summary: Basic test and comparison of JSON files agains the CircuitData JSON schema
|