loquat 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *ignore*
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in loquat.gemspec
4
+ gemspec
5
+
6
+ if RUBY_VERSION < "1.9"
7
+ gem "wxruby", :require => "wx"
8
+ elsif RUBY_VERSION >= "1.9"
9
+ gem "wxruby-ruby19", :require => "wx"
10
+ end
data/README ADDED
@@ -0,0 +1,15 @@
1
+ * About
2
+
3
+ wxruby script から exe への変換をサポート
4
+ exerb が必要
5
+ exerb で exe に変換する際に問題となる gem 利用を程度解決
6
+ GUI実行時のDOS画面非表示化
7
+ Exception 発生時に再表示
8
+
9
+ * About
10
+
11
+ Supports conversion from wxruby script to exe
12
+ Need exerb
13
+ solve a problem about the use of gem when converting to exe by exerb
14
+ Hiding the DOS window when running GUI
15
+ Reappear when an Exception
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/loquat ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "loquat/cli"
data/lib/loquat/bat.rb ADDED
@@ -0,0 +1,47 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require 'tempfile'
4
+ require 'kconv'
5
+
6
+ module Bat extend self
7
+ def exec(src, &block)
8
+ file, line = *caller(1)[0].match(/(.+):(\d+)/).to_a[1..-1]
9
+ file = File.expand_path(file)
10
+ line = line.to_i + 1
11
+
12
+ # 全部の行に、エラーだったら終了するよう処理を追加
13
+ next_noerror = false
14
+ src_map = src.each_line.with_index.map do |s,i|
15
+ if s.match(/^\s$/)
16
+ s
17
+ elsif s.match(/^\s*(rem\s+|::)skip_error/)
18
+ next_noerror = true
19
+ s
20
+ elsif next_noerror
21
+ next_noerror = false
22
+ s
23
+ else
24
+ ret = <<-EOSA
25
+ #{s}
26
+ @if %errorlevel% == 9009 if NOT "%no_error_break%" == "1" echo You do not have #{s.match(/\w+/).to_a[0]} in your PATH. && exit
27
+ @if errorlevel 1 if NOT "%no_error_break%" == "1" echo #{file}(#{line + i}): #{s.gsub("\n", "").gsub(/\&/, "\\&")} && echo if you write comment ** "::skip_error" or "rem skip_error" ** to not error stop && exit
28
+ @set error_no_break=0
29
+ EOSA
30
+ end
31
+ end
32
+ src = src_map.join
33
+ Tempfile.open(["", ".bat"]) do |f|
34
+ f.puts src.tosjis
35
+ f.close
36
+ system("#{f.path} 2>&1")
37
+ end
38
+ end
39
+ end
40
+
41
+ if __FILE__ == $0
42
+ Bat.exec <<-'EOS'
43
+ rem @echo off
44
+ cd L:\Work\MG3710IQPro\Develop
45
+ dir
46
+ EOS
47
+ end
@@ -0,0 +1,54 @@
1
+ #!ruby -Ku
2
+ # -*- encoding: UTF-8 -*-
3
+
4
+ require 'Win32API' #exerb に含ませる必要がある
5
+
6
+ # gui向けに画面を消去
7
+ # http://loquat-wxruby.blogspot.com/2011/10/ruby-gui.html
8
+ get_console_window = Win32API.new("kernel32" , "GetConsoleWindow" , [] , 'L')
9
+ show_window = Win32API.new( "user32" , "ShowWindow" , ['p' , 'i'] , 'i' )
10
+ hwnd = get_console_window.call()
11
+
12
+ # 実際に消去するのは exe 化されている時だけ
13
+ show_window.call( hwnd , 0 ) if $Exerb
14
+
15
+ # 単体実行のためのファイル
16
+
17
+ # mkexy 向け処理
18
+ # ファイルフルパス指定しているgemがいると、mkexy で作成されるレシピファイルで問題になる
19
+ module Kernel
20
+ alias require_old require
21
+ def require(path)
22
+ new_path = path
23
+ if $Exerb
24
+ return if !path or path.match(/rubygems/) # exerb での実行時は rubygems 使わない
25
+
26
+ # フルパス変換してrequireしている gems 用に、exerbパスになるよう置換
27
+ new_path = new_path.gsub(File.dirname(ExerbRuntime.filepath), "")
28
+ new_path = new_path.gsub(Dir.pwd + "/", "")
29
+ new_path = new_path.gsub("./", "")
30
+ else
31
+ new_path = path.gsub(/c:.*\/1\.8\/gems\/.*lib\//i, "")
32
+ end
33
+
34
+ # 置換された場合の確認処理( デバッグ用 )
35
+ # p [new_path, path] if path != new_path
36
+
37
+ # 実際の require 処理
38
+ require_old new_path
39
+ end
40
+ end
41
+
42
+ # 不正落ちした場合には、画面を再度表示してエラーメッセージを確認できるようにする
43
+ begin
44
+ require "<%=src%>"
45
+ rescue Exception
46
+ puts $!.message
47
+ puts $!.backtrace
48
+ if $Exerb
49
+ show_window.call( hwnd , 1 )
50
+ puts ""
51
+ puts "press eny key to continue"
52
+ $stdin.gets
53
+ end
54
+ end
data/lib/loquat/cli.rb ADDED
@@ -0,0 +1,40 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require "rubygems"
4
+ require "thor"
5
+ require "loquat/bat"
6
+ require "yaml"
7
+ require "fileutils"
8
+ require "erb"
9
+
10
+ class LoquatCli < Thor
11
+ namespace :loquat
12
+
13
+ desc "build src", "exe化"
14
+ def build(src)
15
+ # *.rb と同名の * ファイルを作成し、そこから起動する。
16
+ # example.rb => example, example.exy
17
+ # 同名の * ファイルの中身は起動に必要な処理
18
+ exy = src.sub(/\..*/, ".exy")
19
+ boot = src.sub(/\..*/, "")
20
+
21
+ boot_src = File.expand_path( File.join(__FILE__, "..", "boot.erb") )
22
+ open(boot, "w"){ |f| f.print ERB.new(IO.read(boot_src)).result(binding) }
23
+
24
+ Bat.exec <<-EOS
25
+ call mkexy #{boot} #{src}
26
+ call loquat execlude_rubygems #{exy}
27
+ call exerb #{exy}
28
+ del #{boot}
29
+ EOS
30
+ end
31
+
32
+ desc "execlude_rubygems", "exy ファイルから rubygems 関連のファイルを抜く"
33
+ def execlude_rubygems(exy)
34
+ h = YAML.load_file exy
35
+ h["file"].reject!{|k,v| k.match(/^rubygems/) }
36
+ open(exy,"w"){|f| f.print YAML.dump(h) }
37
+ end
38
+ end
39
+
40
+ LoquatCli.start
@@ -0,0 +1,3 @@
1
+ module Loquat
2
+ VERSION = "0.0.1"
3
+ end
data/lib/loquat/wx.rb ADDED
@@ -0,0 +1,71 @@
1
+ # -*- encoding: UTF-8 -*-
2
+ # exerb で実行ファイル作成する場合、すべてのファイルを直接指定する必要がある。
3
+ require 'wx'
4
+
5
+ require 'wx/classes/evthandler.rb'
6
+ require 'wx/classes/acceleratortable.rb'
7
+ require 'wx/classes/animation.rb'
8
+ require 'wx/classes/app.rb'
9
+ require 'wx/classes/artprovider.rb'
10
+ require 'wx/classes/auinotebook.rb'
11
+ require 'wx/classes/bitmap.rb'
12
+ require 'wx/classes/busycursor.rb'
13
+ require 'wx/classes/checklistbox.rb'
14
+ require 'wx/classes/choice.rb'
15
+ require 'wx/classes/clientdc.rb'
16
+ require 'wx/classes/clipboard.rb'
17
+ require 'wx/classes/colour.rb'
18
+ require 'wx/classes/combobox.rb'
19
+ require 'wx/classes/commandevent.rb'
20
+ require 'wx/classes/controlwithitems.rb'
21
+ require 'wx/classes/dataformat.rb'
22
+ require 'wx/classes/data_object.rb'
23
+ require 'wx/classes/data_object_simple.rb'
24
+ require 'wx/classes/dc.rb'
25
+ require 'wx/classes/event.rb'
26
+ require 'wx/classes/evthandler.rb'
27
+ require 'wx/classes/font.rb'
28
+ require 'wx/classes/functions.rb'
29
+ require 'wx/classes/gauge.rb'
30
+ require 'wx/classes/genericdirctrl.rb'
31
+ require 'wx/classes/grid.rb'
32
+ require 'wx/classes/hboxsizer.rb'
33
+ require 'wx/classes/helpcontroller.rb'
34
+ require 'wx/classes/helpcontrollerhelpprovider.rb'
35
+ require 'wx/classes/helpprovider.rb'
36
+ require 'wx/classes/htmlhelpcontroller.rb'
37
+ require 'wx/classes/htmlwindow.rb'
38
+ require 'wx/classes/icon.rb'
39
+ require 'wx/classes/iconbundle.rb'
40
+ require 'wx/classes/image.rb'
41
+ require 'wx/classes/imagelist.rb'
42
+ require 'wx/classes/listbox.rb'
43
+ require 'wx/classes/listctrl.rb'
44
+ require 'wx/classes/locale.rb'
45
+ require 'wx/classes/mediactrl.rb'
46
+ require 'wx/classes/menu.rb'
47
+ require 'wx/classes/menuitem.rb'
48
+ require 'wx/classes/notebook.rb'
49
+ require 'wx/classes/object.rb'
50
+ require 'wx/classes/paintdc.rb'
51
+ require 'wx/classes/point.rb'
52
+ require 'wx/classes/previewframe.rb'
53
+ require 'wx/classes/rect.rb'
54
+ require 'wx/classes/richtextctrl.rb'
55
+ require 'wx/classes/simplehelpprovider.rb'
56
+ require 'wx/classes/size.rb'
57
+ require 'wx/classes/sizer.rb'
58
+ require 'wx/classes/sound.rb'
59
+ require 'wx/classes/splitterwindow.rb'
60
+ require 'wx/classes/standardpaths.rb'
61
+ require 'wx/classes/styledtextctrl.rb'
62
+ require 'wx/classes/textctrl.rb'
63
+ require 'wx/classes/texturlevent.rb'
64
+ require 'wx/classes/timer.rb'
65
+ require 'wx/classes/toolbar.rb'
66
+ require 'wx/classes/toolbartool.rb'
67
+ require 'wx/classes/treectrl.rb'
68
+ require 'wx/classes/validator.rb'
69
+ require 'wx/classes/vboxsizer.rb'
70
+ require 'wx/classes/window.rb'
71
+ require 'wx/classes/xmlresource.rb'
data/lib/loquat.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "loquat/version"
2
+ require "loquat/wx"
3
+ module Loquat
4
+ # Your code goes here...
5
+ end
data/loquat.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "loquat/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "loquat"
7
+ s.version = Loquat::VERSION
8
+ s.authors = ["drvo"]
9
+ s.email = ["drvo.gm@gmail.com"]
10
+ s.homepage = "http://www35150u.sakura.ne.jp/redmine/projects/loquat"
11
+ s.summary = %q{Supports conversion from wxruby script to exe}
12
+ s.description = <<EOS
13
+ wxruby script から exe への変換をサポート
14
+ exerb が必要
15
+ exerb で exe に変換する際に問題となる gem 利用を程度解決
16
+ GUI実行時のDOS画面非表示化
17
+ Exception 発生時に再表示
18
+
19
+ Supports conversion from wxruby script to exe
20
+ Need exerb
21
+ solve a problem about the use of gem when converting to exe by exerb
22
+ Hiding the DOS window when running GUI
23
+ Reappear when an Exception
24
+ EOS
25
+
26
+ s.rubyforge_project = "loquat"
27
+
28
+ s.files = `git ls-files`.split("\n")
29
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
30
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
31
+ s.require_paths = ["lib"]
32
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: loquat
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - drvo
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-11-22 00:00:00 +09:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: !binary |
23
+ d3hydWJ5IHNjcmlwdCDjgYvjgokgZXhlIOOBuOOBruWkieaPm+OCkuOCteOD
24
+ neODvOODiApleGVyYiDjgYzlv4XopoEKZXhlcmIg44GnIGV4ZSDjgavlpInm
25
+ j5vjgZnjgovpmpvjgavllY/poYzjgajjgarjgosgZ2VtIOWIqeeUqOOCkueo
26
+ i+W6puino+axugpHVUnlrp/ooYzmmYLjga5ET1PnlLvpnaLpnZ7ooajnpLrl
27
+ jJYKRXhjZXB0aW9uIOeZuueUn+aZguOBq+WGjeihqOekugoKU3VwcG9ydHMg
28
+ Y29udmVyc2lvbiBmcm9tIHd4cnVieSBzY3JpcHQgdG8gZXhlCk5lZWQgZXhl
29
+ cmIKc29sdmUgYSBwcm9ibGVtIGFib3V0IHRoZSB1c2Ugb2YgZ2VtIHdoZW4g
30
+ Y29udmVydGluZyB0byBleGUgYnkgZXhlcmIKSGlkaW5nIHRoZSBET1Mgd2lu
31
+ ZG93IHdoZW4gcnVubmluZyBHVUkKUmVhcHBlYXIgd2hlbiBhbiBFeGNlcHRp
32
+ b24K
33
+
34
+ email:
35
+ - drvo.gm@gmail.com
36
+ executables:
37
+ - loquat
38
+ extensions: []
39
+
40
+ extra_rdoc_files: []
41
+
42
+ files:
43
+ - .gitignore
44
+ - Gemfile
45
+ - README
46
+ - Rakefile
47
+ - bin/loquat
48
+ - lib/loquat.rb
49
+ - lib/loquat/bat.rb
50
+ - lib/loquat/boot.erb
51
+ - lib/loquat/cli.rb
52
+ - lib/loquat/version.rb
53
+ - lib/loquat/wx.rb
54
+ - loquat.gemspec
55
+ has_rdoc: true
56
+ homepage: http://www35150u.sakura.ne.jp/redmine/projects/loquat
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options: []
61
+
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ requirements: []
83
+
84
+ rubyforge_project: loquat
85
+ rubygems_version: 1.6.2
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: Supports conversion from wxruby script to exe
89
+ test_files: []
90
+