liquidscript 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de4a6e4e30f2ba12fbd6acd8e61710c6f3d730a0
4
- data.tar.gz: 28f06c96c546b9acce2cb1a2454dddf36063734b
3
+ metadata.gz: 37763a0403a2c5970ed9af12838e06cd201098e7
4
+ data.tar.gz: 2f685296ac6651a7caf0cb4d632363ea60e31adb
5
5
  SHA512:
6
- metadata.gz: f9b1a7c09cdaa877e8f87b3ba3df38c43a3cc159841ded598c6f414e9b201b496674e30615580341ab58bea73f16a86454e91c8608d729006938def214b9d2ea
7
- data.tar.gz: 0583b8399b2af491b2d9c44fd05ac7dfe824f1e5da99e3d6a5ddf1f983591283c71e520883803da4b0e9e90888aa714ab08a568b41a6152b2843f15b2ea48881
6
+ metadata.gz: 8ff68b0b6dd56458726509b4e1a9660ea25ce7324d2bee3fee6b51f8a0d9dbe456085c6ef2e588c4cb56185c062160a3ff0e104075d335d2263e19c308aa8e54
7
+ data.tar.gz: e9655c95acdfb55f8b4da23ddbb66daffb3bf0ac9fd91633e3c62a27b896c7411340de41ea6c6de876d7762bd1a3471bdc13025143f9f36c82112d5f5dc52a21
@@ -29,6 +29,7 @@ module Liquidscript
29
29
  @top = Liquidscript::ICR::Set.new
30
30
  @top.context = Liquidscript::ICR::Context.new
31
31
  @set = [@top]
32
+ @classes = {}
32
33
  super
33
34
  end
34
35
 
@@ -50,10 +51,14 @@ module Liquidscript
50
51
  return unless @scanner.metadata[:directives]
51
52
 
52
53
  @scanner.metadata[:directives].each do |meta|
53
- case meta[:command]
54
+ case meta[:command].downcase
54
55
  when "allow"
55
56
  variables = meta[:args].split(' ')
56
57
  variables.each { |v| top.context.allow(v.intern) }
58
+ when "cvar"
59
+ variables = meta[:args].split(' ')
60
+ variables.each { |v| top.context.set(v.intern,
61
+ :class => true).parameter! }
57
62
  else
58
63
  raise UnknownDirectiveError.new(meta[:command])
59
64
  end
@@ -12,12 +12,24 @@ module Liquidscript
12
12
  if peek?(:colon)
13
13
  shift :colon
14
14
  inherit = shift :identifier
15
- ref inherit
15
+ inherit = ref(inherit)
16
16
  end
17
17
 
18
+ new_context = Liquidscript::ICR::Context.new
19
+ new_context.parents << top.context
20
+ new_context.class!
21
+ @classes[name.value] = new_context
22
+
23
+ new_context.parents << @classes[inherit.name.to_s] if inherit
24
+
25
+ top.context = new_context
18
26
  body = _compile_class_body(false)
19
27
 
20
- code :class, name, inherit, body
28
+ new_context.undefined.each do |f|
29
+ raise f[1]
30
+ end
31
+
32
+ code :class, name, inherit, body, top.contexts.pop
21
33
  end
22
34
 
23
35
  def compile_module
@@ -67,6 +79,10 @@ module Liquidscript
67
79
  item = compile_property(item) if item.type == :identifier &&
68
80
  peek?(:prop) && !mod
69
81
 
82
+ if item.type == :identifier && !mod
83
+ set(item)
84
+ end
85
+
70
86
  shift :colon
71
87
  item
72
88
  end
@@ -11,9 +11,7 @@ module Liquidscript
11
11
  end
12
12
 
13
13
  # Just in case there is a property named 'class' or 'module'
14
- v = expect [:identifier, :class, :module] => property
15
-
16
- v
14
+ expect [:identifier, :class, :module] => property
17
15
  end
18
16
 
19
17
  def compile_access(body)
@@ -21,9 +19,7 @@ module Liquidscript
21
19
  key = compile_vexpression
22
20
  shift :rbrack
23
21
 
24
- v = code :access, body, key
25
-
26
- v
22
+ code :access, body, key
27
23
  end
28
24
 
29
25
  def compile_call(subject)
@@ -36,8 +32,7 @@ module Liquidscript
36
32
  arguments = collect_compiles :expression, :rparen,
37
33
  :comma => action.shift
38
34
 
39
- call = code :call, subject, *arguments
40
- call
35
+ code :call, subject, *arguments
41
36
  end
42
37
 
43
38
 
@@ -60,10 +55,10 @@ module Liquidscript
60
55
 
61
56
  private
62
57
 
63
- def _build_set(parameters)
58
+ def _build_set(parameters = [])
64
59
  expressions = Liquidscript::ICR::Set.new
65
60
  expressions.context = Liquidscript::ICR::Context.new
66
- expressions.context.parent = top.context
61
+ expressions.context.parents << top.context
67
62
  expressions[:arguments] = parameters
68
63
  @set << expressions
69
64
 
@@ -20,7 +20,7 @@ module Liquidscript
20
20
  shift :lbrace
21
21
  collect_compiles(:expression, :rbrace)
22
22
  else
23
- compile_expression
23
+ [compile_expression]
24
24
  end
25
25
  end
26
26
 
@@ -30,6 +30,7 @@ module Liquidscript
30
30
  :equal => action { compile_assignment(v) },
31
31
  :prop => action { compile_property(v) },
32
32
  :lbrack => action { compile_access(v) },
33
+ :range => action { |_| compile_range(v) },
33
34
  [:binop,
34
35
  :minus,
35
36
  :plus] => action { compile_binop(v) },
@@ -4,15 +4,16 @@ module Liquidscript
4
4
  module Literals
5
5
 
6
6
  def compile_number
7
- #code :number, pop.value
8
7
  n = shift(:number)
9
8
 
10
- if peek?(:prop)
11
- shift(:prop)
12
- shift(:prop)
13
- n2 = shift(:number)
9
+ if peek?(:range)
10
+ shift(:range)
14
11
 
15
- code :range, n.value, n2.value
12
+ if peek?(:number)
13
+ code :nrange, n.value, shift(:number).value
14
+ else
15
+ compile_range(code(:number, n.value))
16
+ end
16
17
  else
17
18
  code :number, n.value
18
19
  end
@@ -22,6 +23,10 @@ module Liquidscript
22
23
  code :action, shift(:action)
23
24
  end
24
25
 
26
+ def compile_range(subject)
27
+ code :range, subject, compile_vexpression
28
+ end
29
+
25
30
  def compile_while
26
31
  shift :while
27
32
  shift :lparen
@@ -46,6 +51,7 @@ module Liquidscript
46
51
  end
47
52
  end
48
53
 
54
+
49
55
  def _compile_for_in(ident)
50
56
  content = shift :identifier
51
57
  unless content.value == "in"
@@ -55,9 +61,9 @@ module Liquidscript
55
61
  obj = shift :identifier
56
62
  shift :rparen
57
63
 
58
- set ident
64
+ v = set(ident)
59
65
  body = _compile_block
60
- code :for_in, ident, ref(obj), body
66
+ code :for_in, v, ref(obj), body
61
67
  end
62
68
 
63
69
  def _compile_for_seg(first)
@@ -73,9 +79,11 @@ module Liquidscript
73
79
  end
74
80
 
75
81
  def compile_identifier(identifier)
76
- ref(identifier) unless peek?(:equal)
77
-
78
- identifier
82
+ if peek?(:equal)
83
+ identifier
84
+ else
85
+ ref(identifier)
86
+ end
79
87
  end
80
88
 
81
89
  def compile_regex
@@ -9,18 +9,33 @@ module Liquidscript
9
9
  "!=" => "!==",
10
10
  "!==" => "!=",
11
11
  "or" => "||",
12
- "and" => "&&"
12
+ "and" => "&&",
13
+ "is" => "===",
14
+ "isnt"=> "!=="
13
15
  }.freeze
14
16
 
15
17
  def generate_number(code)
16
18
  "#{code.first}"
17
19
  end
18
20
 
19
- def generate_range(code)
21
+ def generate_nrange(code)
20
22
  start = code[1]
21
23
  ending = code[2]
22
24
 
23
- (start..ending).to_a.join(', ')
25
+ buffer << "[" << (start..ending).to_a.join(', ') << "]"
26
+ end
27
+
28
+ def generate_range(code)
29
+ out = buffer
30
+ out << "(function(a, b) {\n" <<
31
+ indent! << "var out, i;\n" <<
32
+ indent << "for(i = a; i <= b; i++) {\n" <<
33
+ indent! << "out.push(i);\n" <<
34
+ unindent! << "};\n" <<
35
+ indent << "return out;\n" <<
36
+ unindent! << "})(" << replace(code[1]) << ", " <<
37
+ replace(code[2]) << ")"
38
+ out
24
39
  end
25
40
 
26
41
  def generate_action(code)
@@ -48,11 +63,11 @@ module Liquidscript
48
63
 
49
64
  def generate_for_in(code)
50
65
  loop_body = buffer
51
- loop_body << "for(#{code[1].value} in #{code[2].name}) {\n"
66
+ loop_body << "for(#{code[1].to_s} in #{code[2].name}) {\n"
52
67
  indent!
53
68
  insert_into(code[3], loop_body)
54
69
  unindent!
55
- loop_body << indent_level << "}"
70
+ loop_body << indent << "}"
56
71
  end
57
72
 
58
73
  def generate_for_seg(code)
@@ -132,8 +147,12 @@ module Liquidscript
132
147
  "#{replace(code[2])} #{op} #{replace(code[3])}"
133
148
  end
134
149
 
135
- def generate_identifier(code)
136
- code.value
150
+ #def generate_identifier(code)
151
+ # code.value
152
+ #end
153
+
154
+ def generate_variable(code)
155
+ code.to_s
137
156
  end
138
157
 
139
158
  def generate_keyword(code)
@@ -26,7 +26,9 @@ module Liquidscript
26
26
 
27
27
  case code[1].type
28
28
  when :variable
29
- prop << code[1].name
29
+ prop << code[1].to_s
30
+ when :identifier
31
+ prop << code[1].value
30
32
  else
31
33
  prop << replace(code[1])
32
34
  end
@@ -38,7 +40,7 @@ module Liquidscript
38
40
  _context :name => code[1].value,
39
41
  :inherit => code[2],
40
42
  :parts => code[3],
41
- :inheritance => "%{name}.prototype.__proto__ = %{inherit};\n",
43
+ :inheritance => "%{name}.prototype.__proto__ = %{inherit}.prototype;\n",
42
44
  :identifier => "%{name}.prototype.%{value} = %{replace};\n",
43
45
  :istring => "%{name}.prototype[\"%{value}\"] = %{replace};\n",
44
46
  :property => "%{name}.%{value} = %{replace};\n",
@@ -83,7 +85,7 @@ module Liquidscript
83
85
  end
84
86
 
85
87
  if last_module
86
- body << "#{last_module}.#{name} = #{name};\n"
88
+ body << indent << "#{last_module}.#{name} = #{name};\n"
87
89
  end
88
90
  end
89
91
 
@@ -100,13 +102,13 @@ module Liquidscript
100
102
  opts[:value] = k.value
101
103
  opts[:replace] = replace(v)
102
104
 
103
- body << sprintf(options[k.type], opts)
105
+ body << indent << sprintf(options[k.type], opts)
104
106
  when :property
105
107
  opts[:value] = k[2]
106
108
  opts[:replace] = replace(v)
107
109
 
108
110
  if k[1].value == "this" && options[k.type]
109
- body << sprintf(options[k.type], opts)
111
+ body << indent << sprintf(options[k.type], opts)
110
112
  else
111
113
  raise InvalidCodeError.new(k[1].value)
112
114
  end
@@ -118,11 +120,11 @@ module Liquidscript
118
120
  end
119
121
 
120
122
  def _build_header(body, options, opts)
121
- body << sprintf(options[:head], opts)
123
+ body << indent << sprintf(options[:head], opts)
122
124
 
123
125
  if options[:inherit]
124
- opts[:inherit] = options[:inherit].value
125
- body << sprintf(options[:inheritance], opts)
126
+ opts[:inherit] = options[:inherit].to_s
127
+ body << indent << sprintf(options[:inheritance], opts)
126
128
  end
127
129
  end
128
130
 
@@ -13,15 +13,21 @@ module Liquidscript
13
13
 
14
14
  # The variables that are allowed to be used as a global scope,
15
15
  # i.e. used in a `get` context without a previous `set`.
16
- DEFAULT_ALLOWED_VARIABLES = [
17
- :window, :global, :exports, :console, :this, :arguments,
18
- :require
19
- ]
16
+ DEFAULT_ALLOWED_VARIABLES = %w(
17
+ window global exports console this arguments
18
+ Infinity NaN undefined eval isFinite isNaN parseFloat
19
+ parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent
20
+ Object Function Boolean Error EvalError InternalError RangeError
21
+ ReferenceError SyntaxError TypeError URIError Number Math
22
+ Date String RegExp Array Float32Array Float64Array Int16Array
23
+ Int32Array Int8Array Uint16Array Uint32Array Uint8Array
24
+ Uint8ClampedArray ArrayBuffer DataView JSON Intl
25
+ ).map(&:intern)
20
26
 
21
27
  # The parent of the current context.
22
28
  #
23
29
  # @return [Parent]
24
- attr_accessor :parent
30
+ attr_accessor :parents
25
31
 
26
32
  # The variables that are a part of this context.
27
33
  #
@@ -35,12 +41,16 @@ module Liquidscript
35
41
  # @return [Array<Symbol>]
36
42
  attr_reader :allowed_variables
37
43
 
44
+ attr_reader :undefined
45
+
38
46
  include Representable
39
47
 
40
48
  # Initializes the context.
41
49
  def initialize
50
+ @undefined = []
42
51
  @variables = {}
43
52
  @allowed_variables = [DEFAULT_ALLOWED_VARIABLES].flatten
53
+ @parents = []
44
54
  end
45
55
 
46
56
  # Returns a variable reference. If checks the local variables
@@ -53,17 +63,9 @@ module Liquidscript
53
63
  # @param type [Symbol] the type of use. Should be `:get` or
54
64
  # `:set`.
55
65
  # @return [Variable]
56
- def variable(name, type)
57
- @variables.fetch(name) do
58
- if type == :set
59
- @variables[name] = Variable.new(self, name)
60
- elsif allowed_variables.include?(name)
61
- Variable.new(self, name)
62
- elsif type == :get && parent
63
- parent.get(name)
64
- else
65
- raise InvalidReferenceError.new(name)
66
- end
66
+ def variable(name, type, options = {})
67
+ if [:get, :set].include?(type)
68
+ send(type, name, options = {})
67
69
  end
68
70
  end
69
71
 
@@ -86,21 +88,73 @@ module Liquidscript
86
88
  # (see #variable).
87
89
  #
88
90
  # Passes `:get` as type.
89
- def get(name)
90
- variable(name, :get)
91
+ def get(name, options = {})
92
+ @variables.fetch(name) do
93
+ case true
94
+ when allowed_variables.include?(name)
95
+ Variable.new(self, name)
96
+ when parents.any?
97
+ get_parent(name)
98
+ when @class
99
+ add_undefined(name)
100
+ else
101
+ raise InvalidReferenceError.new(name)
102
+ end
103
+ end
91
104
  end
92
105
 
93
106
  # (see #variable).
94
107
  #
95
108
  # Passes `:set` as type.
96
- def set(name)
97
- variable(name, :set)
109
+ def set(name, options = {})
110
+ @variables.fetch(name) do
111
+ @undefined.reject! { |(n, _)| n == name }
112
+ @variables[name] =
113
+ Variable.new(self, name,
114
+ {:class => @class}.merge(options))
115
+ end
116
+ end
117
+
118
+ def class!
119
+ @class = true
120
+ self
98
121
  end
99
122
 
100
123
  def to_a
101
124
  @variables.keys
102
125
  end
103
126
 
127
+ private
128
+
129
+ def get_parent(name)
130
+ results = parents.map do |parent|
131
+ begin
132
+ parent.get(name)
133
+ rescue InvalidReferenceError => e
134
+ e
135
+ end
136
+ end.compact
137
+
138
+ where = results.detect { |i|
139
+ not i.is_a?(InvalidReferenceError) }
140
+
141
+ if where
142
+ where
143
+ else
144
+ error = results.first
145
+ if @class
146
+ add_undefined(name, error)
147
+ else
148
+ raise error
149
+ end
150
+ end
151
+ end
152
+
153
+ def add_undefined(name, e = InvalidReferenceError.new(name))
154
+ @undefined << [name, e]
155
+ Variable.new(self, name, :class => true)
156
+ end
104
157
  end
158
+
105
159
  end
106
160
  end
@@ -18,19 +18,22 @@ module Liquidscript
18
18
  def initialize
19
19
  @metadata = {}
20
20
  @code = []
21
+ @contexts = []
21
22
  @action = :exec
22
23
  end
23
24
 
24
25
  #
25
26
  def context
26
- @metadata.fetch(:context) do
27
- @metadata.fetch(:parent).context
28
- end
27
+ contexts.last || @metadata.fetch(:parent).context
28
+ end
29
+
30
+ def contexts
31
+ @contexts
29
32
  end
30
33
 
31
34
  #
32
35
  def context=(new_context)
33
- @metadata[:context] = new_context
36
+ contexts << new_context
34
37
  end
35
38
 
36
39
  # Adds a code to the code list. This is just a
@@ -89,11 +92,11 @@ module Liquidscript
89
92
  #
90
93
  # @return [Array]
91
94
  def to_a
92
- [
93
- @action,
94
- *@metadata.to_a.map { |(m, i)| [:"_#{m}", i] },
95
- *@code
96
- ]
95
+ part = [@action]
96
+ part << [:_context, context] if contexts.any?
97
+ part.concat(@metadata.to_a.map { |(m, i)| [:"_#{m}", i] })
98
+ part.concat(@code)
99
+ part
97
100
  end
98
101
 
99
102
  # Outputs the codes in this set.
@@ -27,10 +27,11 @@ module Liquidscript
27
27
 
28
28
  include Representable
29
29
 
30
- def initialize(context, name)
30
+ def initialize(context, name, options = {})
31
31
  @context = context
32
- @name = name
33
- @value = nil
32
+ @name = name
33
+ @options = options
34
+ @value = nil
34
35
  end
35
36
 
36
37
  # Make this class compatible with the #type based system.
@@ -57,6 +58,14 @@ module Liquidscript
57
58
  @parameter
58
59
  end
59
60
 
61
+ def to_s
62
+ if @options[:class]
63
+ "this.#{@name}"
64
+ else
65
+ @name
66
+ end
67
+ end
68
+
60
69
  # Turns the variable into an array.
61
70
  #
62
71
  # @return [Array<(Symbol, Symbol)>]
@@ -57,6 +57,7 @@ module Liquidscript
57
57
  & |
58
58
  instanceof
59
59
  or and
60
+ is isnt
60
61
  )
61
62
 
62
63
  set :keywords, %w(
@@ -124,6 +125,7 @@ module Liquidscript
124
125
  on(")") { emit :rparen }
125
126
  on("]") { emit :rbrack }
126
127
  on(":") { emit :colon }
128
+ on("..") { emit :range }
127
129
  on(".") { emit :prop }
128
130
  on(",") { emit :comma }
129
131
  on("-") { emit :minus }
@@ -1,5 +1,5 @@
1
1
  module Liquidscript
2
2
 
3
3
  # The current version of liquidscript.
4
- VERSION = "0.9.2".freeze
4
+ VERSION = "0.10.0".freeze
5
5
  end
@@ -30,9 +30,11 @@ compiled:
30
30
  - []
31
31
  - - :_arguments
32
32
  - []
33
+ - - :test
33
34
  - - :class
34
35
  - - :identifier
35
36
  - AnotherClass
36
- - - :identifier
37
- - SomeClass
37
+ - - :_variable
38
+ - :SomeClass
39
+ - []
38
40
  - []
@@ -1,24 +1,44 @@
1
1
  data: |
2
+ #! allow require
3
+
4
+ assert = require('assert)
5
+
2
6
  module Something {
3
7
  class Test {
4
- wee: -> {
5
- console.log(2)
6
- }
8
+
9
+ some-number: 2
7
10
 
8
11
  initialize: -> {
9
12
  "this should be init"
13
+ wee()
14
+ }
15
+
16
+ wee: -> {
17
+ console.log(some-number)
10
18
  }
11
19
 
12
20
  this.test: -> {
13
21
  "class method!"
14
22
  }
15
23
  }
24
+
25
+
26
+ class AnotherTest : Test {
27
+ #! cvar another-thing
28
+ thing: -> {
29
+ console.log("[another test]", some-number, another-thing)
30
+ }
31
+ }
16
32
  }
17
33
 
34
+ assert.equal(new AnotherTest().some-number, 2)
35
+
18
36
  module.exports = Something
19
37
 
20
38
  compiled: |
21
- var Something, Test;
39
+ var assert, Something, Test, AnotherTest;
40
+
41
+ assert = require('assert');
22
42
 
23
43
  Something = Something || {};
24
44
  Test = Test || function Test() {
@@ -27,17 +47,36 @@ compiled: |
27
47
  }
28
48
  };
29
49
 
30
- Test.prototype.wee = function() {
31
- console.log(2);
32
- };
50
+ Test.prototype.someNumber = 2;
33
51
 
34
52
  Test.prototype.initialize = function() {
35
53
  "this should be init";
54
+ this.wee();
55
+ };
56
+
57
+ Test.prototype.wee = function() {
58
+ console.log(this.someNumber);
36
59
  };
37
60
 
38
61
  Test.test = function() {
39
62
  "class method!";
40
63
  };
41
- Something.Test = Test;;
64
+ Something.Test = Test;
65
+
66
+ AnotherTest = AnotherTest || function AnotherTest() {
67
+ if(this.initialize) {
68
+ this.initialize.apply(this, arguments);
69
+ }
70
+ };
71
+
72
+ AnotherTest.prototype.__proto__ = Test.prototype;
73
+
74
+ AnotherTest.prototype.thing = function() {
75
+ console.log("[another test]", this.someNumber, this.anotherThing);
76
+ };
77
+
78
+ Something.AnotherTest = AnotherTest;;
79
+
80
+ assert.equal(new AnotherTest().someNumber, 2);
42
81
 
43
82
  module.exports = Something;
@@ -1,4 +1,5 @@
1
1
  data: |
2
+ #! allow require
2
3
  Test = require("assert")
3
4
 
4
5
  module SomeModule {
@@ -2,10 +2,21 @@ data: |
2
2
  console = 2
3
3
  some_function = ()-> {
4
4
  console = 3
5
+ test = 0..console
5
6
  }
6
7
 
7
8
  compiled: |
8
9
  var some_function;
9
10
  console = 2;
10
11
 
11
- some_function = function() { console = 3; };
12
+ some_function = function() {
13
+ var test;
14
+ console = 3;
15
+ test = (function(a, b) {
16
+ var out, i;
17
+ for(i = a; i <= b; i++) {
18
+ out.push(i);
19
+ };
20
+ return out;
21
+ })(0, console);
22
+ };
@@ -1,7 +1,7 @@
1
1
  data: |
2
2
  object = { hello: "world" }
3
3
  test = [1, 2]
4
- range = [0x1..0x9]
4
+ range = 0x1..0x9
5
5
  regex = r/^\/test/
6
6
  block = ///
7
7
  ^test # comment
@@ -19,21 +19,21 @@ compiled:
19
19
  - - :_arguments
20
20
  - []
21
21
  - - :for_in
22
- - - :identifier
23
- - v
22
+ - - :_variable
23
+ - :v
24
24
  - - :_variable
25
25
  - :console
26
26
  - - - :call
27
27
  - - :property
28
- - - :identifier
29
- - console
28
+ - - :_variable
29
+ - :console
30
30
  - log
31
- - - :identifier
32
- - v
31
+ - - :_variable
32
+ - :v
33
33
  - - :call
34
34
  - - :property
35
- - - :identifier
36
- - console
35
+ - - :_variable
36
+ - :console
37
37
  - log
38
38
  - - :istring
39
39
  - hello world
@@ -19,15 +19,15 @@ compiled:
19
19
  - 1
20
20
  - - :call
21
21
  - - :property
22
- - - :identifier
23
- - console
22
+ - - :_variable
23
+ - :console
24
24
  - log
25
25
  - - :href
26
26
  - *heredoc
27
27
  - - :interop
28
28
  - - :istring_begin
29
29
  - "hello "
30
- - - :identifier
31
- - console
30
+ - - :_variable
31
+ - :console
32
32
  - - :istring
33
33
  - ""
@@ -24,7 +24,7 @@ describe ICR::Context do
24
24
 
25
25
  subject do
26
26
  context = ICR::Context.new
27
- context.parent = parent
27
+ context.parents << parent
28
28
  context
29
29
  end
30
30
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquidscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Rodi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-13 00:00:00.000000000 Z
11
+ date: 2014-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler