goat 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/goat.rb +35 -12
- metadata +4 -4
data/lib/goat.rb
CHANGED
@@ -589,7 +589,7 @@ module Goat
|
|
589
589
|
id = req['_id']
|
590
590
|
pg = active_pages[id]
|
591
591
|
|
592
|
-
|
592
|
+
active_page_gc # we do GC here since a slight delay in opening channel is better than in loading page
|
593
593
|
|
594
594
|
if pg
|
595
595
|
pg.mark_alive!
|
@@ -623,7 +623,12 @@ module Goat
|
|
623
623
|
if pg
|
624
624
|
comp = pg.components.detect{|x| x.id == compid}
|
625
625
|
Logger.error :req, "Couldn't find component #{compid.inspect}" unless comp
|
626
|
-
|
626
|
+
|
627
|
+
if comp
|
628
|
+
yield comp
|
629
|
+
else
|
630
|
+
respond_failed
|
631
|
+
end
|
627
632
|
else
|
628
633
|
Logger.error(:req, "Couldn't find page #{id}")
|
629
634
|
|
@@ -778,15 +783,15 @@ module Goat
|
|
778
783
|
app.class.add_active_page(pg)
|
779
784
|
resp = pg.response
|
780
785
|
|
781
|
-
app.class.active_page_gc
|
786
|
+
# app.class.active_page_gc
|
782
787
|
|
783
788
|
action_hashes = 0
|
784
789
|
|
785
790
|
ObjectSpace.each_object do |obj|
|
786
791
|
if obj.kind_of?(Page) && obj.class != Class
|
787
|
-
puts "Page: #{obj.glimpse}"
|
792
|
+
#puts "Page: #{obj.glimpse}"
|
788
793
|
elsif obj.kind_of?(Component) && obj.class != Class
|
789
|
-
puts "Component: #{obj.glimpse}"
|
794
|
+
#puts "Component: #{obj.glimpse}"
|
790
795
|
elsif obj.kind_of?(ActionProc) && obj.class != Class
|
791
796
|
action_hashes += 1
|
792
797
|
end
|
@@ -805,7 +810,7 @@ module Goat
|
|
805
810
|
@params = IndifferentHash.from_hash(request.params)
|
806
811
|
end
|
807
812
|
|
808
|
-
def components; @canvas.
|
813
|
+
def components; @canvas.all_components; end
|
809
814
|
|
810
815
|
def empty_response
|
811
816
|
Rack::Response.new
|
@@ -855,10 +860,8 @@ module Goat
|
|
855
860
|
comp_classes
|
856
861
|
end
|
857
862
|
|
858
|
-
def
|
859
|
-
cs = all_component_classes.to_a
|
860
|
-
Goat.setting(:press) && Goat::Static.pressed?(cls)
|
861
|
-
end
|
863
|
+
def ordered_component_classes
|
864
|
+
cs = all_component_classes.to_a
|
862
865
|
|
863
866
|
i = 0
|
864
867
|
# invariant: left of i has no superclasses to right
|
@@ -872,6 +875,18 @@ module Goat
|
|
872
875
|
end
|
873
876
|
end
|
874
877
|
|
878
|
+
cs
|
879
|
+
end
|
880
|
+
|
881
|
+
def unpressed_component_classes
|
882
|
+
ordered_component_classes.to_a.reject do |cls|
|
883
|
+
Goat.setting(:press) && Goat::Static.pressed?(cls)
|
884
|
+
end
|
885
|
+
end
|
886
|
+
|
887
|
+
def script
|
888
|
+
cs = unpressed_component_classes
|
889
|
+
|
875
890
|
[
|
876
891
|
cs.map(&:__script),
|
877
892
|
@canvas.all_components.select{|c| c.class.wired?}.map(&:wire_script),
|
@@ -880,7 +895,7 @@ module Goat
|
|
880
895
|
end
|
881
896
|
|
882
897
|
def style
|
883
|
-
|
898
|
+
unpressed_component_classes.select(&:__css).map(&:scoped_css).join
|
884
899
|
end
|
885
900
|
end
|
886
901
|
|
@@ -1061,8 +1076,16 @@ module Goat
|
|
1061
1076
|
App.send(:define_method, "rpc_#{name}", blk)
|
1062
1077
|
end
|
1063
1078
|
|
1079
|
+
def component_name_hierarchy(cls=self.class)
|
1080
|
+
if cls == Component
|
1081
|
+
[]
|
1082
|
+
else
|
1083
|
+
component_name_hierarchy(cls.superclass) + [cls.name]
|
1084
|
+
end
|
1085
|
+
end
|
1086
|
+
|
1064
1087
|
def component(body)
|
1065
|
-
[:div, {:id => id, :class =>
|
1088
|
+
[:div, {:id => id, :class => component_name_hierarchy.join(' ')}, body]
|
1066
1089
|
end
|
1067
1090
|
|
1068
1091
|
def html; make_me; end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Patrick Collison
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-22 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|