kut 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.rdoc +6 -0
- data/README.rdoc +20 -0
- data/Rakefile.rb +63 -0
- data/bin/kut +27 -0
- data/doc-src/PINS.rdoc +18 -0
- data/examples/example_helper.rb +1 -0
- data/examples/net_list/print_cmp_list.rb +101 -0
- data/examples/pins/A3P1000_PQFP208.pins +216 -0
- data/examples/pins/AT32UC3A0512.pins +151 -0
- data/examples/pins/EMP7464S_TQFP100.pins +101 -0
- data/examples/pins/ata40conn.pins +44 -0
- data/examples/pins/full_sata.pins +25 -0
- data/examples/pins/jm20330.pins +85 -0
- data/lib/kut.rb +2 -0
- data/lib/kut/application.rb +56 -0
- data/lib/kut/commands/gost/bom2el_list.rb +171 -0
- data/lib/kut/commands/help-cmd.rb +32 -0
- data/lib/kut/commands/lib-gen-cmd.rb +88 -0
- data/lib/kut/commands/net_list2bom.rb +81 -0
- data/lib/kut/eeschema/wire.rb +3 -0
- data/lib/kut/kut_module.rb +18 -0
- data/lib/kut/library/components.rb +167 -0
- data/lib/kut/library/generator.rb +25 -0
- data/lib/kut/library/generator/default.rb +123 -0
- data/lib/kut/library/generator/gost-con.rb +116 -0
- data/lib/kut/library/generator/simple.rb +123 -0
- data/lib/kut/library/pins_reader.rb +47 -0
- data/lib/kut/library/regexp.rb +18 -0
- data/lib/kut/misc/matrix.rb +2 -0
- data/lib/kut/misc/point.rb +25 -0
- data/lib/kut/misc/rectangle.rb +20 -0
- data/lib/kut/net_list/concept.rb +20 -0
- data/lib/kut/net_list/kicad.rb +40 -0
- data/lib/kut/net_list/pcad.rb +69 -0
- data/lib/kut/tests/Rakefile.rb +0 -0
- data/lib/kut/tests/rectangle.rb +23 -0
- data/test/library_cmp_pin_test.rb +16 -0
- data/test/library_pins_reader_test.rb +40 -0
- data/test/point_test.rb +17 -0
- metadata +100 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
class Point
|
2
|
+
|
3
|
+
attr_accessor :x, :y
|
4
|
+
|
5
|
+
def initialize(x = 0, y = 0)
|
6
|
+
@x = x
|
7
|
+
@y = y
|
8
|
+
end
|
9
|
+
|
10
|
+
def Point.[](x = 0, y = 0)
|
11
|
+
return Point.new(x, y)
|
12
|
+
end
|
13
|
+
|
14
|
+
def +(pt)
|
15
|
+
return Point[@x + pt.x, @y + pt.y]
|
16
|
+
end
|
17
|
+
|
18
|
+
def -(pt)
|
19
|
+
return Point[@x - pt.x, @y - pt.y]
|
20
|
+
end
|
21
|
+
|
22
|
+
def ==(pt)
|
23
|
+
(pt.x == @x) && (pt.y == @y) ? true : false
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Rectangle
|
2
|
+
attr_accessor :x, :y, :w, :h
|
3
|
+
|
4
|
+
def initialize(x = 0, y = 0, w = 0, h = 0)
|
5
|
+
@x = x
|
6
|
+
@y = y
|
7
|
+
@w = w
|
8
|
+
@h = h
|
9
|
+
end
|
10
|
+
|
11
|
+
def &(rt)
|
12
|
+
end
|
13
|
+
|
14
|
+
=begin
|
15
|
+
return true if rect contains point pt
|
16
|
+
=end
|
17
|
+
def contains?(pt)
|
18
|
+
pt.x.between?(@x, @x + w) && pt.y.between?(@y, @y + h)
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Kut
|
2
|
+
module NetList
|
3
|
+
class NetListCocept
|
4
|
+
def initialize (f_in)
|
5
|
+
#read f_in by each_line
|
6
|
+
end
|
7
|
+
|
8
|
+
def by_components
|
9
|
+
# return array of cmp_object
|
10
|
+
# where cmp_object
|
11
|
+
# def reference - C15
|
12
|
+
# def value - 0.1uF
|
13
|
+
# def footprint - 0805
|
14
|
+
# def nets - array of {:net => 'GND', :pin => '1' }
|
15
|
+
#
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Kut
|
4
|
+
module NetList
|
5
|
+
class KiCadNetList
|
6
|
+
def initialize(f_in = nil)
|
7
|
+
@components = []
|
8
|
+
load(f_in) if f_in
|
9
|
+
end
|
10
|
+
|
11
|
+
def load(f_in)
|
12
|
+
cur_component = nil
|
13
|
+
f_in.each_line { |line|
|
14
|
+
#puts line
|
15
|
+
#( /4A5F296D con-yamaichi-cf-2-CF050P2 X4 CF050P2 {Lib=CF050P2}
|
16
|
+
if mh = /^\s+\(\s+\/([\dABCDEF]{8})\s+(\S*)\s+(\S*)\s+(\S*)\s+/.match(line)
|
17
|
+
cur_component = OpenStruct.new
|
18
|
+
cur_component.reference = mh[3]
|
19
|
+
cur_component.footprint = mh[2]
|
20
|
+
cur_component.value = mh[4]
|
21
|
+
cur_component.nets = []
|
22
|
+
end
|
23
|
+
|
24
|
+
if /^\s+\)/ =~ line
|
25
|
+
@components << cur_component if cur_component
|
26
|
+
cur_component = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
if cur_component && (mh = /^\s+\(\s+(\S+)\s+(\S+)\s+\)/.match(line))
|
30
|
+
cur_component.nets << { :net => mh[2], :pin => mh[1]} if cur_component
|
31
|
+
end
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def by_components
|
36
|
+
return @components
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end # end module NetList
|
40
|
+
end # end module Kut
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Kut
|
4
|
+
module NetList
|
5
|
+
class PCadNetList
|
6
|
+
def initialize(f_in = nil)
|
7
|
+
@components = []
|
8
|
+
load(f_in) if f_in
|
9
|
+
end
|
10
|
+
|
11
|
+
def load(f_in)
|
12
|
+
components = {}
|
13
|
+
cur_cmp = nil
|
14
|
+
cur_net = nil
|
15
|
+
f_in.each_line { |line|
|
16
|
+
|
17
|
+
if mh = /^\s*\(compInst\s*\"([^\"]*)\"/.match(line)
|
18
|
+
ref = mh[1]
|
19
|
+
cur_cmp = components[ref]
|
20
|
+
unless cur_cmp then
|
21
|
+
cur_cmp = OpenStruct.new
|
22
|
+
cur_cmp.reference = ref
|
23
|
+
cur_cmp.nets = []
|
24
|
+
components[ref] = cur_cmp
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if (mh = /^\s*\(compValue\s*\"([^\"]*)\"/.match(line)) && cur_cmp
|
29
|
+
cur_cmp.value = mh[1]
|
30
|
+
end
|
31
|
+
|
32
|
+
if (mh = /^\s*\(originalName\s*\"([^\"]*)\"/.match(line)) && cur_cmp
|
33
|
+
cur_cmp.footprint = mh[1]
|
34
|
+
end
|
35
|
+
|
36
|
+
#(originalName "IDC2.54-V16C")
|
37
|
+
|
38
|
+
if mh = /^\s*\(net\s\"([^\"]*)\"/.match(line)
|
39
|
+
cur_net = mh[1]
|
40
|
+
end
|
41
|
+
|
42
|
+
if (mh = /^\s*\(node\s+\"([^\"]*)\"\s+\"([^\"]*)\"\s*\)/.match(line)) && cur_net
|
43
|
+
ref = mh[1]
|
44
|
+
cmp = components[ref]
|
45
|
+
unless cmp then
|
46
|
+
cmp = OpenStruct.new
|
47
|
+
cmp.reference = ref
|
48
|
+
cmp.nets = []
|
49
|
+
components[ref] = cmp
|
50
|
+
end
|
51
|
+
|
52
|
+
cmp.nets << {:net => cur_net, :pin => mh[1]}
|
53
|
+
end
|
54
|
+
|
55
|
+
if /^\s*\)/ =~ line
|
56
|
+
cur_cmp = nil
|
57
|
+
cur_net = nil
|
58
|
+
end
|
59
|
+
}
|
60
|
+
|
61
|
+
@components = components.values
|
62
|
+
end
|
63
|
+
|
64
|
+
def by_components
|
65
|
+
return @components
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end # end module NetList
|
69
|
+
end # end module Kut
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'misc/rectangle'
|
3
|
+
|
4
|
+
class Point_Test < Test::Unit::TestCase
|
5
|
+
# def setup
|
6
|
+
# end
|
7
|
+
|
8
|
+
# def teardown
|
9
|
+
# end
|
10
|
+
|
11
|
+
def test_compare
|
12
|
+
assert(true, Point[1,2] == Point[1, 2])
|
13
|
+
assert(true, Point[1,2] != Point[2, 2])
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_sum
|
17
|
+
assert(true, Point[-1,2] == (Point[0, 3] + Point[-1, -1]))
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_sub
|
21
|
+
assert(true, Point[1,4] == (Point[0, 3] - Point[-1, -1]))
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'kut/library/components'
|
3
|
+
require 'kut/library/regexp'
|
4
|
+
|
5
|
+
class LibraryCmpPin_Test < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_default_initialize
|
8
|
+
assert(Kut::Library::Pin.new.to_s() =~ Kut::Library::RegExp::PIN_EXP)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
assert(Kut::Library::Pin.new(:name => 'PL2303', :orientation => 'U').to_s() =~ Kut::Library::RegExp::PIN_EXP)
|
13
|
+
assert($1 == 'PL2303')
|
14
|
+
assert($6 == 'U')
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'kut/library/pins_reader'
|
3
|
+
|
4
|
+
class LibraryPinsReader_Test < Test::Unit::TestCase
|
5
|
+
|
6
|
+
PINS_FILE = <<EOFS
|
7
|
+
#NAMES NAME1, NAME2 , NONAME
|
8
|
+
#REF DA
|
9
|
+
1 VCC
|
10
|
+
2 GND
|
11
|
+
|
12
|
+
#TOP
|
13
|
+
3 3PIN
|
14
|
+
#NO-PIN
|
15
|
+
4 4PIN
|
16
|
+
|
17
|
+
#LEFT
|
18
|
+
5 5PIN
|
19
|
+
|
20
|
+
#RIGHT
|
21
|
+
6 6PIN
|
22
|
+
|
23
|
+
#BOTTOM
|
24
|
+
S23 S23PIN
|
25
|
+
S1 S1PIN
|
26
|
+
|
27
|
+
EOFS
|
28
|
+
|
29
|
+
def test_parse
|
30
|
+
res = Kut::Library::PinsParser.parse(PINS_FILE)
|
31
|
+
assert(res.reference == 'DA')
|
32
|
+
assert(res.names == ['NAME1', 'NAME2', 'NONAME'], 'Names mismatch.')
|
33
|
+
assert(res.other_pins == [['VCC', '1'], ['GND', '2']])
|
34
|
+
assert(res.top_pins == [['3PIN', '3'], nil, ['4PIN', '4']])
|
35
|
+
assert(res.left_pins == [['5PIN', '5']])
|
36
|
+
assert(res.right_pins == [['6PIN', '6']])
|
37
|
+
assert(res.bottom_pins == [['S23PIN', 'S23'], ['S1PIN', 'S1']])
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/test/point_test.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'kut/misc/point'
|
3
|
+
|
4
|
+
class Point_Test < Test::Unit::TestCase
|
5
|
+
def test_compare
|
6
|
+
assert(true, Point[1,2] == Point[1, 2])
|
7
|
+
assert(true, Point[1,2] != Point[2, 2])
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_sum
|
11
|
+
assert(true, Point[-1,2] == (Point[0, 3] + Point[-1, -1]))
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_sub
|
15
|
+
assert(true, Point[1,4] == (Point[0, 3] - Point[-1, -1]))
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kut
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexey Pavlyukov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-09-24 00:00:00 +04:00
|
13
|
+
default_executable: kut
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: lexaficus@list.ru
|
18
|
+
executables:
|
19
|
+
- kut
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- examples/net_list
|
26
|
+
- examples/net_list/print_cmp_list.rb
|
27
|
+
- examples/pins
|
28
|
+
- examples/pins/jm20330.pins
|
29
|
+
- examples/pins/AT32UC3A0512.pins
|
30
|
+
- examples/pins/EMP7464S_TQFP100.pins
|
31
|
+
- examples/pins/ata40conn.pins
|
32
|
+
- examples/pins/A3P1000_PQFP208.pins
|
33
|
+
- examples/pins/full_sata.pins
|
34
|
+
- examples/example_helper.rb
|
35
|
+
- lib/kut.rb
|
36
|
+
- lib/kut
|
37
|
+
- lib/kut/application.rb
|
38
|
+
- lib/kut/eeschema
|
39
|
+
- lib/kut/eeschema/wire.rb
|
40
|
+
- lib/kut/net_list
|
41
|
+
- lib/kut/net_list/concept.rb
|
42
|
+
- lib/kut/net_list/kicad.rb
|
43
|
+
- lib/kut/net_list/pcad.rb
|
44
|
+
- lib/kut/misc
|
45
|
+
- lib/kut/misc/matrix.rb
|
46
|
+
- lib/kut/misc/point.rb
|
47
|
+
- lib/kut/misc/rectangle.rb
|
48
|
+
- lib/kut/kut_module.rb
|
49
|
+
- lib/kut/tests
|
50
|
+
- lib/kut/tests/Rakefile.rb
|
51
|
+
- lib/kut/tests/rectangle.rb
|
52
|
+
- lib/kut/commands
|
53
|
+
- lib/kut/commands/gost
|
54
|
+
- lib/kut/commands/gost/bom2el_list.rb
|
55
|
+
- lib/kut/commands/help-cmd.rb
|
56
|
+
- lib/kut/commands/lib-gen-cmd.rb
|
57
|
+
- lib/kut/commands/net_list2bom.rb
|
58
|
+
- lib/kut/library
|
59
|
+
- lib/kut/library/pins_reader.rb
|
60
|
+
- lib/kut/library/components.rb
|
61
|
+
- lib/kut/library/regexp.rb
|
62
|
+
- lib/kut/library/generator
|
63
|
+
- lib/kut/library/generator/simple.rb
|
64
|
+
- lib/kut/library/generator/default.rb
|
65
|
+
- lib/kut/library/generator/gost-con.rb
|
66
|
+
- lib/kut/library/generator.rb
|
67
|
+
- Rakefile.rb
|
68
|
+
- doc-src/PINS.rdoc
|
69
|
+
- ./README.rdoc
|
70
|
+
- ./LICENSE.rdoc
|
71
|
+
has_rdoc: false
|
72
|
+
homepage:
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options:
|
75
|
+
- --charset=utf-8
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: "0"
|
83
|
+
version:
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: "0"
|
89
|
+
version:
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 1.3.1
|
94
|
+
signing_key:
|
95
|
+
specification_version: 2
|
96
|
+
summary: KiCAD utils & tools for generation, manipulation KiCAD files.
|
97
|
+
test_files:
|
98
|
+
- test/library_cmp_pin_test.rb
|
99
|
+
- test/library_pins_reader_test.rb
|
100
|
+
- test/point_test.rb
|