File: gen.rb

package info (click to toggle)
golang-github-twstrike-gotk3adapter 0.0~git20170505.0.901a95d%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,232 kB
  • sloc: ruby: 478; makefile: 4
file content (69 lines) | stat: -rwxr-xr-x 1,099 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env ruby

types = %w[
  Event
  EventButton
  Pixbuf
  PixbufLoader
  Screen
]

exportedWrap = {}
exportedUnwrap = {
  "Screen" => true,
  "Pixbuf" => true
}

class String
  def underscore
    self.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
  end
end

types.each do |tp|
  lower = tp[0].downcase + tp[1..-1]
  fname = "#{tp.underscore}.go"
  prefix1 = if exportedWrap[tp]
             "W"
           else
             "w"
           end
  prefix2 = if exportedUnwrap[tp]
             "U"
           else
             "u"
           end

  File.open(fname, "w") do |ff|
    ff.puts <<METH
package gdka

import (
	"github.com/gotk3/gotk3/gdk"
	"github.com/twstrike/gotk3adapter/gdki"
)

type #{ lower } struct {
	*gdk.#{ tp }
}

func #{prefix1}rap#{ tp }(v *gdk.#{ tp }, e error) (*#{ lower }, error) {
	if v == nil {
		return nil, e
	}
	return &#{ lower }{v}, e
}

func #{prefix2}nwrap#{ tp }(v gdki.#{ tp }) *gdk.#{ tp } {
	if v == nil {
		return nil
	}
	return v.(*#{ lower }).#{ tp }
}
METH
  end
end