fron 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c0e03d014a5bf18112aa1e0e2b30a4c7ec7a882
4
- data.tar.gz: 27d0049100bb53d0f9c837a1af4ce18af24a5e13
3
+ metadata.gz: 3c081b3b50bd27657d9e5f50c8f2b69c6f6b89bc
4
+ data.tar.gz: 3a71ea7cb7e1abfa225686200de85ef0ab5c99ca
5
5
  SHA512:
6
- metadata.gz: 0d734cef0c1d6e98667dea326f803f7bacb92955ab334eefbce18687a2e9cffb285eeb150f8a0a8d00bc70974cda37e29bb6171c7e742a56a9d834f492f3539b
7
- data.tar.gz: 772c38050e98c59879cff8454facc2821bdd12eb5162d450a184e1772e9ade8ddf716747eda73fd135f2d7e20239cdd60afa108c04ec4b8a236eb9670ef65b12
6
+ metadata.gz: 8fb542de4835a8f2a69d285396ed483afdcfc834df4a63bcb902c4be28db1786542253ca6e29ad3a50ae7b94458dfe8cb65121636e1236e47ccf615ae5f1c112
7
+ data.tar.gz: d3c7799e2f0e7da34a820c17b8e104ba5156fd25ab83d6a7a63815dabbd418d5ac4d0163c90ec7c5bcde05807fa8faffd3854b0d57c03427f00ba09caed99389
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fron (0.1.0)
4
+ fron (0.1.1)
5
5
  opal (~> 0.6.2)
6
6
 
7
7
  GEM
@@ -1,3 +1,3 @@
1
1
  module Fron
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -5,6 +5,7 @@ module Fron
5
5
  def initialize(options)
6
6
  @options = options
7
7
  @request = Request.new
8
+ @request.headers = {'Content-Type' => 'application/json'}
8
9
  end
9
10
 
10
11
  def all(&block)
@@ -39,8 +40,8 @@ module Fron
39
40
  end
40
41
 
41
42
  def transform(data)
42
- newdata = data.dup
43
- newdata.keys.each{ |key| newdata["#{@options[:resource]}[#{key}]"] = newdata.delete key}
43
+ newdata = {}
44
+ newdata[@options[:resource]] = data.dup
44
45
  newdata
45
46
  end
46
47
  end
@@ -3,9 +3,20 @@ module Fron
3
3
  attr_reader :model
4
4
 
5
5
  class << self
6
- attr_accessor :events
7
- attr_accessor :tagname
8
- attr_accessor :components
6
+ attr_reader :events
7
+ attr_reader :tagname
8
+ attr_reader :components
9
+ attr_reader :delegates
10
+
11
+ def inherited(subclass)
12
+ [:components,:events,:delegates].each do |type|
13
+ if (var = instance_variable_get("@#{type}"))
14
+ inst_var = subclass.instance_variable_get('@#{type}')
15
+ subclass.instance_variable_set("@#{type}", []) unless inst_var
16
+ subclass.send(type).concat var
17
+ end
18
+ end
19
+ end
9
20
 
10
21
  def tag(tag)
11
22
  @tagname = tag
@@ -22,14 +33,9 @@ module Fron
22
33
  @components << ( args << block )
23
34
  end
24
35
 
25
- def delegate(method,target)
26
- define_method(method) do
27
- instance_variable_get("@#{target}").send(method)
28
- end
29
-
30
- define_method(method+"=") do |value|
31
- instance_variable_get("@#{target}").send(method+"=",value)
32
- end
36
+ def delegate(*args)
37
+ @delegates ||= []
38
+ @delegates << args
33
39
  end
34
40
  end
35
41
 
@@ -39,20 +45,29 @@ module Fron
39
45
  @model = args[0]
40
46
  when 2
41
47
  tag, @model = args
48
+ when 3
49
+ tag, options, @model = args
42
50
  end
43
51
 
44
52
  super tag || self.class.tagname || self.class.name.split("::").last
45
53
 
46
54
  applyEvents
47
55
  createComponents
56
+ applyDelegates
57
+
58
+ if options
59
+ options.each do |method,value|
60
+ self.send(method+"=",value) if self.respond_to?(method+"=")
61
+ end
62
+ end
48
63
 
49
64
  return if !respond_to?(:render) || !@model
50
65
  @model.on 'change' do render end
51
66
  render
52
67
  end
53
68
 
54
- def component(name,comp,&block)
55
- c = comp.is_a?(Class) ? comp.new(@model) : Component.new(comp, @model)
69
+ def component(name,comp,options,&block)
70
+ c = comp.is_a?(Class) ? comp.new(nil,options,@model) : Component.new(comp, options, @model)
56
71
  c.instance_eval(&block) if block
57
72
  self << c
58
73
  self.instance_variable_set "@#{name}", c
@@ -63,7 +78,23 @@ module Fron
63
78
  def createComponents
64
79
  return unless self.class.components
65
80
  self.class.components.each do |args|
66
- component args[0], args[1], &args[2]
81
+ arguments = args.dup
82
+ block = arguments.last.is_a?(Proc) ? arguments.pop : nil
83
+ component *arguments, &block
84
+ end
85
+ end
86
+
87
+ def applyDelegates
88
+ return unless self.class.delegates
89
+ self.class.delegates.each do |args|
90
+ method, target = args
91
+ self.class.define_method(method) do
92
+ instance_variable_get("@#{target}").send(method)
93
+ end
94
+
95
+ self.class.define_method(method+"=") do |value|
96
+ instance_variable_get("@#{target}").send(method+"=",value)
97
+ end
67
98
  end
68
99
  end
69
100
 
@@ -6,6 +6,7 @@ module Fron
6
6
 
7
7
  def initialize(url, headers = {})
8
8
  @url = url
9
+ @headers = headers
9
10
  @request = `new XMLHttpRequest()`
10
11
  `#{@request}.addEventListener('readystatechange' , function(){#{handle_state_change}})`
11
12
  self
@@ -16,10 +17,12 @@ module Fron
16
17
  @callback = callback
17
18
  if method.upcase == "GET" && data
18
19
  `#{@request}.open(#{method},#{@url+"?"+data.to_query_string})`
20
+ setHeaders
19
21
  `#{@request}.send()`
20
22
  else
21
23
  `#{@request}.open(#{method},#{@url})`
22
- `#{@request}.send(#{data.to_form_data if data})`
24
+ setHeaders
25
+ `#{@request}.send(#{data.to_json if data})`
23
26
  end
24
27
  else
25
28
  raise "The request is already running!"
@@ -39,6 +42,11 @@ module Fron
39
42
  end
40
43
 
41
44
  private
45
+ def setHeaders
46
+ @headers.each_pair do |header,value|
47
+ `#{@request}.setRequestHeader(#{header},#{value})`
48
+ end
49
+ end
42
50
 
43
51
  def ready_state
44
52
  `#{@request}.readyState`
@@ -0,0 +1,43 @@
1
+ require 'fron/core'
2
+
3
+ class BaseComponent < Fron::Component
4
+ component :text, 'text'
5
+ on :click, :render
6
+ delegate :text, :text
7
+ end
8
+
9
+ class InheritedComponent < BaseComponent
10
+ component :title, 'title'
11
+ end
12
+
13
+ class SuperComponent < InheritedComponent
14
+ end
15
+
16
+ describe SuperComponent do
17
+ subject { described_class }
18
+
19
+ it "should inherit components in order" do
20
+ subject.components.should_not be nil
21
+ subject.components[0].should eq [:text,'text',nil]
22
+ subject.components[1].should eq [:title,'title',nil]
23
+ end
24
+ end
25
+
26
+ describe InheritedComponent do
27
+ subject { described_class }
28
+
29
+ it "should inherit components" do
30
+ subject.components.should_not be nil
31
+ subject.components[0].should eq [:text,'text',nil]
32
+ end
33
+
34
+ it "should inherit events" do
35
+ subject.events.should_not be nil
36
+ subject.events[0].should eq [:click, :render]
37
+ end
38
+
39
+ it "should inherit delegates" do
40
+ subject.delegates.should_not be nil
41
+ subject.delegates[0].should eq [:text,:text]
42
+ end
43
+ end
@@ -52,8 +52,8 @@ describe Fron::Component do
52
52
  describe '#delegate' do
53
53
  it 'should create delegated methods' do
54
54
  subject.delegate :text, :test
55
- subject.instance_methods.include?(:text).should be true
56
- subject.instance_methods.include?(:text=).should be true
55
+ subject.delegates.should_not be nil
56
+ subject.delegates[0].should eq [:text,:test]
57
57
  end
58
58
  end
59
59
  end
@@ -32,13 +32,13 @@ describe Fron::Request do
32
32
 
33
33
  it 'should call #to_query_string on data if it is a GET' do
34
34
  expect(data).to receive(:to_query_string)
35
- expect(data).not_to receive(:to_form_data)
35
+ expect(data).not_to receive(:to_json)
36
36
  subject.get data
37
37
  end
38
38
 
39
- it 'should call #to_form_data on data if it is a GET' do
39
+ it 'should call #to_json on data if it is a GET' do
40
40
  expect(data).not_to receive(:to_query_string)
41
- expect(data).to receive(:to_form_data)
41
+ expect(data).to receive(:to_json)
42
42
  subject.post data
43
43
  end
44
44
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusztav Szikszai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -91,6 +91,7 @@ files:
91
91
  - spec/core/adapter/local_spec.rb
92
92
  - spec/core/adapter/rails_spec.rb
93
93
  - spec/core/application_spec.rb
94
+ - spec/core/component_inheritance_spec.rb
94
95
  - spec/core/component_spec.rb
95
96
  - spec/core/configuration_spec.rb
96
97
  - spec/core/controlller_spec.rb