fxruby-enhancement 0.0.2
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 +7 -0
- data/.document +5 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/.semver +6 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +131 -0
- data/LICENSE.txt +20 -0
- data/README.org +861 -0
- data/Rakefile +68 -0
- data/build/scrape-rdoc.rb +120 -0
- data/examples/.ruby-version +1 -0
- data/examples/bounce.rb +158 -0
- data/examples/hello.rb +33 -0
- data/fxruby-enhancement.gemspec +112 -0
- data/lib/fxruby-enhancement.rb +12 -0
- data/lib/fxruby-enhancement/api-mapper.rb +11034 -0
- data/lib/fxruby-enhancement/api-mapper.rb.erb +93 -0
- data/lib/fxruby-enhancement/core-monkey.rb +26 -0
- data/lib/fxruby-enhancement/enhancement.rb +145 -0
- data/lib/fxruby-enhancement/ostruct-monkey.rb +38 -0
- data/spec/fxruby-enhancement_spec.rb +57 -0
- data/spec/spec_helper.rb +19 -0
- metadata +319 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
=begin rdoc
|
3
|
+
This is the detailed mapper constructs for
|
4
|
+
FXRuby.
|
5
|
+
|
6
|
+
== Internal Docs
|
7
|
+
Note that normally you should not need to know these details.
|
8
|
+
|
9
|
+
=== Excution Flow
|
10
|
+
when you declare fx_app and all the nested delacrations,
|
11
|
+
they are initially noted in a tree of OS (OpenStruct) objects,
|
12
|
+
and then later the actual underlying FXRuby (and subsequently,
|
13
|
+
FOX Objects) are created. At this point the resultant objects
|
14
|
+
are plugged into the OS objects so they can be referenced.
|
15
|
+
|
16
|
+
So there are 3 phases:
|
17
|
+
# Construction of the OS tree (through your declaractions)
|
18
|
+
# Construction of the FXRuby objects
|
19
|
+
# Construction of the underlying FOX Objects at activation time.
|
20
|
+
|
21
|
+
A stack-based method is used to keep track of all of this during
|
22
|
+
the construction of the OS tree.
|
23
|
+
|
24
|
+
=== Issues
|
25
|
+
For many FOX / FXRuby operations, you will need the FXApp object.
|
26
|
+
If you used full composition (via fx_app), the base object will be
|
27
|
+
the FXApp object. If, on the other hand, you used compose inside
|
28
|
+
of a declared FXRuby-derived class, base will be set to the first
|
29
|
+
declared component.
|
30
|
+
|
31
|
+
Normally this is not a problem, unless you use ingress_handler,
|
32
|
+
in which case it will not know how to find the FXApp object.
|
33
|
+
|
34
|
+
=== Conventions
|
35
|
+
* pos -- Parent OpenStruct object
|
36
|
+
|
37
|
+
== NOTE WELL
|
38
|
+
This file is generated by fxruby-enhancement.
|
39
|
+
Do NOT modify this file. Modify the ERB template
|
40
|
+
file instead, and run 'rake scrape'.
|
41
|
+
=end
|
42
|
+
|
43
|
+
module Fox
|
44
|
+
<% for @class, @details in @api %>
|
45
|
+
class <%= @class %>
|
46
|
+
include Enhancement
|
47
|
+
attr_accessor :_o
|
48
|
+
end
|
49
|
+
<% end %>
|
50
|
+
module Enhancement
|
51
|
+
module Mapper
|
52
|
+
<% for @class, @details in @api %>
|
53
|
+
def <%= @class.snake %> name = nil, ii: <%= (Fox::Enhancement::INITFORCE.member? @class) ? Fox::Enhancement::INITFORCE[@class] : 0 %>, pos: Enhancement.stack.last, &block
|
54
|
+
Enhancement.stack << (@os = os = OpenStruct.new(klass: <%= @class %>, op: [], ii: ii, fx: nil, kinder: [], inst: nil, instance_result: nil))
|
55
|
+
Enhancement.components[name] = os unless name.nil?
|
56
|
+
unless pos.nil?
|
57
|
+
pos.kinder << os
|
58
|
+
else
|
59
|
+
Enhancement.base = os
|
60
|
+
end
|
61
|
+
<% @i=0 %>
|
62
|
+
<% for @iniparams in @details[:initialize].compact %>
|
63
|
+
<%= "@os.op[#{@i}]" %> = OpenStruct.new({<%= @iniparams.map{ |p,d| [p, d ? d : ":required"] }
|
64
|
+
.map{ |p,d| ":#{p} => #{d}"}
|
65
|
+
.join(', ') %>})
|
66
|
+
<% for @param, @default in @iniparams %>
|
67
|
+
def <%= "#{@param.snake}" %> var; @os.op[@os.ii].<%= "#{@param}" %> = var; end
|
68
|
+
<% end %>
|
69
|
+
def instance a=nil, &block
|
70
|
+
@os.instance_name = a
|
71
|
+
@os.instance_block = block
|
72
|
+
end
|
73
|
+
<% @i+=1; end unless @details[:initialize].nil? %>
|
74
|
+
self.instance_eval &block
|
75
|
+
<% unless Fox::Enhancement::SPECIAL.member? @class %>
|
76
|
+
os.fx = ->(){ <%= @class %>.new(*([pos.inst] + os.op[os.ii].to_h.values[1..-1])) }
|
77
|
+
<% else %>
|
78
|
+
os.fx = ->(){ <%= @class %>.new(*(os.op[os.ii].to_h.values)) }
|
79
|
+
<% end %>
|
80
|
+
Enhancement.stack.pop
|
81
|
+
@os = Enhancement.stack.last
|
82
|
+
os
|
83
|
+
end
|
84
|
+
<% end %>
|
85
|
+
end
|
86
|
+
<% for @select, @meth, @comment in @sel %>
|
87
|
+
# <%= @comment %>
|
88
|
+
def <%= @select.downcase %>(&block)
|
89
|
+
self.connect(<%= @select %>, &block)
|
90
|
+
end
|
91
|
+
<% end %>
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
= Core (Kernel) classes we monkeypatched.
|
3
|
+
=end
|
4
|
+
|
5
|
+
class String
|
6
|
+
def snake
|
7
|
+
self.gsub(/::/, '/')
|
8
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
9
|
+
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
|
10
|
+
.tr("-", "_")
|
11
|
+
.downcase
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Symbol
|
16
|
+
def snake
|
17
|
+
self.to_s.snake.to_sym
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class Binding
|
22
|
+
def fx fxf, dir=File.dirname(self.eval("__FILE__"))
|
23
|
+
filepath = File.expand_path("#{fxf}.fx", dir)
|
24
|
+
self.eval(File.read(filepath), filepath)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Fox
|
3
|
+
|
4
|
+
# Include this in your top class objects.
|
5
|
+
# If for a module, you want to extend, rather
|
6
|
+
# than include.
|
7
|
+
# FIXME: later we will clean this up.
|
8
|
+
module Enhancement
|
9
|
+
@stack = []
|
10
|
+
@base = nil
|
11
|
+
@components = {}
|
12
|
+
SPECIAL = [:FXApp,
|
13
|
+
:FXColorItem,
|
14
|
+
:FXRegion,
|
15
|
+
:FXRectangle,
|
16
|
+
:FXGradient,
|
17
|
+
:FXEvent,
|
18
|
+
:FXFileStream,
|
19
|
+
:FXExtentd]
|
20
|
+
INITFORCE = { FXMenuBar: 1 }
|
21
|
+
|
22
|
+
# Module-level
|
23
|
+
class << self
|
24
|
+
attr_accessor :stack,
|
25
|
+
:base, # the very first component declared, usually the app.
|
26
|
+
:components,
|
27
|
+
:deferred_setups,
|
28
|
+
:ms_ingress_delay_min,
|
29
|
+
:ms_ingress_delay_max
|
30
|
+
|
31
|
+
# queues for messages objects coming from and going to other threads.
|
32
|
+
attr_accessor :ingress, :egress, :ingress_map
|
33
|
+
|
34
|
+
def included(klass)
|
35
|
+
@ingress ||= QDing.new
|
36
|
+
@egress ||= QDing.new
|
37
|
+
@ingress_map ||= {}
|
38
|
+
@deferred_setups ||= []
|
39
|
+
@ms_ingress_delay_min = 100
|
40
|
+
@ms_ingress_delay_max = 1600
|
41
|
+
|
42
|
+
klass.extend ClassMethods
|
43
|
+
end
|
44
|
+
|
45
|
+
def reset_components
|
46
|
+
@components = {}
|
47
|
+
end
|
48
|
+
|
49
|
+
# Sets up the mechanism by which the custom ingress is activated
|
50
|
+
def activate_ingress_handlers app = Enhancement.base
|
51
|
+
raise "Application Object not instantiated yet" if app.nil? || app.inst.nil?
|
52
|
+
raise "No ingress blocks set" if @ingress_map.empty?
|
53
|
+
|
54
|
+
@ing_blk = ->(sender, sel, data) {
|
55
|
+
begin
|
56
|
+
unless @ingress.empty?
|
57
|
+
@ingress_delay = @ms_ingress_delay_min
|
58
|
+
until @ingress.empty?
|
59
|
+
dispatch_to, payload = @ingress.next
|
60
|
+
raise "Unknown dispatch #{dispatch_to}" unless @ingress_map.member? dispatch_to
|
61
|
+
@ingress_map[dispatch_to].(dispatch_to, payload)
|
62
|
+
end
|
63
|
+
else
|
64
|
+
@ingress_delay *= 2 unless @ingress_delay >= @ms_ingress_delay_max
|
65
|
+
end
|
66
|
+
ensure
|
67
|
+
app.inst.addTimeout(@ingress_delay, &@ing_blk)
|
68
|
+
end
|
69
|
+
}
|
70
|
+
app.inst.addTimeout(@ingress_delay ||= @ms_ingress_delay_min, &@ing_blk)
|
71
|
+
end
|
72
|
+
|
73
|
+
def activate_deferred_setups common_ob, app: Enhancement.base
|
74
|
+
Enhancement.deferred_setups.each { |b| b.(common_ob, app) }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# class level
|
79
|
+
module ClassMethods
|
80
|
+
def compose &block #DSL
|
81
|
+
@composure = block
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# instance level
|
86
|
+
# Add it here.
|
87
|
+
|
88
|
+
module Mapper
|
89
|
+
# Find the referenced component's instance
|
90
|
+
def ref sym, &block
|
91
|
+
raise "No reference for #{sym} found" if Enhancement.components[sym].nil?
|
92
|
+
raise "No instance for #{sym} allocated" if Enhancement.components[sym].inst.nil?
|
93
|
+
inst = Enhancement.components[sym].inst
|
94
|
+
if block_given?
|
95
|
+
block.(inst)
|
96
|
+
end
|
97
|
+
return inst
|
98
|
+
end
|
99
|
+
|
100
|
+
# Find the referenced component's wrapper object
|
101
|
+
def refc sym, &block
|
102
|
+
raise "No reference component for #{sym} found" if Enhancement.components[sym].nil?
|
103
|
+
c = Enhancement.components[sym]
|
104
|
+
if block_given?
|
105
|
+
block.(c)
|
106
|
+
end
|
107
|
+
return c
|
108
|
+
end
|
109
|
+
|
110
|
+
# Wrapper component
|
111
|
+
def fox_component name, &block
|
112
|
+
if block_given?
|
113
|
+
block.(Enhancement.components[name])
|
114
|
+
else
|
115
|
+
Enhancement.components[name]
|
116
|
+
end
|
117
|
+
end
|
118
|
+
alias_method :fxc, :fox_component
|
119
|
+
|
120
|
+
# Actual FX Object instance
|
121
|
+
def fox_instance name, &block
|
122
|
+
if block_given?
|
123
|
+
block.(fox_component(name).inst)
|
124
|
+
else
|
125
|
+
fox_component(name).inst
|
126
|
+
end
|
127
|
+
end
|
128
|
+
alias_method :fxi, :fox_instance
|
129
|
+
|
130
|
+
# Handles incomming external messages of type given
|
131
|
+
# block, written by user, is called with |type, message|
|
132
|
+
def ingress_handler type = :all, &block
|
133
|
+
Enhancement.ingress_map[type] = block
|
134
|
+
end
|
135
|
+
|
136
|
+
# This is invoked after we have
|
137
|
+
# a real application in place. Invocation
|
138
|
+
# of this is held off until the last possible
|
139
|
+
# moment.
|
140
|
+
def deferred_setup &block
|
141
|
+
Enhancement.deferred_setups << block
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
class OpenStruct
|
3
|
+
extend Forwardable
|
4
|
+
def_delegator :inst, :create, :activate
|
5
|
+
def_delegator :inst, :run, :run_application
|
6
|
+
|
7
|
+
# This assumes this OpenStruct instance represents the base,
|
8
|
+
# and additionaly will take an optional object to use as the
|
9
|
+
# actual base to allow for composures.
|
10
|
+
#
|
11
|
+
# Returns the os base
|
12
|
+
def create_fox_components use_as_base = nil
|
13
|
+
if use_as_base.nil?
|
14
|
+
self.inst = fx.() if self.inst.nil?
|
15
|
+
self.kinder.each{ |os| os.create_fox_components }
|
16
|
+
else
|
17
|
+
OpenStruct.new(klass: use_as_base.class,
|
18
|
+
kinder: [self],
|
19
|
+
fx: ->() {use_as_base}).create_fox_components
|
20
|
+
end
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def instance_final_activate
|
25
|
+
self.instance_result = self.instance_block.(self.inst) unless self.instance_block.nil?
|
26
|
+
self.kinder.each{ |os| os.instance_final_activate }
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
# launch the application
|
31
|
+
def launch ingress: false
|
32
|
+
create_fox_components
|
33
|
+
instance_final_activate
|
34
|
+
activate
|
35
|
+
Enhancement.activate_ingress_handlers self if ingress
|
36
|
+
run_application
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
it "supports snaking on strings" do
|
5
|
+
s = "FXToolBar"
|
6
|
+
expect(s.snake).to eq("fx_tool_bar")
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe Symbol do
|
11
|
+
it "supports snaking on symbols" do
|
12
|
+
s = :FXToolBar
|
13
|
+
expect(s.snake).to eq(:fx_tool_bar)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
include Fox
|
18
|
+
include Fox::Enhancement::Mapper
|
19
|
+
|
20
|
+
describe "DSL" do
|
21
|
+
before :all do
|
22
|
+
@app = fx_app :foobase do
|
23
|
+
app_name "Foo Test"
|
24
|
+
vendor_name "RubyNEAT Spinoff tech"
|
25
|
+
|
26
|
+
@osmw = fx_main_window :main do
|
27
|
+
title "test window"
|
28
|
+
width 700
|
29
|
+
height 300
|
30
|
+
instance :foo_instance do |mw|
|
31
|
+
mw.vSpacing = 2
|
32
|
+
mw.show PLACEMENT_CURSOR
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
instance :app_startup do |app|
|
37
|
+
:mission_accomplished
|
38
|
+
end
|
39
|
+
end
|
40
|
+
@app.create_fox_components
|
41
|
+
@app.instance_final_activate
|
42
|
+
@app.activate
|
43
|
+
end
|
44
|
+
|
45
|
+
it "allows creation of the FXApp and one window" do
|
46
|
+
expect(Fox::Enhancement.base).to_not be_nil
|
47
|
+
expect(Fox::Enhancement.base.klass).to eq Fox::FXApp
|
48
|
+
@app.run_application
|
49
|
+
expect(@app.instance_result).to eq(:mission_accomplished)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "adds the components to the internal registry" do
|
53
|
+
expect(fox_get_instance(:main).class).to eq(Fox::FXMainWindow)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "checks fx_menu_bar :ii defaults to 1 instead of zero"
|
57
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'rspec'
|
5
|
+
require 'fxruby-enhancement'
|
6
|
+
|
7
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.expect_with :rspec do |expectations|
|
11
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
12
|
+
end
|
13
|
+
|
14
|
+
config.mock_with :rspec do |mocks|
|
15
|
+
mocks.verify_partial_doubles = true
|
16
|
+
end
|
17
|
+
|
18
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,319 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fxruby-enhancement
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Fred Mitchell
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-01-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: semver2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fxruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: awesome_print
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.0.2
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '2.0'
|
65
|
+
type: :runtime
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 2.0.2
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '2.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: queue_ding
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rspec
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '3'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: yard
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.7'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0.7'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rdoc
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '5'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '5'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: bundler
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '1.0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '1.0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: juwelier
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '2'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '2'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: simplecov
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: pry
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: pry-byebug
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '3'
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ">="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '3'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: pry-doc
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: pry-remote
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: pry-rescue
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '1'
|
236
|
+
type: :development
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '1'
|
243
|
+
- !ruby/object:Gem::Dependency
|
244
|
+
name: pry-stack_explorer
|
245
|
+
requirement: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0'
|
250
|
+
type: :development
|
251
|
+
prerelease: false
|
252
|
+
version_requirements: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - ">="
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '0'
|
257
|
+
description: "The fxruby library is an excellent wrapper for the FOX toolkit. However,
|
258
|
+
it reflects the\n C++-ness of FOX, rather than being more Ruby-like. As such, creating
|
259
|
+
composed objects with\n it tends to be rather ugly and cumbersome.\n\n fxruby-enhancement
|
260
|
+
is a wrapper for the wrapper, to \"rubyfy\" it and make it more easy to \n use
|
261
|
+
for Rubyists. \n\n fxruby-enhancement is basically a DSL of sorts, and every effort
|
262
|
+
has been taken to make \n it intuitive to use. Once you get the hang of it, you
|
263
|
+
should be able to look at the FXRuby\n API documentation and infer the DSL construct
|
264
|
+
for fxruby-enhancement."
|
265
|
+
email: fred.mitchell@gmx.de
|
266
|
+
executables: []
|
267
|
+
extensions: []
|
268
|
+
extra_rdoc_files:
|
269
|
+
- LICENSE.txt
|
270
|
+
- README.org
|
271
|
+
files:
|
272
|
+
- ".document"
|
273
|
+
- ".gitmodules"
|
274
|
+
- ".rspec"
|
275
|
+
- ".ruby-version"
|
276
|
+
- ".semver"
|
277
|
+
- Gemfile
|
278
|
+
- Gemfile.lock
|
279
|
+
- LICENSE.txt
|
280
|
+
- README.org
|
281
|
+
- Rakefile
|
282
|
+
- build/scrape-rdoc.rb
|
283
|
+
- examples/.ruby-version
|
284
|
+
- examples/bounce.rb
|
285
|
+
- examples/hello.rb
|
286
|
+
- fxruby-enhancement.gemspec
|
287
|
+
- lib/fxruby-enhancement.rb
|
288
|
+
- lib/fxruby-enhancement/api-mapper.rb
|
289
|
+
- lib/fxruby-enhancement/api-mapper.rb.erb
|
290
|
+
- lib/fxruby-enhancement/core-monkey.rb
|
291
|
+
- lib/fxruby-enhancement/enhancement.rb
|
292
|
+
- lib/fxruby-enhancement/ostruct-monkey.rb
|
293
|
+
- spec/fxruby-enhancement_spec.rb
|
294
|
+
- spec/spec_helper.rb
|
295
|
+
homepage: http://github.com/flajann2/fxruby-enhancement
|
296
|
+
licenses:
|
297
|
+
- MIT
|
298
|
+
metadata: {}
|
299
|
+
post_install_message:
|
300
|
+
rdoc_options: []
|
301
|
+
require_paths:
|
302
|
+
- lib
|
303
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
304
|
+
requirements:
|
305
|
+
- - ">="
|
306
|
+
- !ruby/object:Gem::Version
|
307
|
+
version: 2.3.1
|
308
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: '0'
|
313
|
+
requirements: []
|
314
|
+
rubyforge_project:
|
315
|
+
rubygems_version: 2.6.8
|
316
|
+
signing_key:
|
317
|
+
specification_version: 4
|
318
|
+
summary: fxruby enhancements
|
319
|
+
test_files: []
|