liquidscript 0.7.6 → 0.7.7

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: 4a3cff126272cbbc86d9729e2d9d8377288993d6
4
- data.tar.gz: e5ad5d6a4431246d57a236dcee19f592e3696cdc
3
+ metadata.gz: c31e6b59cd1bc0b5b1f61bb0514831a060b516c7
4
+ data.tar.gz: 1d85d0be0209027858d030cc9c8cda978e68b95d
5
5
  SHA512:
6
- metadata.gz: 3c6da54b9efa5bfa45aee059d772296269bbd5939314051abfd503e104dc920c48cc49c82ae7d9531c52090a1aa00bdea6280d79ceebc531aa51a030bba1bb0b
7
- data.tar.gz: 3a9a399c1785dd9c7c324182aa6dfbcb35b6d5224aec85360fa32ea0362641743aa9abb31e4db72630f126883a4ccef061cdab9629a498008ec22bdd56267b69
6
+ metadata.gz: 948fb308df1606bf6ce3d11bd6cda543dbdc321b9fa913ef0ad7e568850f3c7bb01e3a736cf055210ffab8cf1cc1069be2fefac015ca060591bc748a2ef5bcbe
7
+ data.tar.gz: 5d28502b4a07f1ddaf96840c017f6c88e2a27f944dcf17060f795768d82264b6aa8d2f6b0a94ba85a4c8d0efe89389da869ca3c659a760d12c7777accf9334bb
data/bin/lscript CHANGED
@@ -1,34 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "liquidscript"
4
+ require "liquidscript/cli"
4
5
 
5
- if ARGV.length < 1
6
- puts "Usage: #{File.basename($0)} infile [outfile]"
7
- exit 1
8
- end
9
-
10
- infile = ARGV.shift
11
- outfile = ARGV.shift || infile.gsub(/\.liq\Z/, ".js")
12
-
13
- if infile == '-'
14
- infile = $stdin
15
- else
16
- infile = File.open(infile, "r")
17
- end
18
-
19
- if outfile == '-'
20
- outfile = $stdout
21
- else
22
- outfile = File.open(outfile, "w")
23
- end
24
-
25
- begin
26
- out = Liquidscript.compile(infile.read)
27
- outfile.write(out)
28
- rescue StandardError => e
29
- $stderr.puts "ERROR: #{e.class}: #{e.message}"
30
- $stderr.puts e.backtrace[0..5].map { |s| "\t#{s.gsub(/^.*?\/lib\/liquidscript\//, "")}" }.join("\n")
31
- ensure
32
- [infile, outfile].each(&:close)
33
- end
34
-
6
+ Liquidscript::CLI.start(ARGV)
@@ -0,0 +1,53 @@
1
+ require "thor"
2
+
3
+ module Liquidscript
4
+ class CLI < Thor
5
+
6
+ desc "compile FILES", "Compile the given file to javascript."
7
+ long_desc <<-LONGDESC
8
+ It will compile each file listed to javascript. If the file
9
+ given is `-`, it will check the standard input for file data.
10
+ By default, this will output to standard output - if this isn't
11
+ what you want, use the -o option to change it.
12
+
13
+ Note that if you pass in multiple files,
14
+ the last file's compiled output will be in this file (i.e.
15
+ multiple output files are not yet supported). If you want the
16
+ output to go to standard output, use `-` as the value.
17
+
18
+ > $ lscript compile test.liq
19
+ LONGDESC
20
+ option :out, :aliases => :o, :desc => "The output file."
21
+ def compile(*files)
22
+ files.each do |file|
23
+ puts "COMPILING: #{file}"
24
+ perform_compiliation(file,
25
+ options[:out] || file.gsub('.liq', '.js'))
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def perform_compiliation(file, out)
32
+ infile = if file == '-'
33
+ $stdin
34
+ else
35
+ File.open(file, "r")
36
+ end
37
+
38
+ outfile = if out == '-'
39
+ $stdout
40
+ else
41
+ File.open(out, "w")
42
+ end
43
+
44
+ out = Liquidscript.compile(infile.read)
45
+ outfile.write(out)
46
+ rescue StandardError => e
47
+ $stderr.puts "ERROR: #{e.class}: #{e.message}"
48
+ $stderr.puts e.backtrace[0..5].map { |s| "\t#{s.gsub(/^.*?\/lib\/liquidscript\//, "")}" }.join("\n")
49
+ ensure
50
+ ([infile, outfile] - [$stdin, $stdout]).each(&:close)
51
+ end
52
+ end
53
+ end
@@ -109,7 +109,7 @@ module Liquidscript
109
109
  elsif peek?(:rparen)
110
110
  components << i
111
111
  else
112
- components << compile_identifier(i)
112
+ components << value_expect(compile_identifier(i))
113
113
  end
114
114
  end
115
115
 
@@ -39,27 +39,6 @@ module Liquidscript
39
39
  call = code :call, subject, *arguments
40
40
  call
41
41
  end
42
-
43
- protected
44
-
45
- def value_expect(v, &default)
46
- out = expect \
47
- :lparen => action { compile_call(v) },
48
- :equal => action { compile_assignment(v) },
49
- :prop => action { compile_property(v) },
50
- :lbrack => action { compile_access(v) },
51
- [:binop,
52
- :minus,
53
- :plus] => action { compile_binop(v) },
54
- :unop => action { |o| code :op, v, o },
55
- :_ => default || action { v }
56
-
57
- if out != v
58
- value_expect(out)
59
- else
60
- out
61
- end
62
- end
63
42
  end
64
43
  end
65
44
  end
@@ -14,6 +14,25 @@ module Liquidscript
14
14
  def code(type, *args)
15
15
  Liquidscript::ICR::Code.new type, *args
16
16
  end
17
+
18
+ def value_expect(v, &default)
19
+ out = expect \
20
+ :lparen => action { compile_call(v) },
21
+ :equal => action { compile_assignment(v) },
22
+ :prop => action { compile_property(v) },
23
+ :lbrack => action { compile_access(v) },
24
+ [:binop,
25
+ :minus,
26
+ :plus] => action { compile_binop(v) },
27
+ :unop => action { |o| code :op, v, o },
28
+ :_ => default || action { v }
29
+
30
+ if out != v
31
+ value_expect(out)
32
+ else
33
+ out
34
+ end
35
+ end
17
36
  end
18
37
  end
19
38
  end
@@ -31,18 +31,20 @@ module Liquidscript
31
31
  private
32
32
 
33
33
  def build_error_message
34
- str = "Expected one of %{expected}, got %{type}"
34
+ str = "Expected one of %{expected}, got %{type}(%{value})"
35
35
  hash = {
36
36
  :expected => @expected.map { |e| e.to_s.upcase }.join(', ')
37
37
  }
38
38
 
39
39
  if @got.is_a? Symbol
40
- hash[:type] = @got.to_s.upcase
40
+ hash[:type] = @got.to_s.upcase
41
+ hash[:value] = ""
41
42
  else
42
43
  str << " (line %{line}, column %{column})"
43
44
  hash.merge! :type => @got.type.to_s.upcase,
44
45
  :line => @got.line,
45
- :column => @got.column
46
+ :column => @got.column,
47
+ :value => @got.value
46
48
  end
47
49
 
48
50
  sprintf(str, hash)
@@ -20,7 +20,7 @@ module Liquidscript
20
20
  end
21
21
 
22
22
  def to_a
23
- [@type, @value]
23
+ [@type, @value, @line, @column]
24
24
  end
25
25
 
26
26
  def type?(type)
@@ -1,5 +1,5 @@
1
1
  module Liquidscript
2
2
 
3
3
  # The current version of liquidscript.
4
- VERSION = "0.7.6".freeze
4
+ VERSION = "0.7.7".freeze
5
5
  end
data/liquidscript.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "command-runner"
26
26
 
27
27
  spec.add_dependency "hashie", "~> 2.0"
28
+ spec.add_dependency "thor"
28
29
  end
@@ -21,7 +21,7 @@
21
21
  nativeEvery = ArrayProto.every;
22
22
  nativeSome = ArrayProto.some;
23
23
  nativeIndexOf = ArrayProto.indexOf;
24
- nativeLastIndexOf = arrayProto.lastIndexOf;
24
+ nativeLastIndexOf = ArrayProto.lastIndexOf;
25
25
  nativeIsArray = Array.isArray;
26
26
  nativeKeys = Object.keys;
27
27
  nativeBind = FuncProto.bind;
@@ -25,7 +25,7 @@
25
25
  nativeEvery = ArrayProto.every
26
26
  nativeSome = ArrayProto.some
27
27
  nativeIndexOf = ArrayProto.indexOf
28
- nativeLastIndexOf = arrayProto.lastIndexOf
28
+ nativeLastIndexOf = ArrayProto.lastIndexOf
29
29
  nativeIsArray = Array.isArray
30
30
  nativeKeys = Object.keys
31
31
  nativeBind = FuncProto.bind
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquidscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Rodi
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: thor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: A javascript-based language that compiles to javascript.
98
112
  email:
99
113
  - redjazz96@gmail.com
@@ -114,6 +128,7 @@ files:
114
128
  - bin/lscript
115
129
  - lib/liquidscript.rb
116
130
  - lib/liquidscript/buffer.rb
131
+ - lib/liquidscript/cli.rb
117
132
  - lib/liquidscript/compiler.rb
118
133
  - lib/liquidscript/compiler/base.rb
119
134
  - lib/liquidscript/compiler/base/action.rb