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 (88 lines) | stat: -rwxr-xr-x 1,176 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env ruby

types = %w[
AboutDialog
AccelGroup
Application
ApplicationWindow
Assistant
Box
Builder
Button
CellRendererText
CellRendererToggle
CheckButton
CheckMenuItem
ComboBox
ComboBoxText
CssProvider
Dialog
Entry
FileChooserDialog
Grid
InfoBar
Label
ListStore
Menu
MenuBar
MenuItem
MessageDialog
Notebook
Revealer
ScrolledWindow
SeparatorMenuItem
TextBuffer
TextIter
TextTag
TextTagTable
TextView
TreeIter
TreePath
TreeStore
TreeView
Widget
Window
]

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"
  File.open(fname, "w") do |ff|
    ff.puts <<METH
package gtka

import (
	"github.com/gotk3/gotk3/gtk"
	"github.com/twstrike/gotk3adapter/gtki"
)

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

func wrap#{ tp }(v *gtk.#{ tp }, e error) (*#{ lower }, error) {
	if v == nil {
		return nil, e
	}
	return &#{ lower }{v}, e
}

func unwrap#{ tp }(v gtki.#{ tp }) *gtk.#{ tp } {
	if v == nil {
		return nil
	}
	return v.(*#{ lower }).#{ tp }
}
METH
  end
end